我试着检查一个点是否在一个中心点为(x,y,z)的球体内,其中(x,y,z)不是(0,0,0)。在
我用来生成要检查的点的代码:def generatecoords(self, i):
x, y, z = generatepoint()
if i >= 1:
valid = False
while valid == False:
coords = self.checkpoint(x, y, z)
for b in world.starlist:
if coords == world.starlist[b].coords:
coords = self.checkpoint(x, y, z)
else:
valid = True
else:
coords = self.checkpoint(x, y, z)
return coords
def checkpoint(self, x, y, z):
d = math.sqrt(x * x + y * y + z * z)
while d >= self.radius:
x, y, z = generatepoint()
d = math.sqrt(x * x + y * y + z * z)
coords = (int(x), int(y), int(z))
return coords
def generatepoint():
x, y, z = [int(random.uniform(-self.radius, self.radius)) \
for b in range(3)]
return x, y, z
在for循环中调用这些函数来生成字典中的点,同时也检查点不太可能被放在另一个上面的可能性(主要是因为我可以)。在
我试图找出我需要添加到math.sqrt(x * x + y * y + z * z)中的内容,以便它占一个不是(0, 0, 0)的中心。我知道有一种方法可以做到这一点,但这需要几行代码,我宁愿用一行代码来完成。我会在另一个问题的答案的评论中问这个问题,但我现在还不能评论答案。在