ベジェを使用して、必要なカーブを作成できます。コントロールポイントは、開始ポイントと終了ポイントでカーブタンジェントを定義します。したがって、角度を始点と終点に設定するには、制御点を角度に沿って定義するだけです。
データ
var x1 = ?; // in pixels
var y1 = ?;
var x2 = ?
var y2 = ?;
var ang1 = ?; // in radians
var ang2 = ?
角度のためのベクターを入手ライン
var len = Math.hypot(x2-x1,y2-y1);
の長さを取得し、次に描くの約1/3日len
var ax1 = Math.cos(ang1) * len * (1/3);
var ay1 = Math.sin(ang1) * len * (1/3);
var ax2 = Math.cos(ang2) * len * (1/3);
var ay2 = Math.sin(ang2) * len * (1/3);
に延長
ctx.beginPath();
ctx.moveTo(x1,y1);
ctx.bezierCurveTo(
x1 + ax1, y1 + ay1,
x2 - ax1, y2 - ay2,
x2, y2
);
ctx.stroke();
角度は同じ方向でなければならないことに注意してください。そうでなければ、カーブは終点を過ぎて戻ります。
それはいくつかのコードなしで数学的な問題です、あなたが試みました。 –
[ベジエ曲線](https://en.wikipedia.org/wiki/B%C3%A9zier_curve) – ASDFGerte
このような曲線を直線セグメントと円弧から作成することができます。直線は円弧に接します。参加する。 – dmuir