如何在 VPython 中为盒子的每个面着色?

How to color every face of a box in VPython?

我想用VPython做魔方,在第一阶段遇到了问题!我想用不同的颜色给盒子的每个面涂上颜色,但我找不到!在本教程中,您只能用一种特定颜色为盒子的所有面着色!

我该怎么办?

注意:我使用的是 VPython 7 和 Python 3.6

你可以试着用 6 个盒子制作一个不同颜色的盒子,类似于这个演示中显示的盒子,盒子有红色蓝色和灰色的面。

http://www.glowscript.org/#/user/GlowScriptDemos/folder/Examples/program/Bounce-VPython

您还可以将多个对象组合成一个复合对象。

http://www.glowscript.org/docs/VPythonDocs/compound.html

所以你可以用六个不同颜色的盒子做一个叫做多色盒子的复合物体。

您也可以尝试用三角形 and/or 四边形创建自己的方框,然后为每个面着色。

http://www.glowscript.org/docs/VPythonDocs/triangle.html

您还可以使用由 6 个不同颜色的金字塔对象组成的复合对象制作一个具有不同颜色面的盒子。

def cubelet(....): # a "factory function"
#create a list of the 6 pyramids with different colors; suppose its name is L

L = [pyramid(color=color.red,pos=vec(),axis=vec()), ... ]
return compound(L)

c = cubelet(....)

这个"factory function"(returns一个对象的函数)returns一个具有基本对象(例如盒子)的通常属性的对象。您可以通过更改 c.pos 或 c.axis 等操作此复合对象。您可以创建此 cubelet 的副本:

c2 = c.clone(pos=vec(10,5,0), size=vec(2,1,0.2))

对于金字塔,请参阅文档

http://www.glowscript.org/docs/VPythonDocs/pyramid.html

只需将其中的 6 个排列成一个盒子的形状即可。对于复合对象,请参见

http://www.glowscript.org/docs/VPythonDocs/compound.html

用 6 个金字塔做一个复合物体。