本帖最后由 edata 于 2013-12-28 21:27 编辑
312735894 发表于 2013-12-28 20:49 
哦哦,明白了,谢谢大大,不知道LISP中有没有函数可以判定点是否在多边形内啊?
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=67738
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108229
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100682 - ;;;******************************************************************************
- ;;; No.51 判断点是否在多边形内(狂刀程序)
- ;;;xPt是要判断的点坐标(x y z ), Points是多边形顶点列表((x1 y1 z1) (x2 y2 z2)...)
- ;;;******************************************************************************
- ;;; 测试 (ISPTINPM '(2 1) '((0 0)(10 0)(10 10)))
- (defun ISPTINPM (XPT POINTS)
- (equal
- pi
- (abs
- (apply
- '+
- (mapcar
- '(lambda (X Y)
- (rem (- (angle XPT X) (angle XPT Y)) pi)
- )
- (reverse (cdr (reverse (cons (last POINTS) POINTS)))
- )
- POINTS
- )
- )
- )
- 1e-6
- ) ;end_equal
- )
|