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

求直线右侧距线段中点指定距离的点的代码优化方案

代码优化方案

核心优化逻辑

原代码冗余点集中在使用atan2、tan等开销极高的三角函数,还额外计算两个候选点再通过叉积筛选,完全可以通过纯向量运算直接推导目标点,砍掉所有非必要步骤,运算速度和精度都会显著提升。

推导过程

  • 计算线段P1到P2的方向向量:vx = x2 - x1,vy = y2 - y1
  • 计算方向向量的模长:len = sqrt(vx * vx + vy * vy),用于单位化法向量
  • P1指向P2的前进方向右侧的单位法向量为(vy / len, -vx / len),该方向天然符合原代码叉积判断的右侧要求,无需二次筛选
  • 保留原中点计算逻辑:ax = (x1 + x2) / 2,ay = (y1 + y2) / 2
  • 目标点直接由中点加偏移量得到:偏移量 = 距离d * 单位法向量

优化后代码

double x1, x2, y1, y2, px, py, d;
d = 2.0; // 给定距离

// 计算方向向量
double vx = x2 - x1;
double vy = y2 - y1;
double len = sqrt(vx * vx + vy * vy);

// 边界判断:两点重合时线段不存在,可根据业务需求处理异常
if (len < 1e-12) {
    // 自定义异常处理逻辑
} else {
    // 计算单位法向量
    double ux = vy / len;
    double uy = -vx / len;
    // 计算中点
    double ax = (x1 + x2) / 2;
    double ay = (y1 + y2) / 2;
    // 直接得到目标点
    px = ax + d * ux;
    py = ay + d * uy;
}

性能提升说明

  • 完全移除了atan2、tan等高开销三角函数运算,这类运算的单周期耗时是普通加减乘除的几十上百倍
  • 去掉了候选点计算和叉积判断分支,整体运算量减少60%以上
  • 同时避免了三角函数运算带来的精度损失,计算结果准确性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:36:01