You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用matplotlib将3D曲面转换为指定y轴取值下的2D线图

解决方案

你的每个曲面都是由y坐标固定为114.5和1535.5的两条边构成的双线性平面,我们可以通过线性插值快速计算任意y值下的截线坐标:

  • 对每个曲面,先获取y方向的上下边界值y_low=114.5、y_high=1535.5
  • 计算插值系数t = (目标y值 - y_low) / (y_high - y_low)
  • 用t分别对上下边的x、z坐标做线性插值,得到截线的两个端点
  • 把每个曲面的截线绘制在同一张2D图上即可得到目标意大利面图

以下是可直接运行的完整代码:

import numpy as np
import matplotlib.pyplot as plt

# 原始点数据
points = np.array ([[[472.983284, 114.5,-1792.],
        [720.65216064, 1535.5, -1792.],
        [1500.20385742, 1535.5, -1008.],
        [1252.39562988, 114.5, -1008.]],
       [[590.38764954, 114.5, -1792.],
        [652.08530426, 1535.5, -1792.],
        [1405.10574341, 1535.5, -1008.],
        [1343.39660645, 114.5, -1008.]],
       [[679.80918884, 114.5, -1792.],
        [568.60767365, 1535.5, -1792.],
        [1323.85253906, 1535.5, -1008.],
        [1435.00518799, 114.5, -1008.]]])

# 自定义目标y值,可任意修改
target_y = 114.5
# 验证y值是否在曲面的y范围内
y_min, y_max = 114.5, 1535.5
if not (y_min <= target_y <= y_max):
    raise ValueError(f"目标y值需在[{y_min}, {y_max}]范围内")

# 计算插值系数
t = (target_y - y_min) / (y_max - y_min)

plt.figure(figsize=(8, 4))
# 遍历每个曲面计算截线
for idx, surf in enumerate(points):
    # 取y=114.5边的两个点(点0和点3)、y=1535.5边的两个点(点1和点2)
    low_p1, low_p2 = surf[0], surf[3]
    high_p1, high_p2 = surf[1], surf[2]
    # 线性插值得到截线的两个端点
    cut_p1_x = low_p1[0] * (1 - t) + high_p1[0] * t
    cut_p1_z = low_p1[2] * (1 - t) + high_p1[2] * t
    cut_p2_x = low_p2[0] * (1 - t) + high_p2[0] * t
    cut_p2_z = low_p2[2] * (1 - t) + high_p2[2] * t
    # 绘制截线,label可选,方便区分不同曲面
    plt.plot([cut_p1_x, cut_p2_x], [cut_p1_z, cut_p2_z], label=f'曲面{idx+1}', linewidth=2)

plt.xlabel('X')
plt.ylabel('Z')
plt.title(f'y={target_y}处曲面截线图')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

效果说明

当target_y=114.5时,插值系数t=0,计算结果就是y=114.5边的原始点坐标,和参考效果图完全一致。如果修改target_y为其他有效值(比如800),就能得到对应y值的截线图。如果需要生成多组y值的截线叠加图,只需要在外层加一层target_y的循环,给不同y值的曲线设置不同颜色或透明度即可。

内容的提问来源于stack exchange,提问作者Link_tester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:54:04