我試圖檢查一個點是否在以(x,y,z)中心點爲中心的球體中,其中(x,y,z )不是(0,0,0)。Python檢查一個點是否在中心x,y,z的球體中
這段代碼我使用生成我要檢查的要點:
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)
。我知道有一種方法可以做到這一點,但它需要多行代碼,我寧願一個一個做。我會在另一個問題的答案的評論中提出這個問題,但我不允許對答案發表評論。
math.sqrt((xa)** 2 +(yb)** 2 +(zc)** 2)給你一些幫助(a,b,c)嗎? [正在球體中心座標] – giosans 2014-11-08 15:37:24