通过Python绘制九种二次曲面

article/2025/10/25 19:21:26

二次曲面

python中绘制三维图需要将坐标系声明为3d

球面方程为

x 2 + y 2 + z 2 = R 2 x^2+y^2+z^2=R^2 x2+y2+z2=R2

写为极坐标形式为

x = R sin ⁡ θ cos ⁡ φ y = R sin ⁡ θ sin ⁡ φ z = R cos ⁡ θ \begin{aligned} x&=R\sin\theta\cos\varphi\\ y&=R\sin\theta\sin\varphi\\ z&=R\cos\theta\end{aligned} xyz=Rsinθcosφ=Rsinθsinφ=Rcosθ

R = 1 R=1 R=1,则画图为

在这里插入图片描述

代码如下

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> theta = np.arange(0,6.4,0.1).reshape(64,1)
>>> phi = np.arange(0,3.2,0.1).reshape(1,32)
>>> x = np.sin(theta)*np.cos(phi)
>>> y = np.sin(theta)*np.sin(phi)
>>> z = np.cos(theta)
>>> ax = plt.gca(projection='3d')
>>> ax.plot_surface(x,y,z)
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x000001CECF13A730>
>>> plt.show()

二次曲面共有九种,代码均与椭球曲面类似,为了加强立体感,可在画图的时候设置颜色映射,下列各图部分用到

from matplotlib import cm
#...
ax.plot_surface(x,y,z,cmap=cm.coolwarm)
a,b,c均为1时的曲面
椭圆锥面
x 2 a 2 + y 2 b 2 − z 2 c 2 = 0 \frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=0 a2x2+b2y2c2z2=0
在这里插入图片描述
椭球面
x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1 a2x2+b2y2+c2z2=1
在这里插入图片描述
单叶双曲面
x 2 a 2 + y 2 b 2 − z 2 c 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=1 a2x2+b2y2c2z2=1
在这里插入图片描述
双叶双曲面
x 2 a 2 + y 2 b 2 − z 2 c 2 = − 1 \frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=-1 a2x2+b2y2c2z2=1
在这里插入图片描述
椭圆抛物面
z = x 2 a 2 + y 2 b 2 z=\frac{x^2}{a^2}+\frac{y^2}{b^2} z=a2x2+b2y2
在这里插入图片描述
双曲抛物面
z = x 2 a 2 − y 2 b 2 z=\frac{x^2}{a^2}-\frac{y^2}{b^2} z=a2x2b2y2
在这里插入图片描述
椭圆柱面
x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2}=1 a2x2+b2y2=1
在这里插入图片描述
双曲柱面
x 2 a 2 − y 2 b 2 = 1 \frac{x^2}{a^2}-\frac{y^2}{b^2}=1 a2x2b2y2=1
在这里插入图片描述
抛物柱面
y 2 = 2 p x y^2=2px y2=2px
在这里插入图片描述

在上面各式中,椭圆锥面、单叶双曲面、双叶双曲面具有极为相似的表达式

