我有一个名为 rectangle 的类,它有两个参数(SX 和 SZ)。我需要做一个函数,将第一个矩形分成两部分,在更宽的维度上随机放置一条线,然后这两个新矩形将分成两部分,然后是四部分,等等。我使用简单的树结构和像这样的功能:
def devide(self):
if (self.SX>self.SZ): #check which dimension is bigger
temp=randint (int(self.SX/4), int(self.SX*3/4)) #generate random from x/4,3x/4
left=rectangle(temp, self.SZ) #create nodes
right=rectangle(self.SX-temp, self.SZ)
self.addChild(left)
self.addChild(right)
else:
temp=randint (int(self.SZ/4), int(self.SZ*3/4))
up=rectangle(self.SX, temp)
down=rectangle(self.SX, self.SZ-temp)
self.addChild(up)
self.addChild(down)
for c in self.getChilds():
while (c.level()<3): ####why doesn't it work?:(
c.devide()
还有这个函数level()
——它应该(但它不)返回根节点和实际节点之间有多少层的值:
def level(self):
root=self
a=0
while root.isRoot()==False:
a+=1
root=root.getParent()
return a
对我来说重要的事情是:
如何限制这些划分(例如,只有 1+2+4+8 个节点)?我的意思是,Python 中没有静态变量,我的函数
level()
无法正常工作。如何访问最小的孩子(例如,将它们放在数组中)
我是编程新手,尤其是 Python。有人可以帮我吗?