请图形高手解决!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 CADVector
  • 开始时间 开始时间
C

CADVector

Unregistered / Unconfirmed
GUEST, unregistred user!
如何通过任意未知区域中的 一点得到改未知封闭区域的 轮廓?就想AUTOCAD中的 图案填充???解决后马上给分 !!!
 
如何通过任意未知区域中的 一点得到改未知封闭区域的 轮廓?就想AUTOCAD中的 图案填充???解决后马上给分 !!!
 
用射线法,可以快速确定封闭区域.
 
如果不想自己实现算法,可以使用RGN系列函数,PtInRgn FillRgn等
 
to:SPC_CLL
何为射线法》?能否给个例程?
 
暂时没有例程,这里仅说说原理:

所谓射线法,就是在一块区域中任取一点,从该点作任意一条射线,如果区域是封闭的,
那么该射线与区域的边缘一定有交点P。

若该射线L与区域S无交点,则可直接得出该区域S是开放的。若有交点P,则从交点P开始,
沿区域S的边缘的任一个方向(顺时针或逆时针)开始搜索,若能回到P点,则区域S是封
闭的,否则区域S是开放的。
 
能否给我写个例程
 
小弟的水平也不行,只是提醒一下。
SPC_CLL兄的射线法的确是可以解到普通区域是否是闭合的,但是对于比较“怪”一点的区域是有问题的,如下图

__________________
| <===这里没有闭合
| ____________
| |
_____________________| |
| |
| 。取到测试点 |
| |
|___________________________|

小弟也帮楼主顶一顶,看个答案。
 
            __________________。A
| <===这里没有闭合
| ____________。B
| |
_____________________| |
| |
| 。取到测试点 |
| | |
|________|__________________|
     C -->
楼上所说,如图:从测试点作射线交边界于C点,然后沿箭头方向搜索,到达B点,在B点,进入该点后,在其他7个方位上找不到出路,因此搜索到此结束,可以确定该区域是不封闭的.(进入一个点有八个方位)
 
后退
顶部