[求助]如何判斷POLYLINE是順時針還是逆時針走的?
[求助]如何判斷POLYLINE是順時針還是逆時針走的? 本帖最后由 作者 于 2007-2-6 17:39:46 编辑 <br /><br /> <p>1、如果多段线只有两个点呢? --根本无法判断顺逆。</p><p>2、如果在三个点以上,只需要判断1、2点的矢量和2、3点的矢量的叉积即可。(可能有退化情况)</p><p>3、再说这样的判断是无意义的,因为多段线可能在中途转向。</p><p></p><p>如果你的需要不是这样的,下面已经有讨论:</p><p><a href="http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=1090">http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=1090</a></p> 非常感謝! 计算几何的算法 在<a href="http://www.gameres.com">www.gameres.com</a>里搜索有 只有封闭的多义线才有意义。可将多义线变成多折线(将其中的圆弧部分用多条直线拟合)后再判断。 (defun C:test(/ ss fd ang offsetObj plineObj)<br/> (if (setq ss (ssget ":s" '((0 . "*POLYLINE"))))<br/> (progn<br/> (setq plineObj (vlax-ename->vla-object (ssname ss 0)))<br/> (setq fd (vlax-curve-getFirstDeriv plineObj 0.5))<br/> (setq ang (atan (/ (cadr fd) (car fd))))<br/> (setq offsetplineObj (car (vlax-safearray->list<br/> (vlax-variant-value<br/> (vla-offset plineObj 0.0001)))))<br/> (if (> (vla-get-length plineobj) (vla-get-length offsetplineobj))<br/> (princ "\n顺时针.")<br/> (princ "\n反时针.")<br/> )<br/> (vla-delete offsetplineObj)<br/> );progn<br/> (princ "\nNo object selected or object selected is not a polyline.")<br/> );end_if<br/> (princ)<br/>) 楼上的运用巧妙
页:
[1]