Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尺度矩阵和平移矩阵相关问题_C++_Vector_Matrix_Transformation - Fatal编程技术网

C++ 尺度矩阵和平移矩阵相关问题

C++ 尺度矩阵和平移矩阵相关问题,c++,vector,matrix,transformation,C++,Vector,Matrix,Transformation,你好 我将单向缩放矩阵设置为三维实体(如实体1)。现在,我有另一个实体(实体2)跟随这个实体,它应该具有统一的缩放。我应用于这两个实体的矩阵顺序如下 将entity1从其原始世界位置转换为原点 单向缩放 将实体转换回其在世界上的位置 这很有效。但是,如果我对实体2遵循相同的顺序,它将不起作用。我在世界坐标系中做所有的矩阵变换 这是我在计算机图形学这个令人惊叹的世界上迈出的第一步。我会很感激,如果有人可以通过一些光对各种坐标系(世界,模型,本地)和 指导我如何从模型坐标系计算矩阵到世界坐标系,反之

你好
我将单向缩放矩阵设置为三维实体(如实体1)。现在,我有另一个实体(实体2)跟随这个实体,它应该具有统一的缩放。我应用于这两个实体的矩阵顺序如下

  • 将entity1从其原始世界位置转换为原点
  • 单向缩放
  • 将实体转换回其在世界上的位置 这很有效。但是,如果我对实体2遵循相同的顺序,它将不起作用。我在世界坐标系中做所有的矩阵变换

    这是我在计算机图形学这个令人惊叹的世界上迈出的第一步。我会很感激,如果有人可以通过一些光对各种坐标系(世界,模型,本地)和 指导我如何从模型坐标系计算矩阵到世界坐标系,反之亦然。
    提前感谢,
    Atul“世界”坐标系使用完全未修改的矩阵来表示世界上的所有对象。这是最简单的方式来看待你的所有物体在事物大格局中的位置

    “模型”坐标系与“局部”坐标系的概念非常相似。“局部”坐标系根据局部对象定义坐标系,因此,例如,(0,0)可能是该局部坐标系中对象的中心,正Z轴可能向下查看对象视图。“模型”坐标系本质上与此相同,但如果您与OpenGL混淆,因此您有一个MODELVIEW矩阵,此矩阵基本上是当前使用的“局部”坐标系。您可以在此“模型”矩阵上执行操作,以从世界坐标系到局部坐标系、到另一个局部坐标系、到另一个局部坐标系等

    我想如果你有兴趣直接从“世界”坐标系转换到物体的任何“局部”坐标系,这可能会对你有所帮助。为了使用此解决方案,需要为要查找其“局部”坐标系的对象提供正向、向上和侧向矢量(以“世界”坐标术语表示)


    我希望这有助于把事情弄清楚一点!:)

    我会先回答你的最后一个问题,希望它能让事情变得更清楚

    每当图形艺术家创建一座建筑、一个怪物或一幅风景画时,她都需要定义一个坐标系。它由一个原点(其中是0,0)和一些(其中是x和y方向?)。选择完全是任意的,没有真正的重要性,但为了简单起见(并在一定程度上减少由于缺乏精度而产生的错误),原点通常要么靠近对象的中心,要么位于参考点(例如树的根)

    现在,如果艺术家将怪物和建筑聚集在景观中,坐标可能不匹配。她本可以将建筑与景观一起创造出来,尽管这并不总是可行的,更不用说方便了,但对于怪物来说,追逐一些可怜的MMO玩家,这是不可能的

    因此,我们需要一种方法来知道当怪物在奔跑时,手臂、腿、牙齿、触手和任何你不想看到的东西将在世界的何处结束。相对于怪物,他们的位置是众所周知的。这就是我们所说的怪物坐标。更一般地说,我们称之为局部坐标,意思是怪物的局部坐标

    那么世界坐标是什么?通常,它们指的是最有意义的引用,即被认为不在其他对象周围移动的元素。这里是风景

    这就是矩阵发挥作用的地方。什么是矩阵?矩阵是一个操作符,它允许在不同的坐标系中表示坐标。这是坐标系从一个系统到另一个系统的投影:从怪物到场景,从场景到摄影机,从摄影机到屏幕

    矩阵可以表示从一个系统到另一个系统的任何变换:平移、旋转、缩放、剪切、展平。。。或者所有这些都是同一时间。单位矩阵是不改变任何东西的矩阵。矩阵也可以组合:通过将平移矩阵和旋转矩阵相乘,我们得到了平移和旋转的变换矩阵。这样做几次,你就可以通过组合每个关节的矩阵得到汽车工厂中机器人关节臂末端的位置

    然后我们遇到了您的问题所在:先转后转与先转后转不同。如果你不相信这一点,你可以自己尝试:先走后转或先转后走,看看你是如何在同一个位置结束的。所以最后它意味着矩阵必须按特定的顺序应用,这只取决于你想做什么


    从你给出的解释来看,我怀疑这就是你的问题所在,因为如果你先进行缩放,翻译会产生不同的结果。

    我可以知道怎么做吗?你只需单击答案左侧的小勾号即可接受。如果您喜欢,您也可以单击向上和向下箭头向上投票,如果您认为答案不好,也可以单击向下投票。如果您还没有读过这篇文章,我强烈建议您阅读这篇文章:谢谢您对世界/模型坐标系的解释Julien。我目前正在努力的是,我有一个实体,它位于世界坐标系中。现在我想让这个实体均匀缩放,然后平移。为了实现这一点,我正在做以下工作。。。首先我翻译这个实体