我有三个数字代表长度。每个数字是对象在x、y和z轴上的长度。我想表示的对象(可能)是一个变形的球体。
如何通过指定这3个长度来3D打印此对象?
我想从这个开始:
的数据
例如,对于这样的东西(我只是放大了图片):
的
我尝试使用以下代码(来自Ellipsoid creation in Python)并使用x,y和z的定义:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
phi = np.linspace(0,2*np.pi, 256).reshape(256, 1) # the angle of the projection in the xy-plane
theta = np.linspace(0, np.pi, 256).reshape(-1, 256) # the angle from the polar axis, ie the polar angle
radius = 4
# Transformation formulae for a spherical coordinate system.
x = radius*np.sin(theta)*np.cos(phi)
y = radius*np.sin(theta)*np.sin(phi)
z = radius*np.cos(theta)
fig = plt.figure(figsize=plt.figaspect(1)) # Square figure
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, color='b')
字符串
但我不能得到我想要的。你能给予我一下吗?
2条答案
按热度按时间okxuctiv1#
1.对于
x
、y
和z
坐标,应使用不同的半径1.要实际查看效果,请使用
ax.set_aspect(1.0)
,否则绘图视图将缩小为球体1.(要使椭圆体不与轴对齐/零居中:在
x
、y
和z
上使用旋转和/或平移)9bfwbjaz2#
下面是代码的修改版本。“我在x坐标的数据中添加了比例,并指定了框的纵横比。
字符串