游戏中的数学:矩阵与变换(二)

英文原文地址:Docs » Math » Matrices and transforms

转载请注明出处

基(basis)

我们知道什么是原点。它是设计坐标的0,0(原点)经过变换后的新位置。这也是为什么称之为原点,但实际上它只是一个到新位置的偏移量。

基更有意思。它是X和Y在OCS中从新的位置的方向。它会告诉我们有哪些变化,无论是2D还是3D。原点(偏移量)和基(方向)表达的就是“嘿,初始的X和Y就在这呢,指向那些方向。”

那么,咱们来改变一下基的表现形式。改用矩阵取代两个向量来表示。

image

下一个问题就是…什么是矩阵?好吧,让我假装你从未听说过矩阵。

Godot中的变换

本教程仅从实用角度非深入地解释矩阵数学(及其运算)。本教程完结以后我会提供一些更加易懂的资料。在这里我们仅仅解释如何应用变换。

Transform2D

Transform2D是一个3x2矩阵。它用于2D变换有3个2维向量元素。“X”轴是元素0,“Y”轴是元素1 "Origin"是元素2。方便起见,它并没有按照基/原点来划分。

var m = Transform2D()
var x = m[0] # 'X'
var y = m[1] # 'Y'
var o = m[2] # 'Origin'

多数运算会基于Transform2D来解释,但是对于3D也是同理的。

单位矩阵(Identity)

一种重要的变换称为单位矩阵,即:

  • 'X’指向右:Vector2(1,0)

  • 'Y’指向上:Vector2(0,1)

  • 'Origin’是Vector2(0,0)

image

单位矩阵即和它的父坐标系的变换一致,一个没有被位移旋转缩放的OCS。

var m = Transform2D()
print(m)
# prints: ((1, 0), (0, 1), (0, 0))

猜你喜欢

转载自blog.csdn.net/hello_tute/article/details/107890720