我在一个球体中有 8 个正方形(从上到下视图:ooo),我想知道当球体移动时如何使它们旋转,但我不知道如何围绕 z 轴旋转它们(我正在使用二维程序)。
到目前为止,如果我向上移动它工作正常,或者如果我向右移动它工作正常,但如果我向上移动,那么它只是变成一个小方块。
对不起,如果我解释不正确,但我只有 14 岁。
到目前为止的项目: http: //scratch.mit.edu/projects/11297983 (我知道我正在使用儿童程序)
谢谢你的帮助!
我在一个球体中有 8 个正方形(从上到下视图:ooo),我想知道当球体移动时如何使它们旋转,但我不知道如何围绕 z 轴旋转它们(我正在使用二维程序)。
到目前为止,如果我向上移动它工作正常,或者如果我向右移动它工作正常,但如果我向上移动,那么它只是变成一个小方块。
对不起,如果我解释不正确,但我只有 14 岁。
到目前为止的项目: http: //scratch.mit.edu/projects/11297983 (我知道我正在使用儿童程序)
谢谢你的帮助!
我在您的程序中看不到任何轮换。当我用箭头键移动球体时,方块会剧烈振荡,但其背后的“代码”看起来纯粹是二维的。
要将所有这些都放入 3d 中,您应该从使用 3 个坐标开始,这样 x²+y²+z²=r²。这是球面上一个半径为 r 的点的条件。选择 r=1 并稍后在绘图时缩放可能是最简单的。接下来你可以看看3d 旋转矩阵。矩阵符号一开始可能会令人困惑,但用坐标表示,它相当简单。以 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 坐标,并且知道如何改变它们以响应旋转,你就可以使用三个坐标中的两个来绘制东西,从而产生场景的正交投影。