def test_cylinder_volume(self):
# unit cylinder
vol = VolumeFactory.cylinder()
# test 5x5x5 grid for xy-radius = w and v=z
for u in np.linspace(vol.start()[0], vol.end()[0], 5):
for v in np.linspace(vol.start()[1], vol.end()[1], 5):
for w in np.linspace(vol.start()[2], vol.end()[2], 5):
x = vol(u, v, w)
self.assertAlmostEqual(
np.linalg.norm(x[:2], 2), u) # (x,y) coordinates to z-axis
self.assertAlmostEqual(x[2], w) # z coordinate should be linear
self.assertAlmostEqual(vol.volume(), pi, places=3)
# cylinder with parameters
vol = VolumeFactory.cylinder(r=2, h=5, center=(0,0,1), axis=(1,0,0))
for u in np.linspace(vol.start()[0], vol.end()[0], 5):
for v in np.linspace(vol.start()[1], vol.end()[1], 5):
for w in np.linspace(vol.start()[2], vol.end()[2], 5):
x = vol(u, v, w)
self.assertAlmostEqual(x[1]**2+(x[2]-1)**2, u**2)
self.assertAlmostEqual(x[0], w*5)
self.assertAlmostEqual(vol.volume(), 2*2*pi*5, places=3)
评论列表
文章目录