wz0406 发表于 2007-9-4 18:37:00

如何判断一个点在多义线的左侧

请给个思路

sieben 发表于 2007-9-13 22:22:00

<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 &lt; 0 then left else Right</p><p>OK?</p>

lzhanddsh 发表于 2008-7-3 15:00:00

<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;&nbsp;&nbsp; 这时可以计算D:<br/>D=A*xp+B*yp+C&nbsp;&nbsp; 若D&lt;0,则点(xp,yp)在直线的左侧;若D&gt;0,则点在直线的右侧;<br/>D=0点在直线上。</p>

liub1979 发表于 2008-9-1 19:16:00

<p>比较斜率</p>

poly168 发表于 2008-9-20 13:00:00

R=atan((YB-YA)/(XB-XA),R就是AB的方位角,D=(XA-XC)*sin(R)+(YC-YA)*cos(R),D&lt;0时C点在AB直线的左边。E=(XC-XA)*cos(R)+(YC-YA)*sin(R),E等于C点在AB上的投影到A点的距离。这是一个坐标换算方法,测量人员都会用。
页: [1]
查看完整版本: 如何判断一个点在多义线的左侧