Python 旋转矩阵缩小
我试图建立一些微型“3d引擎”,以了解这个领域的基础知识。 除了旋转外,一切都很好。我使用标准的旋转矩阵来实现这一点,但是所有3种可能的旋转不仅旋转点,还缩小它们的比例。这种行为不是有意或希望的。 以下是守则的相关部分(我认为): 我想这就是你所需要的。欢迎任何指向我错在哪里的指点。 我知道在这里的示例中,类缺少缩进,我在这个网站上的布局很糟糕:)Python 旋转矩阵缩小,python,python-3.x,3d,rotational-matrices,Python,Python 3.x,3d,Rotational Matrices,我试图建立一些微型“3d引擎”,以了解这个领域的基础知识。 除了旋转外,一切都很好。我使用标准的旋转矩阵来实现这一点,但是所有3种可能的旋转不仅旋转点,还缩小它们的比例。这种行为不是有意或希望的。 以下是守则的相关部分(我认为): 我想这就是你所需要的。欢迎任何指向我错在哪里的指点。 我知道在这里的示例中,类缺少缩进,我在这个网站上的布局很糟糕:) p、 我尝试使用“mpf()”函数来提高精度,但结果为0。问题出在这一部分: def rotateXY(self, degrees): ra
p、 我尝试使用“mpf()”函数来提高精度,但结果为0。问题出在这一部分:
def rotateXY(self, degrees):
radians = mpf(math.radians(degrees))
self.x = (math.cos(radians) * self.x) + (- math.sin(radians) * self.y)
self.y = (math.sin(radians) * self.x) + (math.cos(radians) * self.y)
return self
正在使用已调整的self.x计算self.y,从而导致给定的问题
解决此问题的方法是使用以下temp变量:
def rotateXY(self, degrees):
radians = mpf(math.radians(degrees))
tempX = (math.cos(radians) * self.x) + (- math.sin(radians) * self.y)
self.y = (math.sin(radians) * self.x) + (math.cos(radians) * self.y)
self.x = tempX
return self
你能定义“缩小”吗?如果你测试每一个旋转向量的大小,结果都是一样的。我用pygame给我一个视觉表示,点不仅围绕(0,0,0)旋转,而且每次旋转都会更接近它。如果有足够的旋转,每个点都会在(0,0,0)上结束,这显然是不需要的。顺便说一下,如果你不知道,如果你的类有一个
\uuuuuuu添加
函数,你不需要有addXtoY
函数,只需要使用+=/code>操作符,我想我找到了解决方案,我用已经调整过的self.x来计算self.y,我现在来看看。
def rotateXY(self, degrees):
radians = mpf(math.radians(degrees))
tempX = (math.cos(radians) * self.x) + (- math.sin(radians) * self.y)
self.y = (math.sin(radians) * self.x) + (math.cos(radians) * self.y)
self.x = tempX
return self