明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: lei6699

[求助]如何判断一个点是否在一个点集里面?

  [复制链接]
发表于 2004-3-31 23:05:00 | 显示全部楼层
这个问题我有切肤之痛,曾经浪费了整整一天时间才找到原因。


使用不同方法得到的理论上相同的两个点,计算机却可能认为不相等。例如,使用(getpoint)捕捉到的两条直线的交点和使用(inters)计算得到的交点使用(equal pt1 pt2)进行判断,结果很可能是nil。造成这种结果是由于存储精度导致的。解决方法就是设定误差值,(equal pt1 pt2 0.000001)。
发表于 2004-4-1 00:02:00 | 显示全部楼层
10楼的回答已经很完美了:)
 楼主| 发表于 2004-4-1 13:52:00 | 显示全部楼层
我有个想法,就是用member,
(if (caar(member pt pts))
(。。。。)

就是说如果是一个子表的话,返回的形式类似(()())
取回pt的第一个x坐标,我现在用的还没问题。。。。 如果还要加上判断精度的话,就不如10楼的好了
发表于 2004-4-5 01:08:00 | 显示全部楼层
Ea发表于2004-3-29 11:43:00(defun ptisIN (pt pts)  (member 'T (mapcar '(lambda (x) (equal x pt 1e-5)) pts)))
用member还不能做出判断,程序应该返回T,或者nil
  1. (defun ptisIN2 (pt pts)
  2.   (apply 'or (mapcar '(lambda (x) (equal x pt 1e-5)) pts))
  3. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 15:36 , Processed in 0.146679 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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