明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1162|回复: 1

[求助]如何编写点和封闭对象之间的关系

[复制链接]
发表于 2007-9-27 15:58 | 显示全部楼层 |阅读模式

大家好:

       如何编写点和封闭对象之间的关系:点在封闭对象外部,点在封闭对象上,点在封闭对象内部。

发表于 2007-9-27 17:33 | 显示全部楼层

转帖,也许对你有用。

判断一点是否在多边形内
;;By Xiao_longxin 明经通道
;;有一不规则多边形由点a1(x1,y1)、a2(x2,y2).....an(xn,yn)依次连接而成,如何求证点p(x,y)是在多边形内还是多边形外?
;;将直线PAi记作ki.将ki旋转到ki+1(令kn+1=k1)的角记为βi(规定逆时针为正,顺时针为负,如果βi大于180就变成βi-360)。
;;从直观上看有下面的结论
;;若P在形内,诸β的代数和为360度;
;;若P在形外,诸β的代数和为0。

;;pt_list 为((x y z) (x y z)......(x y z))即围成多边形的表
;;pt 为要判断的点
;;自相交多边形适用,不适用于曲线
(defun inorout (pt_list pt / e1 n i j va va_count)
  (setq i  0
 va_count 0
 n  (length pt_list)
 pt_list  (append pt_list (list (car pt_list)))
  )
  (repeat n
    (setq va (- (angle pt (nth i pt_list))
  (angle pt (nth (1+ i) pt_list))
      )
    )
    (cond ((> va pi) (setq va (- va pi)))
   ((< va (* -1 pi)) (setq va (+ va pi)))
    )
    (setq va_count (+ va_count va)
   i    (1+ i)
    )
  )
  (if (< (abs (- (abs va_count) pi)) 0.000001)
    't
    'nil
  )
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 23:41 , Processed in 0.468621 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表