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

使用bezier.js检测贝塞尔曲线与直线交点无结果的问题

贝塞尔曲线与直线交点检测无结果的问题修复
  • 问题根源:创建Bezier实例时传入了未定义的变量x1,x2,c1,c2,y1,y2,导致贝塞尔曲线实例初始化错误,无法正确执行交点检测逻辑。你的controlPoints数组已经给出了二次贝塞尔曲线的三个点(起点、控制点、终点),但没有正确传递给构造函数。

  • 修正后的代码:

const controlPoints = [450,50,300,183,150,150];
const line = { p1: {x: 400, y: 0}, p2: {x: 400, y: 100} }

const intersectionPoints = [];

// 正确传递贝塞尔曲线的控制点参数
const bezierCurve = new Bezier(...controlPoints);
console.log(bezierCurve); // 可打印实例确认初始化是否正确
const intersections = bezierCurve.lineIntersects(line);
if (intersections.length > 0) {
   for (let e = 0; e < intersections.length; e++) {
      let n = intersections[e],
          t = bezierCurve.get(n);
      intersectionPoints.push(t);
   }
}
console.log("Intersection Points:", intersectionPoints);

return intersectionPoints;
  • 说明:
    二次贝塞尔曲线的Bezier构造函数需要传入6个参数,对应起点x, 起点y, 控制点x, 控制点y, 终点x, 终点y,你的controlPoints数组正好符合这个格式,用扩展运算符...直接传入即可。修正后,代码会正确计算出曲线与直线x=400的交点(约{x:400, y:93}左右)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:32:37