gpt4 book ai didi

math - 投影到 2D 平面以进行重心计算

转载 作者:行者123 更新时间:2023-12-02 04:26:39 26 4
gpt4 key购买 nike

我有三个顶点组成 3D 空间中的平面/多边形,v0、v1 和 v2。

要计算该平面上 3D 点的重心坐标,我必须首先将平面和点投影到 2D 空间中。

在网上搜索之后,我对如何计算 2D 空间中的重心坐标有了很好的了解,但我一直在寻找将 3D 点投影到合适的 2D 平面的最佳方法。

有人向我建议,实现这一目标的最佳方法是“删除具有最小投影的轴”。如果不测试在每个世界轴(xy,yz,xz)上投影时形成的多边形的面积,我如何确定哪个投影是最好的(具有最大的面积),因此最适合计算最准确的重心坐标?

最佳答案

按照 OP 的要求计算 3D 空间中的重心坐标的示例。鉴于:

  • 定义三角形的 3D 点 v0、v1、v2
  • 3D 点 p 位于由 v0、v1 和 v2 定义的平面上,并且位于由相同点组成的三角形内。

“x”表示两个 3D 向量之间的叉积。
“len”表示 3D 矢量的长度。
“u”、“v”、“w”分别是v0、v1、v2的重心坐标。

triArea =   len((v1 - v0) x (v2 - v0)) * 0.5
u = ( len((v1 - p ) x (v2 - p )) * 0.5 ) / triArea
v = ( len((v0 - p ) x (v2 - p )) * 0.5 ) / triArea
w = ( len((v0 - p ) x (v1 - p )) * 0.5 ) / triArea

=> p == u * v0 + v * v1 + w * v2

叉积的定义如下:

v0 x v1 := { v0.y * v1.z - v0.z * v1.y,
v0.z * v1.x - v0.x * v1.z,
v0.x * v1.y - v0.y * v1.x }

关于math - 投影到 2D 平面以进行重心计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com