x 2 a 2 + y 2 b 2 − z 2 c 2 = { < 0 双 叶 双 曲 面 = 0 椭 圆 锥 面 > 0 单 叶 双 曲 面 \frac{x^2}{a^2}+\frac{y^2}{b^2}-\frac{z^2}{c^2}=\left\{\begin{aligned} &<0&双叶双曲面\\ &=0&椭圆锥面\\ &>0&单叶双曲面\\ \end{aligned}\right. a2x2+b2y2c2z2=<0=0>0

故可绘制动态图来表示这一过程,由于animation中无法绘制plot_surface,所以采用将单张图片生成gif的方式。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import imageiotheta = np.arange(0,6.4,0.1)
z = np.arange(-2,2,0.02).reshape(200,1)
gifImgs = []
fig = plt.figure()
for i in np.arange(-1,1,0.02):theta = np.arange(0,6.4,0.1).reshape(1,64)Z = np.repeat(z,64).reshape(200,64)x = np.sqrt(z**2+i)*np.cos(theta)y = np.sqrt(z**2+i)*np.sin(theta)ax = plt.gca(projection='3d')ax.plot_surface(x,y,Z,cmap=cm.coolwarm)plt.savefig("%.2f.jpg" % i)gifImgs.append(imageio.imread("%.2f.jpg" % i))imageio.mimsave("test.gif",gifImgs,fps=5)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/XjL90tB5.shtml

相关文章

解析几何:第六章 二次曲面(1)球面 椭球面 双曲面

1.球面 1.球面方程&#xff0c;球心与半径 图形 方程 球心和半径 1 标准方程&#xff1a; xyzR 2 参数方程 &#xff08;φ为经度&#xff0c;θ为纬度&#xff09; 3 球面坐标方程 rR 球心&#xff1a;G(0,0,0) 半径&#xff1a;R   1 (x-a)(y-b)(z-c)R 2 参数方程&a…

解析几何:第六章 二次曲面(2)抛物面 二次锥面 柱面 一般二次曲面

4 抛物面 1.椭圆抛物面 &#xff08;1&#xff09;标准方程 &#xff08;2&#xff09;基本元素 *顶点 O(0,0,0) *主轴 Z轴 *主平面 OYZ平面&#xff1a;x0&#xff1b;OZX平面&#xff1a;y0 &#xff08;3&#xff09;当ab时&#xff0c;椭圆抛物线面是由…

二次曲面标准方程和分类记忆方法(更新)

二次曲面标准方程和分类记忆方法 一类曲面-球面&#xff1a;圆球面&#xff0c;椭球面 1、球面 球面方程最简单。 描述&#xff1a;中心在(x0,y0,z0)&#xff0c;半径是r的所有点(x, y, z)的集合 令x00&#xff1b;y00&#xff1b;z00&#xff1b;得到中心在坐标原点的球面 …

MATLAB 画常见二次曲面汇总

一、螺旋线 1.静态螺旋线 a0:0.1:20*pi; hplot3(a.*cos(a),a.*sin(a),2.*a,b,linewidth,2); axis([-50,50,-50,50,0,150]); grid on set(h,erasemode,none,markersize,22); xlabel(x轴);ylabel(y轴);zlabel(z轴); title(静态螺旋线); 2.动态螺旋线 t0:0.1:10*pi; i1; hplo…

MATLAB-二次曲面

柱面&#xff1a;圆柱面&#xff1b;椭圆柱面&#xff1b;双曲柱面&#xff1b;抛物柱面 锥面&#xff1a;圆锥面&#xff1b;椭圆锥面 锥球面&#xff1b;球面 椭圆抛物面&#xff1b; 单叶双曲面&#xff1b;双叶双曲面 双曲抛物面&#xff1b; 旋转抛物面&#xff0c;…

二次曲面标准方程和分类记忆方法

二次曲面标准方程和分类记忆方法 一类曲面-球面&#xff1a;圆球面&#xff0c;椭球面 1、球面 球面方程最简单。 描述&#xff1a;中心在(x0,y0,z0)&#xff0c;半径是r的所有点(x, y, z)的集合 令x00&#xff1b;y00&#xff1b;z00&#xff1b;得到中心在坐标原点的球面 …

解析几何 曲线与二次曲面 二次曲面的分类(2.3)

一.二次曲面 二.二次曲面的旋转不变量 三.特征方程和特征根 1.特征根(特征值)与主方向(特征方向,特征向量): 2.不同直角坐标系下的主方向: 3.二次曲面的标准形式: 引理1:非零实对称矩阵 D D D的特征根全是实数 引理2:非零实对称矩阵 D D D的3个特征根至少有…

几何-九种二次曲面类型

&#xff08;一&#xff09;椭圆锥面 &#xff08;1&#xff09;把z平方看成一个一直变大的常数&#xff0c;那么可以看出延z方向&#xff0c;是一个一直变大的椭圆。 &#xff08;2&#xff09;把一个x或y赋予0&#xff0c;显然是一个两条关于原点对称的直线。 由上即可判断…

常见曲面及其方程

目录 &#xff08;1&#xff09;柱面①抛物柱面【z x^2^】②圆柱面【x^2^ y^2^ 1】③椭圆柱面【x^2^/a^2^ y^2^/b^2^ 1】④双曲柱面【x^2^/a^2^ - y^2^/b^2^ 1】 &#xff08;2&#xff09;旋转曲面①锥面【x^2^/a^2^ y^2^/b^2^ z^2^/c^2^】②圆锥面【a^2^(x^2^ y^2^)…

OIM同步OID(OID-Connector 9.0.4.12)

一、OIM与OID同步。 1.安装文件及需要的包。 OID-Connector 9.0.4.12.rar&#xff1a;OID连接器9.0版本。 jndi-1_2_1.zip&#xff1a;jndi包。&#xff08;貌似可以不要&#xff09; ldap-1_2_4.zip&#xff1a;ldap包。 2.准备工作。 1)解压ldap-1_2_4.zip&#xff0c;从解压…

对OIM Web(UI)层进行压力测试

Oracle IDM中的默认配置保留20个专用于服务前端&#xff08;UI&#xff09;请求的线程 。 从根本上讲&#xff0c;这意味着应用程序服务器具有20个线程池&#xff0c;可用于为通过Web控制台&#xff08;/ identity或/ sysadmin&#xff09;访问OIM的用户提供服务。 对于Weblog…

java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)

既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后&#xff0c;就想做点什么项目锻炼下自己的技能。凑巧的是&#xff0c;我一个同样学java的朋友在做一个仿qq的项目&#xff0c;不过他做的实在太丑了。 然后他想让我也一块做这个&#xff0c;我心想&#xff0c;像qq这么高难…

Patching OIM 11.1.1.5.0 to 11.1.1.5.3

本指南也可以应用到OIM11.1.1.5.1或11.1.1.5.2。 获取修补程序您将需要以下补丁: 1. Patch Name: 13106312Product: Oracle SOA PlatformRelease: 11.1.1.5.0 2. Patch Name: 13704894Product: Oracle Identity ManagerRelease: 11.1.1.5.0 Initial SetupCreate a director…

使用OIM的Design Console配置

1、运行安装oim的文件&#xff08;我的是Oracle_IDM1/bin里面的config.sh&#xff09;,选择如下 next 第一个为主机名&#xff08;电脑名&#xff09; next...finish 2、启动designconsole 在Oracle_IDM2里面找到wlfullclient.jar拷贝到Oracle_IDM1/designconsole/ext里面。 运…

给oim_对OIM Web(UI)层进行压力测试

给oim Oracle IDM中的默认配置保留20个专用于服务前端&#xff08;UI&#xff09;请求的线程 。 这基本上意味着应用程序服务器具有20个线程池&#xff0c;可用于为通过Web控制台&#xff08;/ identity或/ sysadmin&#xff09;访问OIM的用户提供服务。 对于Weblogic &#x…

如何OIM 11.1.1.5.0打补丁到11.1.1.5.2

将OIM11.1.1.5.0安装好之后,如需要打补丁到11.1.1.5.2,则按照如下的步骤: 下载两个patch,一个是SOA的,一个是OIM的。Oracle官方文档说如果想要给OIM打补丁的话就需要先把SOA先升级。 官方文档的地址:https://updates.oracle.com/Orion/Services/download?type=readme&…

基于 JavaFX 开发的聊天客户端 OIM-即时通讯

OIM 详细介绍 一、简介 OIM是一套即时通讯的聊天系统&#xff0c;在这里献给大家&#xff0c;一方面希望能够帮助对即时通讯有兴趣研究的朋友&#xff0c;希望我们能够共同进步&#xff0c;另一个就是希望能够帮助到需要即时通讯系统的朋友或者企业&#xff0c;可以直接使用或者…

java仿QQ聊天软件OIM艰辛之路

既然QQ能仿ICQ, 咱java也来个仿QQ.在我刚学完java后&#xff0c;就想做点什么项目锻炼下自己的技能。凑巧的是&#xff0c;我一个同样学java的朋友在做一个仿qq的项目&#xff0c;不过他做的实在太丑了。 然后他想让我也一块做这个&#xff0c;我心想&#xff0c;像qq这么高难…

oim-server-web打包测试环境不起作用问题 vue+typeScript

本人对前端只有个略懂 当我使用npm run test测试 alert(process.env.NODE_ENV)结果是正常能返回出 当我使用npm run build --test打包部署服务器后 返回的结果是 2021 04 25 暂时未找到解决方法 所以先冒着被同事孤立的风险用以下解决方法 修改前 class Config {private …

基于 JavaFX 开发的聊天客户端 OIM-即时通讯

OIM 详细介绍 一、简介 OIM是一套即时通讯的聊天系统&#xff0c;在这里献给大家&#xff0c;一方面希望能够帮助对即时通讯有兴趣研究的朋友&#xff0c;希望我们能够共同进步&#xff0c;另一个就是希望能够帮助到需要即时通讯系统的朋友或者企业&#xff0c;可以直接使用或…