2013-07-08 110 views
0

我在球体中有8个方块(从上到下的视图:ooo),我想知道如何在球体移动时使这些旋转,但我不确定如何将它们围绕z轴旋转(我正在使用2d程序)。围绕球体旋转对象

到目前为止,如果我向上移动它可以正常工作,或者如果我向右移动,它可以正常工作,但如果我向上移动,那么它就会变成一个小方块。

很抱歉,如果我没有解释正确的,但我只有14

项目迄今:http://scratch.mit.edu/projects/11297983 (我知道我使用的是儿童节目)

感谢您的帮助!

+2

你期待什么行为?如果这些方块固定在一个球体内,并且球体的运动是通过四处滚动来实现的,那么它看起来对我的工作方式是一致的。 – andand

+0

我认为我看到了问题,但您的问题仍不清楚。你是什​​么意思你使用的是2D程序?关于它的2D是什么?这8个对象是如何在代码中表示的?人有什么特性?你用'z'轴表示什么? – Beta

回答

1

我在程序中看不到任何旋转。当我用箭头键移动球体时,正方形会大幅振荡,但这个背后的“代码”纯粹是2d。

要将所有这些变成3d,您应该先使用3个坐标,以x²+y²+z²=r²的方式开始。这是半径为r的球体上一点的条件。选择r = 1可能最简单,并在绘图时稍后进行缩放。接下来你可以看看3d rotation matrices。矩阵符号一开始可能会让人困惑,但是用坐标表示,这很简单。以例如在Z轴旋转:

xnew = xold* cos(phi) + yold*sin(phi) + zold*0 
ynew = xold*(-sin(phi)) + yold*cos(phi) + zold*0 
znew = xold* 0   + yold*0  + zold*1 

以上是相当冗长,你当然可以完全丢弃所有这些*0方面,省略*1因素,而实际上离开独自ž干脆。这里的要点是,矩阵乘法可能看起来很可怕,但事实并非如此。

一旦你有三维坐标,并知道如何改变它们以响应旋转,你可以使用三个坐标中的两个来绘制事物,从而产生场景的正交投影。

+0

好的,谢谢,我会尝试 –