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

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

flyfish

  • 平面上的法向量

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

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

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

  • 曲面上的法向量

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

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

平面上的法向量

在这里插入图片描述

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()

曲面上的法向量

在这里插入图片描述

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()

相关推荐

  1. PCL:求点云在指定面上向量

    2024-07-09 23:28:03       32 阅读
  2. Unity3D 向量法线详解

    2024-07-09 23:28:03       51 阅读
  3. VCG 网格面片向量平滑

    2024-07-09 23:28:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 23:28:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 23:28:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 23:28:03       58 阅读
  4. Python语言-面向对象

    2024-07-09 23:28:03       69 阅读

热门阅读

  1. C++ 算法——二分查找

    2024-07-09 23:28:03       19 阅读
  2. Spring事务

    2024-07-09 23:28:03       20 阅读
  3. c# 基础习题答案 20240709

    2024-07-09 23:28:03       18 阅读
  4. MAC下的PDM工具

    2024-07-09 23:28:03       22 阅读
  5. Dubbo源码解析-过滤器Filter

    2024-07-09 23:28:03       22 阅读
  6. 开源大模型对比

    2024-07-09 23:28:03       27 阅读
  7. Mongodb索引的删除

    2024-07-09 23:28:03       20 阅读
  8. ubuntu minio在线安装、开机启动

    2024-07-09 23:28:03       21 阅读
  9. 正则表达式-使用笔记

    2024-07-09 23:28:03       27 阅读
  10. TensorFlow 的基本概念和使用场景

    2024-07-09 23:28:03       20 阅读
  11. Perl 语言开发(七):哈希和关联数组

    2024-07-09 23:28:03       23 阅读
  12. Linux上web服务器搭建(Apache、Nginx)

    2024-07-09 23:28:03       18 阅读