【问题标题】:How to calculate a linear tapering transformation matrix如何计算线性锥形变换矩阵
【发布时间】:2020-02-23 15:46:35
【问题描述】:

我需要计算一个 4x4 矩阵(用于 OpenGL),它可以将左侧的 3d 对象转换为右侧的对象。仅在一个轴上应用变换。

编辑:

输入是要变形的给定 3d 对象(点)和变形量的单个变量。

图片表示投影到平面上的立方体,仅显示相关变化。垂直于视图平面的轴没有变化。

这两个物体的相对位置不相关,仅用于显示“前后”情况。

【问题讨论】:

  • 有几种方法可以做到这一点。事实上,有无限多种方法可以做到这一点。由于视觉结果是 2D,但输入是 3D,因此无法确定使用哪个矩阵进行转换。
  • “只在一个轴上应用变换”是什么意思?
  • 您的意思是 3×3 矩阵吗?在这种情况下,4×4 矩阵毫无意义。
  • @NicolBolas,请详细说明我的问题中缺少哪些信息?

标签: c++ opengl 3d


【解决方案1】:

************错误答案在这里*******

它与具有进一步透视划分的 2D 透视矩阵有些相反。所以,要反过来做这个“透视”的事情,你需要做一些与透视除法相反的事情,然后将结果乘以一个倒置的“透视”矩阵。虽然透视矩阵可能是倒置的,但我不知道什么是“与透视分割相反”。我认为你不能用矩阵来做到这一点。您必须改为转换每个顶点的 Y 坐标

【讨论】:

  • 不幸的是它只创建了一个剪切矩阵
  • 我很努力,但现在我觉得不可能了。编辑了答案。
  • 我实际上设法使用最后一列几乎完成了我需要的工作,但它同时在两个轴上缩放。要是有可能取消一个轴上的变换就好了..
猜你喜欢
  • 2012-07-31
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多