我想弄清楚在2D渲染的转换中是否使用了vec2或mat2类,我遇到了困难。Vec2除了代表UVs,AFAIK在同质性方面也相对没有意义。
2x2矩阵呢?我想如果我们坚持剪切,比例和/或旋转的温度变量,这可能是有意义的,但我觉得我永远不会使用它。
实现起来不太费劲,但我想知道我是否遗漏了什么,或者Vec2和Mat2对于表示2D空间中的对象是否很有用。
我知道3x2或2x3矩阵是一种更有效的数据存储方式,用于仿射变换-- vec2在这种情况下有什么用处吗?
发布于 2013-12-18 18:46:47
它们当然有用。
vec2
非常方便,因为大多数时候您都不需要存储第三个组件。只有在实际进行仿射变换时才需要它。您甚至可以在您的mul_point
和mul_vector
中使用不同的mat3x3
操作,以避免在许多情况下甚至需要构造vec3
。在3D中,我们通常在任何地方都使用vec3
,然后偶尔在必要时使用它来构造适当的vec4
,这是相当罕见的。
对于矩阵,同样适用。你必须一直处理非仿射变换。没有充分的理由使用mat3x3
,mat2x2
将在其中工作。同样,在3D中,也有很多地方不需要使用完整的mat4x4
。它在3D中更有用,因为旋转要复杂得多,而且你最终想要比在2D中更频繁地使用矩阵,但你还是会使用它们。在2D中使用标量旋转值并不总是方便或有效的,因为它需要在矩阵不需要的地方调用sin
/cos
/tan
。您可能会发现,您通常采用标量旋转,并将其转换为一个2x2矩阵,用于计算不需要平移的旋转。
https://gamedev.stackexchange.com/questions/67569
复制相似问题