我在一个球体中有8个正方形(从上到下的视图:ooo)我想知道我会怎样 o o OOO 当球体移动时使这些旋转,但我不知道如何围绕z轴旋转它们(我使用的是2d程序)。
到目前为止,如果我向上移动它工作正常,或者如果我向右移动它工作正常但如果我向上移动然后它就会变成一个小方块。
很抱歉,如果我没有正确解释,但我只有14岁。
到目前为止的项目:http://scratch.mit.edu/projects/11297983 (我知道我正在使用儿童节目)
感谢您的帮助!
答案 0 :(得分: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
因子,实际上完全不考虑z。这里的要点是,矩阵乘法可能看起来很可怕,但事实并非如此。
一旦你有了3d坐标,并知道如何根据旋转来改变它们,你可以使用三个坐标中的两个来绘制东西,从而产生场景的正交投影。