【问题标题】:Converting 3D points to 2D points?将 3D 点转换为 2D 点?
【发布时间】:2012-09-05 17:30:39
【问题描述】:

给定:

p1 = (-10,  2, -0.01)
p2 = (-20, -2, -0.03)

我试图在 3D 矩形中表示这些点,其中我有 3D 矩形的宽度、高度和深度。这里的投影类型是正交的,是笛卡尔坐标系

通过将 p1 和 p2 转换为 2D,我想画线。

知道怎么做吗?

这是图片

【问题讨论】:

  • 为什么不能只取 X 和 Y 而不是 Z。所以 p1 将是 (-10,2) p2 将是 (-20,-2)
  • 我认为这是您正在寻找的但不确定en.wikipedia.org/wiki/3D_projection
  • @shaunhusain,从那个链接理解起来很复杂。任何直接的公式都会有帮助
  • 如果我将 pimvdb 提供的 JS 转换为 AS3 是否可以解决您的问题?我想我可以很容易地移植它。

标签: javascript actionscript-3 flash 3d


【解决方案1】:

您要查找的内容称为orthographic projection。它比更一般的perspective projection 更容易理解,尽管您可能也想研究一下。

理解正交投影的直观方法:3d 坐标系中的每个轴(例如,您的示例中的 H-、W- 和 D- 轴)在您的屏幕坐标(即用于绘图的(x,y) 坐标):

let:  H-axis direction vector = (hx, hy)
      W-axis direction vector = (wx, wy)
      D-axis direction vector = (dx, dy)

and:  origin screen position = (ox, oy)

要了解这些方向向量的含义:如果您绘制 H 轴,并用 (H=0, H=1, H=2, ...) 的抽动标记,那么hx 是连续抽动之间的 x 坐标差,hy 是连续抽动之间 y 坐标的差异。因此,您可以通过使用其方向向量来更改任何轴的方向和比例(独立于其他轴!)。

选择原点和方向向量后,您可以计算屏幕坐标(x, y):

      x = H * hx + W * wx + D * dx + ox
      y = H * hy + W * wy + D * dy + oy

这个公式的高规则乘法/加法结构基本上是matrix multiplication:

[ x y ]  =  [ H W D 1 ] * [ hx hy ]
                          [ wx wy ]
                          [ dx dy ]
                          [ ox oy ]

【讨论】:

  • 我认为我们非常接近,当你说 H 轴向量 = (hx, hy), hx=最小值 hy=轴的最大值?对。我们可以在聊天室聊几分钟吗
  • 不,(hx, hy) 是 H 轴指向的方向。如果绘制 H 轴,并用刻度标记 (H=0, H=1, H=2 ...),则 hx 是连续刻度的 x 坐标差,hy 是连续刻度的 y 坐标差.因此,您可以通过使用其方向向量来更改任何轴的方向和比例(独立于其他轴!)。
  • 我不明白,hx 和 hy,你如何找到轴。我通过编辑 Q 上传了图像,其中显示了刻度线。从那张图片中你能帮我找到值吗:)
  • 我已经编辑了我的答案以添加我的上述解释。我还创建了一个聊天室供进一步讨论,称为“正交投影”
【解决方案2】:

我使用了以下几点,因为它们更容易使用:

p1 = (50, 100, 0)
p2 = (200, 250, 50)

要创建一个 3D 矩形(立方体),您需要完成几个步骤:

  • 将两个点转换为立方体的角点。例如,前右下角的前后坐标为p1,水平坐标为p2。
  • 使用投影公式进行正交投影。您可以使用最简单的形式:
2D       3D
x   =   x + z
y   =   y - z
  • 组成立方体组成的线条,如底部前水平线等。

我不知道 ActionScript,但这里有一个概念证明可以帮助您:http://jsfiddle.net/3NLVe/。

【讨论】:

  • 谢谢,它对我不起作用。我正在尝试在 3D 笛卡尔矩形内添加这两个点!
  • 将它们添加到一个矩形中?抱歉,但这并不能真正说明问题。您对自己想要实现的目标有清晰(直观)的想法吗?
  • Q 已编辑,我添加了矩形的图像。请。看看吧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
相关资源
最近更新 更多