【发布时间】:2019-06-01 17:51:44
【问题描述】:
这个功能只能工作一次,然后不能再有人能告诉我我做错了什么吗?
from vpython import *
def create_cube(pos,size,front,back,left,right,bottom,top):
c = [ pyramid(pos=pos-vector(0.5,0,0),size=size,color=left),
pyramid(pos=pos+vector(0.5,0,0),size=size,color=right).rotate(angle=radians(180),axis=vector(0,1,0)),
pyramid(pos=pos+vector(0,0,0.5),size=size,color=front).rotate(angle=radians(90),axis=vector(0,1,0)),
pyramid(pos=pos-vector(0,0,0.5),size=size,color=back).rotate(angle=radians(270),axis=vector(0,1,0)),
pyramid(pos=pos-vector(0,0.5,0),size=size,color=bottom).rotate(angle=radians(90),axis=vector(0,0,1)),
pyramid(pos=pos+vector(0,0.5,0),size=size,color=top).rotate(angle=radians(270),axis=vector(0,0,1)),
box(pos=pos,size = vector(0.9,0.9,0.9),color=color.black)]
return compound(c)
topleftfrontcorner = create_cube(vector(-1,1,1),vector(0.5,0.90,0.90),color.red,color.black,color.blue,color.black,color.black,color.yellow)
topmiddlefrontside = create_cube(vector(0,0,0),vector(0.5,0.90,0.90),color.red,color.black,color.black,color.black,color.black,color.yellow)
我希望这个函数每次调用它时都会输出一个自定义的“立方体”,而不仅仅是一次。
【问题讨论】:
-
“只工作一次”是什么意思?确切的行为是什么?是否有任何错误消息或警告?
-
预期行为是它在 i pos 所在的任何位置创建一个自定义多维数据集,但在第一次调用后它不会在第二次调用时输出另一个多维数据集。
-
当我试图发布以下答案时,它被删除了,因为它“没有解决问题”。所以我再说一遍:金字塔的建造者是有缺陷的。它们的形式为 pyramid(...).rotate(...) 后跟“,axis=vector(0,1,0)”,这使得这些轴计算成为复合元素,您会收到错误,因为“ axis=vector(0,1,0" 不是 3D 对象。