首页 > 解决方案 > 是否可以根据这些有限的信息将两条线分类为锐线或钝线?

问题描述

我正在尝试确定两条任意线(在 3D 空间中)是形成角落的内部还是外部。

进入,我拥有的数据是形成连接的两个顶点、端点和法线。

输入数据的插图

我必须处理的数据是紫色点(实际上是两个离散顶点)、橙色点的位置,以及两个面法线的方向(绿色箭头)。仅凭此信息,我可以确定两条线是锐角还是钝角?

(我确实有一个蛮力解决方案,但有问题的例程需要尽可能快)

标签: mathrenderingpolygon

解决方案


如果dot(bNormal, a)法线指向或远离另一个向量,您将获得一个有符号值编码。

内常态

服用dot(bNormal, a)

点(nB,A)

您可以看到该值将是正数

如果法线指向外部:

外法线

服用dot(bNormal, a)

点(nB,A)

您可以看到该值将为负数

由此,您可以得出以下结论:

  • 如果(dot(bNormal, a) > 0,向量之间的角度将是锐角
  • 如果(dot(bNormal, a) < 0,向量之间的角度将是钝角
  • 如果(dot(bNormal, a) == 0, 向量是平行的并且角度既不是锐角也不是钝角

推荐阅读