明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2475|回复: 5

[求助]如何判断一个点是否在闭合区域内??? 急!!!!

[复制链接]
发表于 2008-5-2 08:36 | 显示全部楼层 |阅读模式

怎么判断一个点是否在一个闭合区域(可能是闭合多边形 也可能是不规则的区域 比如说有弧线的)

求教方法!我想用LISP把这个程序编写出来,有高手知道吗?

我现在只会做对于闭合多边形的,对于带有弧线或者其他不规则的我不会做!

发表于 2008-5-2 19:13 | 显示全部楼层

先搜索论坛的帖子,再提问题

发表于 2008-5-3 20:55 | 显示全部楼层

参考以下程序

(defun c:mj()
(setvar "cmdecho" 0)
(setq pt (getpoint "\n选取点: "))
(while pt
(setvar "cecolor" "1")
(command "bpoly" pt "")
(setq en (entlast))
(if (/= en nil)
(progn
(command "area" "o" en)
(setq aa (getvar "area"))
(redraw en 3)
(setq pt (getpoint "\n文字位置点: "))
(setq hd(getdist "\n请输入材料厚度:"))
(setq tj (* aa hd))
(setq zl (* tj 0.00000785))
(setq old_hh (getvar "textsize"))
(setq str_hh (strcat "\n高度 <" (rtos old_hh 2) ">: "))
(setq hh (getdist pt str_hh))
(if (null hh) (setq hh old_hh))
(command "text" pt hh 0 (strcat "面积=" (rtos aa 2) "平方毫米" "   " "重量=" (rtos zl 2) "公斤"))

)
(entdel en)
(setvar "cecolor" "bylayer")
(setq pt (getpoint "\n选取点: "))     
)
(prin1)
)

发表于 2008-5-4 14:36 | 显示全部楼层

既然闭合多边形已经会处理了

圆弧的部分就很容易了

解法1---------------------------

将多线上所有的圆弧端点都连接起来可以看到是封闭的多边形了

对于所有圆弧部分的处理

你判断一下圆弧的凸凹性

再判断点是否在圆弧内部

每个圆弧和圆弧端点连线形成的缺月形状你单独判断一下

凸圆弧内部点属于整体多边形

凹圆弧内部点不属于整体多边形

(多线42组码的知识你自己去找找)

解法2----------------------------

一个数学方法是点的上下左右四条射线和封闭图形总的交点个数的奇偶性判断内部还是外部

你自己试试看(注意交点恰好是端点的情况就ok)

解法3----------------------------

类似解法2

是封闭图形外部一点(内部一点 或者端点)和所求点的连线与封闭图形求交点个数奇偶性判断

解法4----------------------------

圆弧切分成为线段来进行逼近计算

这个看你要的精确度了

==================================

方法还有很多 我就先说点常用的了

发表于 2008-5-4 23:18 | 显示全部楼层
楼上解释真专业,,学习了
发表于 2008-5-5 13:59 | 显示全部楼层
用个boundary及vl-catch-all-apply就可以搞掂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 21:09 , Processed in 0.191505 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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