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

基于角度与半径计算Google Maps路径转弯的笛卡尔坐标点

基于转弯半径的折线拐点平滑方案(Google Maps JS API)

针对你要实现的车辆转弯路径模拟需求,以下是近似计算P1、P2和贝塞尔参考点的实用方法(无需高精度,满足大致引导曲线即可):

前提定义

  • 拐点:B(原折线A→B→C的转角点)
  • 折线两端点:A、C
  • 内角:a(∠ABC的角度,单位:弧度)
  • 转弯半径:r

步骤1:计算单位方向向量

从拐点B出发,计算指向A和C的归一化单位向量(长度为1):

// 笛卡尔坐标下的向量计算
const v1 = { x: A.x - B.x, y: A.y - B.y };
const len1 = Math.sqrt(v1.x**2 + v1.y**2);
const u1 = { x: v1.x / len1, y: v1.y / len1 }; // 指向A的单位向量

const v2 = { x: C.x - B.x, y: C.y - B.y };
const len2 = Math.sqrt(v2.x**2 + v2.y**2);
const u2 = { x: v2.x / len2, y: v2.y / len2 }; // 指向C的单位向量

步骤2:计算曲线起止点P1、P2

P1是BA线段上距离B点r的点,P2是BC线段上距离B点r的点:

// P1:从B向A方向移动r距离
const P1 = { x: B.x + u1.x * r, y: B.y + u1.y * r };
// P2:从B向C方向移动r距离
const P2 = { x: B.x + u2.x * r, y: B.y + u2.y * r };

步骤3:计算贝塞尔曲线的绿色参考点

参考点需落在转弯内侧区域,通过角平分线偏移方式近似计算:

  1. 计算角平分线的单位向量(指向转角内侧):
    // 角平分线方向向量(u1 + u2),再归一化
    const bisector = { x: u1.x + u2.x, y: u1.y + u2.y };
    const bisectorLen = Math.sqrt(bisector.x**2 + bisector.y**2);
    const uBisector = { x: bisector.x / bisectorLen, y: bisector.y / bisectorLen };
    
  2. 从B点沿着角平分线反方向(转角内侧)移动r距离,得到参考点G:
    // 反方向移动,所以乘以-1;若内角a为钝角(>180°)则去掉负号
    const G = { 
      x: B.x + uBisector.x * (-r), 
      y: B.y + uBisector.y * (-r) 
    };
    

最终曲线绘制

用二次贝塞尔曲线连接P1 → G → P2,再将A→P1和P2→C用直线连接,即可得到近似的转弯路径。

简化版(更粗略但够用)

如果不需要精准度,可直接将B点向转角内侧移动r距离作为参考点,偏移方向用(u1.x + u2.x, u1.y + u2.y)的归一化向量即可,省去角度计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:42:41