题目描述:
直线外一点到这条直线的垂线段的长度,叫做点到直线的距离。
已知三个不重叠的点点a(xa,ya)、点b(xb,yb)和点c(xc,yc),求点c到经过点a和点b的直线的距离,保留3位小数。
输入格式:
输入共3行,每行两个以空格分隔的两个实数,分别表示三个点a,b,c的坐标。
输出格式:
输出一个实数,表示点c到直线ab的距离,保留3位小数。
样例输入:
3.40 -0.13 -2.08 30.89 7.50 -30.20
样例输出:
1.194
提示:
公式描述:公式中的直线方程为Ax+By+C=0,点P的坐标为(x0,y0)。
时间限制: 1000ms
空间限制: 256MB
这真不知道是几年级的数学了,反正挺高深。
代码实现:
#include<bits/stdc++.h>
using namespace std;
double x,y,x2,y2,x3,y3,A,B,C;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>x>>y>>x2>>y2>>x3>>y3;
if(x==x2){
A=1.0;
B=0.0;
C=-x;
}
else{
A=-(y2-y);
B=x2-x;
C=-(A*x+B*y);
}
printf("%.3lf",fabs(x3*A+y3*B+C)/sqrt(A*A+B*B));
return 0;
}