法向量 - 平面上的法向量和曲面上的法向量

法向量 - 平面上的法向量和曲面上的法向量

flyfish

  • 平面上的法向量

    • 定义了一个平面 z = 0 z = 0 z=0。

    • 法向量是 (0, 0, 1),表示垂直于平面的向上方向。

    • 使用 quiver 函数在平面上绘制法向量。

  • 曲面上的法向量

    • 定义了一个曲面 z = x 2 − y 2 z = x^2 - y^2 z=x2−y2。

    • 使用 np.gradient 函数计算曲面的梯度,然后归一化得到单位法向量。

平面上的法向量

py 复制代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 定义平面
x = np.linspace(-1, 1, 10)
y = np.linspace(-1, 1, 10)
X, Y = np.meshgrid(x, y)
Z = np.zeros_like(X)

# 定义法向量
U = np.zeros_like(X)
V = np.zeros_like(Y)
W = np.ones_like(Z)  # 对于平面 z = 0,法向量为 (0, 0, 1)

# 绘制平面和法向量
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, alpha=0.5, rstride=1, cstride=1, color='c', edgecolor='none')
ax.quiver(X, Y, Z, U, V, W, color='r', length=0.1)

# 设置图形属性
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('平面上的法向量')

plt.show()

曲面上的法向量

py 复制代码
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 定义曲面
x = np.linspace(-1, 1, 10)
y = np.linspace(-1, 1, 10)
X, Y = np.meshgrid(x, y)
Z = X**2 - Y**2  # 曲面 z = x^2 - y^2

# 计算梯度
dz_dx, dz_dy = np.gradient(Z)
U, V = -dz_dx, -dz_dy  # 负梯度方向作为法向量方向
W = np.ones_like(Z)

# 归一化法向量
norm = np.sqrt(U**2 + V**2 + W**2)
U /= norm
V /= norm
W /= norm

# 绘制曲面和法向量
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, alpha=0.5, rstride=1, cstride=1, color='c', edgecolor='none')
ax.quiver(X, Y, Z, U, V, W, color='r', length=0.5)

# 设置图形属性
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('曲面上的法向量')

plt.show()
相关推荐
报错小能手16 天前
计算机网络自顶向下方法43——网络层 详解SDN控制平面
计算机网络·平面
Evand J16 天前
【MATLAB例程】二维平面上,三个雷达对一个目标跟踪,输出观测平均与UKF滤波两种算法的结果对比,附下载链接
matlab·平面·目标跟踪·滤波·卡尔曼滤波
老黄编程16 天前
三维空间平面方程
线性代数·平面
程序员大雄学编程16 天前
定积分的几何应用(一):平面图形面积计算详解
开发语言·python·数学·平面·微积分
Evand J16 天前
【MATLAB例程】二维平面的TOA定位,几何精度因子GDOP和克拉美罗下界CRLB计算与输出
开发语言·matlab·平面·crlb·gdop
wuk9981 个月前
基于有限差分法的二维平面热传导模型MATLAB实现
开发语言·matlab·平面
EQ-雪梨蛋花汤1 个月前
【裸眼3D原理浅析】使用AI生成平面裸眼3D图像——“科幻战士破框而出”的裸眼3D图背后的原理与技巧
平面·3d
Evand J1 个月前
【MATLAB例程】到达角度定位(AOA),平面环境多锚点定位(自适应基站数量),动态轨迹使用EKF滤波优化。附代码下载链接
开发语言·matlab·平面·滤波·aoa·到达角度
夜星辰20231 个月前
RK3568 MIPI 摄像头驱动的 V4L2 多平面视频格式解析
平面·摄像头格式·nv12
鼓掌MVP1 个月前
图生3D技术解析:从二维平面到立体世界的智能飞跃
平面·3d