我需要这样的一个函数:
输入变量是一个点,输出是一个选择集。
实际图形中有两个图层:0和1,0代表一个封闭图形的外轮廓,1代表一个图形的内轮廓。
如果给定的点位于一个封闭图形的内部,则在选择集中返回这个封闭图形,如果有内轮廓连内轮廓一起返回;否则返回一个空的选择集。
目前我做到了,但是效率太低,尤其是图形比较复杂的时候。
我的思路是这样的:
首先获取整个图形的限制框,过给定点向屏幕的至左边做一条直线:获取直线与图形的所有交点;
从最近的一个交点开始,根据交点使用SelectAtPoint选择一个图元,在遍历图形获取首尾相连的图元,得到的封闭图形加入一个临时选择集;过给定点分别向至右上下作直线,如果给定点在封闭图形内,则每一次至少有一个交点,由此判断出给定点是否在封闭图形内的。
我相信这个不是太难,但是我就是编不出高效的代码来!请高手指点!
谢谢! |