Algorithm 检查在封闭区域内接触的用户

Algorithm 检查在封闭区域内接触的用户,algorithm,opengl,graphics,Algorithm,Opengl,Graphics,我有一个有曲线的3D世界。每条曲线只是一个3D点列表。 当用户点击屏幕时,我想测试该点是否在一个封闭区域内。 例如,用户绘制四条形成矩形的曲线。如果他在这个矩形内点击,我想“知道”这是一个封闭区域 我找不到任何已知的算法-如何实现这种行为?假设您的“闭合区域”都是平面的:对于每个区域,找到拾取光线和区域平面之间的交点。然后使用奇偶交叉测试(跟随该平面中的光线)确定该点是否在该区域内 如果区域不是平面的,则可以使用缠绕测试,将区域中每对连续点的拾取光线的有符号角度求和,然后查看该和是否为非零(考虑

我有一个有曲线的3D世界。每条曲线只是一个3D点列表。 当用户点击屏幕时,我想测试该点是否在一个封闭区域内。 例如,用户绘制四条形成矩形的曲线。如果他在这个矩形内点击,我想“知道”这是一个封闭区域

我找不到任何已知的算法-如何实现这种行为?

假设您的“闭合区域”都是平面的:对于每个区域,找到拾取光线和区域平面之间的交点。然后使用奇偶交叉测试(跟随该平面中的光线)确定该点是否在该区域内


如果区域不是平面的,则可以使用缠绕测试,将区域中每对连续点的拾取光线的有符号角度求和,然后查看该和是否为非零(考虑数值漂移)

你有一些奇怪的线条(没有区域/内容),想检查一个点是否“靠近”它。对的然后定义close。到最近曲线点的距离好吧,我可能不够清楚。这不是我想要的-我将编辑我的问题,因为矩形是二维的:a)全部是二维的,不包括三维。B) 矩形位于3D房间的某个地方,如果它正好位于两条线之间,则一个点仅“在”其中,即如果有一个平面填充该矩形,则该点仅在它接触该平面时才在其中;或者C)如果它不接触该平面,则该点也在其中。与此类似,矩形的平面是法线方向上的光源,如果在光线中,则该点位于闭合区域中。在这种情况下,如何处理表单中的非平面区域?这将告诉我一个点是否在给定区域内。然而,我只有曲线——我不知道这个区域是封闭的。这就是我想要测试的。听起来你只有“分数”。形成封闭区域的点与形成开放区域的点的区别是什么?没有任何点列表定义(可能是非平面的)多边形吗?多边形是的,但不一定是闭合多边形。多边形是根据定义闭合的。3个或更多点的任意序列定义闭合多边形。只要在每两个连续点之间,从最后一个点到第一个点,画一条线段。你说得对:)我的意思是它可以是一条三维多段线。未关闭