微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有可能根据有限的信息将两条线归类为锐线或钝线?

如何解决是否有可能根据有限的信息将两条线归类为锐线或钝线?

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

进去,我得到的数据是形成连接的两个顶点、端点和法线。

Illustration of the data going in

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

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

解决方法

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

insidenormals

dot(bNormal,a)

dot(nB,A)

您可以看到该值将是

如果法线指向外:

outside normals

dot(bNormal,a)

dot(nB,A)

您可以看到该值将是

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。