【问题标题】:Vector Projection through a point and onto a plane通过一个点并到一个平面上的矢量投影
【发布时间】:2017-02-25 02:10:56
【问题描述】:

我需要计算黄星在平面上的位置,在平面Tangent Space

所以首先我需要从眼睛投影一个矢量,穿过粉红色的正方形,然后在平面上找到结果位置(找到黄色的星星)。

一切都已经在切线空间中了。所以我知道眼睛的位置和方向,以及粉红色正方形相对于平面中心(切线空间)的位置。

生成的黄色星星必须在平面上。所以它相对于蓝色箭头方向的位置必须始终为零。在上图中,它相对于绿色和红色箭头的位置将具有正值。

我一直试图弄清楚如何使用诸如 Vector Projection 之类的数学来做到这一点,但我似乎无法理解它。

【问题讨论】:

  • 求解z=0的直线方程。

标签: vector 3d point projection plane


【解决方案1】:

所以相机有 3d 位置向量 r 和方向向量 e。平面由z=0 定义,您在直线方程上使用它

z = r_z + t * e_z = 0  } t = -r_z/e_z

坐标是那么

x = r_x + t * e_x
y = r_y + t * e_y

我假设所有内容都已在所需的坐标系中表示,z 轴沿 blue

【讨论】:

  • 非常感谢!我想 16 岁高中辍学对我没有帮助,哈哈。是的,一切都在切线空间/坐标系中。我假设 e 必须是一个 normalized 向量。我需要一点时间来测试它,但我稍后会回来并将它标记为答案,如果它有效。 :)
  • 其实e没有可以归一化,但是它必须有一个非零的z-axis零件。如果它被归一化,那么t 是到该点的 xy 平面的距离。
  • 我不得不添加 y = ((p.y < 0) ? -y : y); 不知道为什么。 :) 对于我几乎所有的飞机,我不得不使用交换 x 和 y。可能是因为最后我正在从平面上的纹理中读取一个像素,而且我实际上并没有在“所需的坐标系”中拥有所有东西,这可能是真的。但总的来说,只要稍加调整,它就可以工作了!谢谢:D
  • 我认为您正在寻找使用矢量运算的更复杂的解决方案,而实际上直接考虑组件更简单。
  • 我正在获取位于黄色星形的像素的颜色,并将其绘制到位于粉红色正方形的像素上。两个点都在不同的平面上,UV 的拉伸方式不同。目的是让粉红色的方块像假透明一样看穿。我仍在努力使其一切正常。你的数学是有效的,它是核心。但是,我不明白如果没有矢量操作我怎么能做到这一点。 :)
猜你喜欢
  • 2014-08-01
  • 2021-01-17
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2017-07-04
相关资源
最近更新 更多