如何判断一个点在多义线的左侧
请给个思路 <p>Point3d p1 : 需要测试的点 </p><p>Polyline pline : 需要测试的多义线</p><p>1,Point3d p2 = pline.GetClosetPointTo(p1,false);</p><p>2,Vector3d vec1 = p1-p2;</p><p>3,Vector3d vec2 = pline.GetFirstDeriative(p2);</p><p>4,Vector3d vec3 = vec1.DotProduct(vec2);</p><p>5, if vec3.X < 0 then left else Right</p><p>OK?</p> <p>//判断点与有向线段的关系</p><p>怎么判断坐标为(xp,yp)的点P是在直线的哪一侧呢?设直线是由其上两点(x1,y1)<br/>(x2,y2)确定的,直线方向是由(x1,y1)到(x2,y2)的方向。这时若直线方程记为<br/>Ax+By+C=0 则有: A=y2-y1; B=x1-x2; C=x2*y1-x1*y2; 这时可以计算D:<br/>D=A*xp+B*yp+C 若D<0,则点(xp,yp)在直线的左侧;若D>0,则点在直线的右侧;<br/>D=0点在直线上。</p> <p>比较斜率</p> R=atan((YB-YA)/(XB-XA),R就是AB的方位角,D=(XA-XC)*sin(R)+(YC-YA)*cos(R),D<0时C点在AB直线的左边。E=(XC-XA)*cos(R)+(YC-YA)*sin(R),E等于C点在AB上的投影到A点的距离。这是一个坐标换算方法,测量人员都会用。
页:
[1]