我在2D中有以下几何问题:
我有一个点,从这个点向外投射一个无限角度(2D圆锥),由一个方向和一个角度确定。(点和方向形成一个向量,每个方向的一半形成2D圆锥)
现在我想检查另一个2D点是否在这个圆锥内或外。
如何实现这个目标? 谢谢!
我在2D中有以下几何问题:
我有一个点,从这个点向外投射一个无限角度(2D圆锥),由一个方向和一个角度确定。(点和方向形成一个向量,每个方向的一半形成2D圆锥)
现在我想检查另一个2D点是否在这个圆锥内或外。
如何实现这个目标? 谢谢!
计算从圆锥中心到查询点的向量。将该向量归一化为长度为1,同样将圆锥中心向量归一化为长度为1。
现在取两个向量之间的点积。归一化后的两个向量的点积是它们之间夹角的余弦值。对点积取反余弦函数(在大多数编程语言中使用acos
),您将获得该角度。将此角度与圆锥的角度(即您描述的半角)进行比较,如果小于,则问题点位于圆锥内。
这适用于2D和3D。
使用方向的反正切计算方向的角度。从检查点中减去原点。通过归一化向量的反正切再次计算其角度,并检查它是否位于角度边界内。
让从原点到指定点的向量与穿过中心的法线成角A。如果角度A小于锥体半角,则它在内部,否则在外部。