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

如何在Plotly_go的3D投影上绘制2D布局?实现3D射门与2D球场结合

解决方案:3D射门轨迹投影到2D足球场

核心思路

把3D轨迹的三维坐标(x, y, z)投影到2D球场的平面(通常取x-y平面,忽略高度z,或按需用正交/透视投影规则计算),再将投影后的2D点集与预先绘制的2D足球场背景叠加显示。

具体实现步骤(以Matplotlib为例)

  1. 绘制2D足球场底图
    用matplotlib.patches构建标准足球场的边界、禁区、球门等元素,确保坐标范围匹配真实球场尺寸:

    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    
    # 创建画布与轴
    fig, ax = plt.subplots(figsize=(12, 8))
    
    # 绘制球场边界
    field = patches.Rectangle((0, 0), 105, 68, linewidth=2, edgecolor='green', facecolor='none')
    ax.add_patch(field)
    
    # 补充绘制中线、中圈、禁区、球门(示例简化)
    ax.plot([52.5, 52.5], [0, 68], color='green', linewidth=2)
    center_circle = patches.Circle((52.5, 34), 9.15, linewidth=2, edgecolor='green', facecolor='none')
    ax.add_patch(center_circle)
    
    # 匹配球场坐标范围
    ax.set_xlim(-5, 110)
    ax.set_ylim(-5, 73)
    ax.set_aspect('equal')
    
  2. 处理3D轨迹的投影转换
    从3D轨迹数据中提取x、y坐标作为正交投影结果;若需透视投影,可结合相机矩阵计算,足球场景下正交投影足够:

    # 替换为你的真实3D轨迹数据
    trajectory_3d = [
        (10, 34, 0.5), (20, 34, 1.2), (30, 34, 2.0), (40, 34, 1.8),
        (50, 34, 1.0), (60, 34, 0.3), (70, 32, 0.1)
    ]
    
    # 提取x、y生成2D投影点
    x_proj = [point[0] for point in trajectory_3d]
    y_proj = [point[1] for point in trajectory_3d]
    z_values = [point[2] for point in trajectory_3d]
    
  3. 叠加投影轨迹到2D球场
    在同一轴上绘制轨迹线、关键节点,可通过颜色映射保留高度信息:

    # 绘制轨迹线
    ax.plot(x_proj, y_proj, color='red', linewidth=2, label='射门轨迹投影')
    # 标记起点与落点
    ax.scatter(x_proj[0], y_proj[0], color='blue', s=100, label='射门起点')
    ax.scatter(x_proj[-1], y_proj[-1], color='orange', s=100, label='射门落点')
    # 用颜色展示射门高度
    scatter = ax.scatter(x_proj, y_proj, c=z_values, cmap='viridis', s=80)
    plt.colorbar(scatter, label='射门高度(m)')
    
    ax.legend()
    plt.show()
    

关键注意事项

  • 确保3D轨迹坐标与2D球场坐标系统对齐:比如3D数据的x/y范围要和球场尺寸匹配,避免轨迹超出球场区域。
  • 若使用现成球场图片作为背景,需通过ax.imshow()导入后调整坐标映射,让轨迹坐标与图片像素坐标对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:35:21