首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将物体空间转化为世界空间( 3D数学入门书中的练习)

如何将物体空间转化为世界空间( 3D数学入门书中的练习)
EN

Computer Graphics用户
提问于 2019-02-07 11:05:59
回答 2查看 3.7K关注 0票数 1

这不是作业。我是自学计算机图形学,使用的书“三维数学基础为图形和游戏发展”(第二版)。所以,第三章中的练习6,我不知道如何准确地解决。事情是这样的:

“假设机器人位于(1,10,3)的位置,她在垂直空间中表示的右、上和前向矢量分别是0.866,0,−0.500、0,1,0和0.500,0,0.866。(注意,这些向量构成一个正交基础。)以下点在物体空间中表示。计算这些点在直立和世界空间中的坐标。(a) (−1,2,0) (b) (1,2,0) .”

现在我知道,为了从物体空间转换到世界空间,我必须首先通过旋转转换成惯性/直立空间,然后通过转换进入世界空间。所以我假设点(1,10,3)用世界空间坐标表示。我不明白的是,用哪一个矩阵来做点旋转(-1,2,0)?我从概念上理解正在发生什么,但我不知道在这里应该做什么操作。帮助是非常需要的,我们会感激的。提前谢谢。

EN

回答 2

Computer Graphics用户

回答已采纳

发布于 2019-05-07 10:45:00

对于其他可能有这个问题的人,这里可能有一个更直截了当的数字答案(我现在也在研究这本书)。考虑到这一点:

  1. 我们被赋予物体空间坐标,这些坐标需要被转换成垂直的和随后的世界空间坐标。
  2. 我们知道,当向量\vec{v}是正交的(相互垂直且长度为l = 1)时,它们可以表示为其轴与基向量集\vec{p}\vec{q}\vec{r}之间的线性变换。
  3. 表示这一点的方程式是:\vec{v} = v_{x}p + v_{y}q + v_{z}r
  4. 给定基向量,我们可以用上面的方程来计算每个对象的参考值。因此,第一个例子是:

\vec{u} = -1 \begin{bmatrix}0.866\\ 0\\ -0.500 \end{bmatrix} + 2 \begin{bmatrix}0\\ 1\\ 0\end{bmatrix} + 0 \begin{bmatrix}0.500\\ 0\\ 0.866\end{bmatrix} = \begin{bmatrix}-0.866\\ 2\\ 0.500\end{bmatrix}

然后,要在世界空间中计算这一点,只需将您的世界空间引用添加到垂直向量中。意思:

\vec{w} = o + u

书中的第一个例子是:

\vec{w} = \begin{bmatrix}1\\ 10\\ 3\end{bmatrix} + \begin{bmatrix}-0.866\\ 2\\ 0.500\end{bmatrix} = \begin{bmatrix}0.134\\ 12\\ 3.500\end{bmatrix}
票数 2
EN

Computer Graphics用户

发布于 2019-02-08 21:31:23

让我试着用数学的方法翻译这个问题陈述,这样就可以更容易地理解它。

假设机器人处于该位置(1,10,3)

假设有一组基\mathbf{e}_i和原点\mathbf{O},那么在这个基础上表示的机器人位置\mathbf{P}是基和系数\mathbf{p}=(1,10,3)的原点加线性组合:

\mathbf{P}=p_i \mathbf{e}_i + \mathbf{O}

在垂直空间中表示的她的右向量、向上向量和前向向量分别是0.866,0,−0.500、0,1,0和0.500,0,0.866。

现在我们有另一组基表示为\mathbf{e}'_i附加在\mathbf{P},这两个基\mathbf{e}\mathbf{e}'之间的关系也表示为线性组合。也就是说,表示\mathbf{m}_0=(0.866,0,-0.5)\mathbf{m}_1=(0,1,0)\mathbf{m}_2=(0.5,0,0.866),然后

\mathbf{e}'_i=m_{ij} \mathbf{e}_j

计算这些点在垂直和世界空间的坐标。(a) (−1,2,0) (b) (1,2,0) .

给定的坐标在对象空间中,问题要求我们分别用框架\{\mathbf{e}_i,\mathbf{P}\}\{\mathbf{e}_i,\mathbf{O}\}来计算它们的表示。

\mathbf{x}=(-1,2,0)为例,我们希望找到竖直空间中的坐标\mathbf{l}

\begin{align} x_i \mathbf{e}'_i + \mathbf{P} &= l_i \mathbf{e}_i + \mathbf{P}\\ x_j m_{ji} \mathbf{e}_i &= l_i \mathbf{e}_i \end{align}

用矩阵形式写成:\mathbf{M}^T \mathbf{x}=\mathbf{l}

接下来,我们在世界空间中找到坐标\mathbf{w}

\begin{align} x_i \mathbf{e}'_i + \mathbf{P} &= w_i \mathbf{e}_i + \mathbf{O} \\ x_i \mathbf{e}'_i + p_i\mathbf{e}_i &= w_i \mathbf{e}_i \\ x_j m_{ji} \mathbf{e}_i + p_i\mathbf{e}_i &= w_i \mathbf{e}_i \\ x_j m_{ji} + p_i &= w_i \end{align}

以矢量形式书写:

\mathbf{M}^T \mathbf{x} + \mathbf{p} = \mathbf{w}

你的想法大体上是正确的。并通过考虑两个基之间的关系(m_{ij})来构造“直立”矩阵,如上面所示。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/8562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档