求:点到直接距离,三个坐标A(X,Y),B(X',Y'),C(X'',Y'')求A到BC直接距离
求:点到直接距离,三个坐标A(X,Y),B(X',Y'),C(X'',Y'')求A到BC直接距离,大师详细指点!勿扰!!
[解决办法]
直线方程一般式:
a *x +b*y +c=0;
a* x' +b* y' +c=0;
a* x''+b* y'' +c=0;
点到直线距离公式
d = abs(a *x +b*y +c) / sqrt(a*a +b*b);
[解决办法]
其实这是个数学题啊
三个点的坐标,组成一个三角形,而两点距离,可能通过坐标算出来,推一下。编程的话 这点逻辑还是要有的
[解决办法]
C.x=0;C.y=-3;
//struct point p(0,0);
//struct point B(1,0);
//struct point C(0,-1);
printf("%f",distanceBetweenA_toBCline(&A,&B,&C));
return 0;
}
[解决办法]
//这个问题也可用向量的叉积做
//
//S = abs( crossMul(vect(p1,p2),vect(p1,p3)))
//d =S/2 / length( vect(p1,p3))
//1)向量,线段长度.
function seglength (x1,y1,x2,y2:double) :double;
begin
seglength := sqrt((x2 - x1)*(x2 - x1) +(y2 - y1)* (y2 - y1));
end;
////////////////////////////////////////////////////
// 用向量的叉积,求点到线段的距离,不考虑线段两个端点重合
//
function distance_pl(x1,y1,x2,y2,x3,y3:double):double;
var dx2,dx3,dy2,dy3,S:double;
begin
dx2 := x2 - x1;dy2 := y2 - y1; //向量p1p2
dx3 := x3 - x1;dy3 := y3 - y1; //向量p1p3
S := abs(dx2 * dy3 - dx3 *dy2) //向量的叉积(crossMul),求向量平行四边形面积,
//是向量三角形面积的2倍。
distance_pl := S / seglength(x2,y2,x3,y3)/2; //三角形面积公式,求高,点到线段的距离。
end;