我有以下由VTK多边形线组成的域 - 每条线以'x'开头和结尾,可能有很多点,并且被分配左右标志以表示左边的区域和如果我们从头到尾走下线,确定该线的右侧。
the domain of interest http://oi43.tinypic.com/vwsug5.jpg
对于域中的任何随机点rp
,我需要确定它所在的区域。
到目前为止,我已经尝试过:
rp
最近的vtk点,找到它所属的曲线,然后计算rp
是否在曲线的左侧或右侧。这对于闭合曲线不起作用,例如上图中区域1
周围的曲线,特别是如果它们不是连续的(即一个回转)rp
落入的桶返回其标志集。但是,当存储桶包含多个区域标志时(即当rp
靠近一条线时),我无法使其工作。我认为这可能是一个已解决的问题,但我不太确定在哪里看。我考虑过point-in-polygon问题,但我处理的是曲线而不是多边形。其他想法涉及光线追踪,但似乎更适合3D。
有人可以提出替代方案,或者对我尝试过的方法进行修改吗?
答案 0 :(得分:0)
感兴趣的子域(SDOI)周边的每一行必须将SDOI作为其边界域之一。
rp
所在的域中填充(或展开一个圆圈)。除非:
特殊情况:rp
处于响铃状态(即域1)。所以我们不知道我们是在环内还是外环。我们知道我们处于这种'特殊情况',因为只有两个域从上面的方法(1或2)返回,但我们不知道哪个域。
解决方案:
rp
遍历一条直到它越过封闭线,然后进入另一个域。