回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在制作一个制作形状之类的程序。我想通过查找面上存在的每个向量点的平均值来找到面的中心(由3d向量点列表提供)。
以下是我尝试过的:</p>
<pre><code>import math
class vector:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
class plane:
def __init__(self, pointsList):
self.vertex = []
# check that each point is unique
for p in range(0, len(pointsList)-1):
for i in range(p+1, len(pointsList)):
if (pointsList[p] != pointsList[i]):
if (i == len(pointsList)-1):
self.vertex.append(pointsList[p])
else:
return None
self.vertex.append(pointsList[-1])
#returns the mean of x, y, and z
def center(self):
xs = 0
ys = 0
zs = 0
count = len(self.vertex)
for i in range(0, count):
xs += self.vertex[i].x
ys += self.vertex[i].y
zs += self.vertex[i].z
xMean = xs/count
yMean = ys/count
zMean = zs/count
return vector(xMean, yMean, zMean)
</code></pre>
<p>然后我去测试函数平面。center():</p>
<pre><code>#initialize some vectors
A = vector(1,7,5)
B = vector(3,9,4)
C = vector(0,1,0)
D = vector(0,0,0)
testList = [A, B, C, D]
#initialize a plane with those vectors
plane1 = plane(testList)
acenter = plane1.center()
print('%d %d %d' % (acenter.x, acenter.y, acenter.z))
</code></pre>
<p>然后返回的结果是<code>1 4 2.</code>
我想要x分量、y分量和z分量的平均值,但是<code>4</code>显然不是<code>7, 9, 1, and 0</code>的平均值。预期结果应该是<code>1.0, 4.25, 2.25</code>。我怎样才能做到这一点</p>