math - 在 3D 空间中任意变换的等边三角形的法线

标签 math 3d geometry computer-vision normals

我有一个问题,我似乎无法找到起点;我什至不确定我是否可以很好地描述它以获得答案。

我需要在 3D 空间中找到等边三角形的法线,而无需事先知道三角形的点。考虑从任何角度拍摄三角形“屈服”路牌的照片,并从该照片确定标志的外向法线。 (我不是这样做,确切地说,但类似 ​​- 所以我将从这里使用标志/照片比喻)。

** 更新 **:在我问我的版本的前一天出现了同样的问题,您可以查看 here .感谢 BlueRaja 指出我那里。我认为那里的讨论将回答这个问题。然而,下面介绍了一种计算方法,这也很有趣。

我知道如何在代码中创建三角形时找到三角形的法线,但不确定如何将点映射到 3D 照片中的三角形。我知道每条边的长度,所以我知道点在任何方向上应该相距多远。我可以构建一个交互式工具,我可以覆盖一个三角形并将其旋转到位置并从中获取点,但我需要在没有交互的情况下执行此操作。这样做也无助于我弄清楚所涉及的数学。

我什至不确定我是否需要像找到正确的旋转矩阵一样确定点。

我只是不知道从哪里开始......搜索这个概念是空的或者不是我想要做的(例如:它们是 2D 转换而不是 3D)

也有可能我把事情复杂化了,有一个简单的变换方程可以在它的 sleep 中做到这一点。

想法?提前致谢!

最佳答案

这可以通过数学或计算解决(除了内置的四重歧义)。既然如此,我将描述一种计算方法。

总的来说,该方法是查看投影角度,并且由于您知道真实角度,因此您可以计算方向。具体来说,从下面的可视化开始:想象三角形在 x-y 平面上是平的,它沿着 z 轴是正常的,然后在此处放置一个球体,它接触三角形的所有角,一切都以原点为中心。现在旋转球体所有点的法线并注意投影角度。这里的关键是,现在对于每个可能的投影角度,您都可以在球体上绘制一条等角路径(即法线路径,指示您观察到相同投影角度的所有位置——这可能是一个圆,但我不确定不计算数学)。所以要解决原来的问题,取两个观察到的角度,画出等角路径,可能的解就是这些路径的交集。

在计算上,通过在球体上以 1 度为增量移动法线来构建您的等角路径,并注意每个位置的三个角度,然后通过按角度对其进行排序,将这些数据重新排列为等角路径。然后对于观察到的投影中的两个角度,找到两个等角路径相交的位置。请注意,路径将有两个交叉点,这对应于特定角落距离观察者近还是远的内在模糊性,并且,根据您选择处理法线反射的方式,路径可能会断开(尽管除了反射,我认为等角路径不会断开)。

关于math - 在 3D 空间中任意变换的等边三角形的法线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2079948/

相关文章:

javascript - 三个js物体绕球体旋转

java - 中点总和概率。 2 2"- I don' 没有得到正确的答案,因为我不明白 "xxxxx.x"是什么意思,我认为

java - 通过连接前 n 个自然数的二进制表示形式形成的数字的十进制值

math - 当 r < 0 时,(n - (~r % n) - 1) 和 (n - (abs(r) % n)) 之间有区别吗?

math - 使用四元数绕轴旋转多个点

typescript - 为什么我不能在 ThreeJS Typescript 项目中创建 Face3

html - 不使用 CSS 或 JS 创建 SVG 饼图的数学方法

java - 实时视频源的 3d 重建

qt - Qt 和 JavaFX 等硬件加速工具包如何实现高质量字体渲染?

css - 使图像显示为圆形