Python绘制马鞍面(双曲抛物面)

一开始想随便找找,后来发现,找到的都不太是我想要的。

1. 不是那么好的方案

1.1 python

被我pass的内容:

1.2 Matplotlib

1.3

下面的代码来自:stack overflow-Plotting A Hyperboloid
画出来的效果好像有点不太一样。。。
在这里插入图片描述

1.4

下面的代码来自:Making 3D Visualizations
其实就是1.2的部分改了个颜色
在这里插入图片描述

2.好但是繁琐点的方案

2.1 pptk(除了matplotlib之外,要额外安装一个库)

参考pptk-Hyperbolic paraboloid:图是下面这样的,很好看!
g

2.2 geogebra

参考知乎专栏文章:从一道高考题到马鞍面——16张动图带你秒懂双曲抛物面
img

这个是这篇文章中的一个动图,像它这样的,还有16个。是使用geogebra这个工具绘制的(非常牛逼,可以去主页看看)
令人惊喜!

Python中,我们可以使用数学库如`numpy`和`matplotlib`来创建并可视化各种曲方程。一个常见的拱桥形状的例子是使用贝塞尔曲线(Bézier curve)或参数化曲,比如卡普雷卡尔(Cantor)拱桥,它是通过一系列的贝塞尔曲线段拼接而成的。这些方程通常定义为二维或三维空间中的函数。 一个简单的拱形方程例子,比如双曲抛物线(如马鞍形),可以用以下形式表示: ```python import numpy as np import matplotlib.pyplot as plt from matplotlib import cm # 参数化曲函数 def parabolic_arch(u, v): x = u * np.cos(v) y = u * np.sin(v) z = u**2 return x, y, z # 创建参数范围 u = np.linspace(-1, 1, 100) v = np.linspace(0, 2*np.pi, 100) # 构建曲网格 X, Y = np.meshgrid(u, v) Z = parabolic_arch(X, Y) # 绘制 fig = plt.figure() ax = fig.add_subplot(projection='3d') ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=True) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.title('类似拱桥的双曲抛物面') plt.show() ``` 在这个例子中,`parabolic_arch`函数定义了一个沿x轴宽度变化、高度为x²的曲。你可以根据需要调整这个函数,比如使用不同的参数或者贝塞尔曲线的控制点来形成更复杂的拱形。 如果你想了解更多的类,比如BezierSurface(贝塞尔曲)或者自定义的参数化表类,可能需要查看特定的3D图形库,比如`scipy`或者`trimesh`,它们提供了更高级的功能来创建复杂的几何形状。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值