贝塞尔曲线一分为二(拆分)

71 阅读1分钟

我直接按照t=0.5时刻求解的,这个是二阶贝塞尔曲线,拆分成两条,轨迹和原曲线完全重合。

  let P0 = { x: 445, y: 660 };
  let P1 = { x: 50, y: 665 };
  let P2 = { x: 355, y: 670 };
  let E = { x: (P0.x + P1.x) / 2, y: (P0.y + P1.y) / 2 };
  let I = { x: (P1.x + P2.x) / 2, y: (P1.y + P2.y) / 2 };
  let M = { x: (P2.x + P1.x) / 2, y: (P2.y + P1.y) / 2 };
  let center = { x: (E.x + I.x) / 2, y: (E.y + I.y) / 2 };
  
 let graphical = new PIXI.Graphics();
 graphical.moveTo(445, 660);
 graphical.quadraticCurveTo(50, 665, 355, 670, true);
 graphical.stroke({ width: 6, color: 0x2F1609 });
 let aaa = new PIXI.Graphics();
 aaa.moveTo(445, 660)
 aaa.quadraticCurveTo(E.x, E.y, center.x, center.y);
 aaa.quadraticCurveTo(M.x, M.y, P2.x, P2.y);
 aaa.stroke({ width: 3, color: 0xff0000 });

graphical和aaa画出来的结果是一样的。