python求圆锥体的表面积_使用matplotlib绘制圆锥的三维图形
我找到了一个解决办法,也许对其他人有用。在from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
import colorsys
from matplotlib.tri import Triangulation
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
n_angles = 80
n_radii = 20
# An array of radii
# Does not include radius r=0, this is to eliminate duplicate points
radii = np.linspace(0.0, 0.5, n_radii)
# An array of angles
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)
# Repeat all angles for each radius
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
# Convert polar (radii, angles) coords to cartesian (x, y) coords
# (0, 0) is added here. There are no duplicate points in the (x, y) plane
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())
# Pringle surface
z = 1+-np.sqrt(x**2+y**2)*2
print(x.shape, y.shape, angles.shape, radii.shape, z.shape)
# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!
tri = Triangulation(x, y)
triangle_vertices = np.array([np.array([[x[T[0]], y[T[0]], z[T[0]]],
[x[T[1]], y[T[1]], z[T[1]]],
[x[T[2]], y[T[2]], z[T[2]]]]) for T in tri.triangles])
x2 = np.append(0, (radii*np.cos(angles)).flatten())
y2 = np.append(0, (radii*np.sin(angles)).flatten())
# Pringle surface
z2 = -1+np.sqrt(x**2+y**2)*2
# NOTE: This assumes that there is a nice projection of the surface into the x/y-plane!
tri2 = Triangulation(x2, y2)
triangle_vertices2 = np.array([np.array([[x2[T[0]], y2[T[0]], z2[T[0]]],
[x2[T[1]], y2[T[1]], z2[T[1]]],
[x2[T[2]], y2[T[2]], z2[T[2]]]]) for T in tri2.triangles])
triangle_vertices = np.concatenate([triangle_vertices, triangle_vertices2])
midpoints = np.average(triangle_vertices, axis=1)
def find_color_for_point(pt):
c_x, c_y, c_z = pt
angle = np.arctan2(c_x, c_y)*180/np.pi
if (angle < 0):
angle = angle + 360
if c_z < 0:
l = 0.5 - abs(c_z)/2
#l=0
if c_z == 0:
l = 0.5
if c_z > 0:
l = (1 - (1-c_z)/2)
if c_z > 0.97:
l = (1 - (1-c_z)/2)
col = colorsys.hls_to_rgb(angle/360, l, 1)
return col
facecolors = [find_color_for_point(pt) for pt in midpoints] # smooth gradient
# facecolors = [np.random.random(3) for pt in midpoints] # random colors
coll = Poly3DCollection(
triangle_vertices, facecolors=facecolors, edgecolors=None)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.add_collection(coll)
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)
ax.elev = 50
plt.show()
python求圆锥体的表面积_使用matplotlib绘制圆锥的三维图形相关推荐
- 用python画数学函数图像教程_使用Matplotlib 绘制精美的数学图形例子
一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...
- 如何用python画数学图案_使用Matplotlib 绘制精美的数学图形例子
一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import matplotlib.pyplot as pt x = np.aran ...
- Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图、折线图、标注文字、图例、三维坐标)之详细攻略
Python之matplotlib:利用matplotlib绘制八象空间三维图案例(知识点包括散点图.折线图.标注文字.图例.三维坐标)之详细攻略 目录
- 怎么用python画sin函数图像_Python3使用Matplotlib 绘制精美的数学函数图形
记录Python3使用Matplotlib 绘制精美的数学图形. 一个最最简单的例子: 绘制一个从 0 到 360 度完整的 SIN 函数图形 import numpy as np import ma ...
- python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...
- python求素数的函数_如何用python求素数
如何用python求100以内的素数? 质数(primenumber)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,如:2.3.5.7.11.13.1 ...
- python 四象限图_使用matplotlib绘制四象限图
今天简单研究了一下在python中绘制四象限图的问题,结合前人相关研究成果,绘制出的图效果如下: 绘制这种图的要点是:自己构造新的x轴和y轴,不要用散点图默认的横纵坐标系,并且不要显示原来的横纵坐标系 ...
- python绘制等值线图_使用matplotlib绘制等值线图
等值线图 等值线图或等高线图在科学界很常用.这种可视化方法用由一圈圈封闭的曲线组成的等值线图表示三维结构的表面,其中封闭的曲线表示的是一个个处于同一层级或z值相同的数据点. 虽然等值线图看上去结构很复 ...
- Python dataframe绘制饼图_运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解...
从导入数据开始 这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图.散点图.饼 ...
最新文章
- 《深度学习,统计学习,数学基础》人工智能算法工程师手册:程序员写的AI书,50 章一网打尽...
- 智能车竞赛技术报告 | 单车拉力组 - 长春理工大学- 追风零队 2021
- 鸿雁电器oa系统中决策支持模块效果
- HighNewTech:70后、80后、90后、95后职场人大数据调查(有趣的五个结论)——源于猎聘网
- 用于Web开发的8 个最好的跨平台编辑器
- php.ini 配置详解
- Gcd HDU - 6545 (基础数论)
- Vue之$nextTick属性
- apachejmeter_java源码_自定义编写jmeter的Java测试代码
- event_base_loop
- javascript案例大全_JavaScript 中文资源大全,你值得拥有
- C# CharacterToBinary 将类似2进制字符串 10010110111 转换为数值型源码
- asp.net—工厂模式
- 计算机控制系统电阻加热课设,计算机控制系统课程设计资料.doc
- 【人机】确认框中的“取消/确定”要如何设计呢?
- githug关卡小游戏,练习git
- Java之png图片工具类
- Linux系统下的hadoop常用命令
- java 包 重名,Java-java 包重名的问题如何解决?
- 会当凌绝顶-----盘赔之我见(四)
热门文章
- lda 可以处理中文_自然语言处理——使用词向量(腾讯词向量)
- NR CSI(三) CQI
- word2016加载MathType打开时显示“安全警告,宏已被禁用”解决办法
- Jsrpc学习——网易云热评加密函数逆向
- CityEngine制作玻璃材质反光效果
- 《 HarmonyOS实战—HarmonyOS(鸿蒙)开发初体验,华为如何引领物联网时代》
- hibernate lazy属性参数说明
- Https接口异常javax.net.ssl.SSLHandshakeException问题
- ffmpeg录制视频时添加时间水印
- 快速排序——单边循环实现方式