矩阵变换和纹理映射坐标混淆(初学者)[关闭]
Posted
技术标签:
【中文标题】矩阵变换和纹理映射坐标混淆(初学者)[关闭]【英文标题】:Matrix Transformations and Texture mapping coordinates confusion (Beginner) [closed] 【发布时间】:2012-06-04 09:09:41 【问题描述】:我正在做一些关于矩阵变换和纹理映射的问题,我遇到了两个我不知道如何得到答案的问题。答案以红色突出显示。 (这些可以在 C++ 中实现,但在我这样做之前我只是想先熟悉一下转换)
对于矩阵变换,它不应该有-1
(矩阵的右上角)用于翻译而不是0
编辑:仍然需要回答第二个问题
我的第二个问题是我不确定他们是如何获得y coordinate for point D
【问题讨论】:
关于变换矩阵,我认为给出的答案是错误的。它在矩阵 c) 的 x 平移中应该有一个额外的 -1.5。在 x 轴上缩放 0.5 时,矩形将从 2.5 开始缩小。要将其变为 1,您需要 -1.5 的翻译 @Unni 你好,根据答案没有涉及翻译...看看下面给出的答案,有道理。 我认为这样的问题会在 math.stackexchange.com 上找到更好的地方 【参考方案1】:回答第一个问题:
生成的图像沿 x 轴压缩成一半,并沿 Y 轴拉长到两倍长度。
缩放矩阵就是答案。缩放矩阵是一个对角矩阵,元素为X-scaling, Y-scaling, 1
。
现在,
| 0.5 0 0 |
| 0 2 0 |
| 0 0 1 |
是一个典型的缩放矩阵。它将 x 轴缩放 0.5(也就是说,它将 x 轴拉伸(压缩)成一半)。这在 Matrix(1,1) 中很明显。
在 Y 方向上的缩放在 Matrix(2,2) 中给出。那边的2
表示,Y轴被拉长了2倍。
注意: 在这个问题中,不涉及翻译。请注意,简单的缩放使它看起来像是平移。
【讨论】:
有道理...我认为它的发生是因为首先将对象转换回原点然后缩放然后返回.. 实际上,图像被缩放没有平移到对象的中心。按照你的方式(目前只考虑 X 方向),第一个翻译将是-3
。下一次缩放,并由+3
重新翻译。这将导致图像在同一位置缩放。里面不会有那种“明显”的翻译:)
哦耶!我的坏我的坏...想知道他们为什么让它变得棘手。如果对象从原点开始,那么根本就没有问题...你知道第二个问题的答案吗=)
很高兴你知道了。关于第二个问题,我认为答案是错误的。沿 Y 方向没有重复纹理。这让我觉得 Y 纹理坐标只是 1
。
我认为同样的事情,但答案是我的讲师给出的,他不太可能在那个问题上犯了错误。但是生病给他发电子邮件,看看他有没有,然后更新这篇文章=)【参考方案2】:
找到第二个问题的答案。
点 B 上方的角必须具有 y 坐标 1,否则您将看不到底面。因此,对于点 D,您需要 y 坐标 2。如果您从 B 到角点到 D 的线,那么 textre 图像将重复两次。
【讨论】:
以上是关于矩阵变换和纹理映射坐标混淆(初学者)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章