明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: caoyin

[原创] 判断点在封闭曲线的位置

  [复制链接]
 楼主| 发表于 2009-9-16 21:35:00 | 显示全部楼层
本帖最后由 作者 于 2009-9-16 21:55:26 编辑

回不死猫:拟合曲线还是存在精度问题,但速度应该很快

前几天的讨论http://bbs.mjtd.com/forum.php?mod=viewthread&tid=77921,都是求点集,直接求图形对象,特别好的算法可能不是很多,等待高手...

发表于 2011-5-10 18:13:57 | 显示全部楼层
太好了,用此程序可以完成我的"局部放大"了.谢谢caoyin
发表于 2011-5-10 22:05:15 | 显示全部楼层
我是射线党。
发表于 2011-5-13 08:28:37 | 显示全部楼层
选择封闭曲线:选择一个圆,然后点圆心处,发现:
拾取任意点: ......在曲线外。
这显然错误。

发表于 2011-8-5 20:53:39 | 显示全部楼层
本帖最后由 chlh_jd 于 2011-8-5 20:54 编辑

楼主的判别函数判别效果非常精确,似乎漏了回收2个变量LST1 LST2;
如果需要大量运行,效率可能会略低些,有没有办法调用ACAD自身的呢?
发表于 2011-8-5 21:01:23 | 显示全部楼层
本帖最后由 chlh_jd 于 2011-8-5 21:03 编辑

就多边形而言,我一直用狂刀前辈的代码;期待能早日见到支持各类型曲线的纯LISP版或调用ACAD自身的版本
  1. ;;;判断点是否在封闭多边形内 .
  2. ;;;Function : judge a point location with polygon
  3. ;;;Arg : pt -- a point
  4. ;;;      pts -- points of polygon
  5. ;;;      eps -- allowance
  6. ;;;return :
  7. ;;;     -1 -- out of polygon , 0 -- at , 1 -- in
  8. (defun pipl?(pt pts eps / is at a)
  9.   ;; by 狂刀  
  10.   ;; Edit by GSLS(SS) 2011.03.28
  11.   ;; Solved the problem : if a point at the given polygon , it perhap return T or NIL .
  12.   (setq pt(trans pt 0 0)pts(mapcar(function(lambda(x)(trans x 0 0)))pts)Eps(abs Eps))
  13.   (if(equalmember pt pts eps)0
  14.     (progn(setq is(equal PI (abs(apply(function +)(mapcar(function(lambda (x y / a)
  15.         (setq a (rem (- (angle pt x) (angle pt y)) PI))
  16.                 (if(equal (+(distance pt x)(distance pt y))(distance x y)Eps)(setq at T))a));_(check-pt (list x y))
  17.                    (cons (last pts) pts) pts))) eps))(cond (at 0)(is 1)(T -1)))))
  18. (defun equalmember (e lst tor /)
  19.   (apply (function or)
  20.          (mapcar (function (lambda (x) (equal x e tor))) lst)
  21.   )
  22. )
发表于 2011-10-27 11:33:02 | 显示全部楼层
好帖,学习一下!
发表于 2012-3-23 23:43:22 | 显示全部楼层
这个什么用啊?
发表于 2012-3-24 09:02:33 | 显示全部楼层
最简单的方法用(bpoly pt)
发表于 2013-3-11 16:47:44 来自手机 | 显示全部楼层
可否用多边形选择集判断?选中在内,没选中在外?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 00:44 , Processed in 0.163945 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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