次のコードは、 from から までの直線に垂直な長さ 1 のベクトルを計算しp = (x, y)
ますp1 = (x1, y1)
。
CGPoint p = CGPointMake(x, y);
CGPoint p1 = CGPointMake(x1, y1);
// Vector from p to p1;
CGPoint diff = CGPointMake(p1.x - p.x, p1.y - p.y);
// Distance from p to p1:
CGFloat length = hypotf(diff.x, diff.y);
// Normalize difference vector to length 1:
diff.x /= length;
diff.y /= length;
// Compute perpendicular vector:
CGPoint perp = CGPointMake(-diff.y, diff.x);
次に、その垂直ベクトルの倍数を最初のポイントに加算および減算して、最初のマーカー ラインの終点を取得しますp
。
CGFloat markLength = 3.0; // Whatever you need ...
CGPoint a = CGPointMake(p.x + perp.x * markLength/2, p.y + perp.y * markLength/2);
CGPoint b = CGPointMake(p.x - perp.x * markLength/2, p.y - perp.y * markLength/2);
p1
2 番目のマーカー ラインについては、代わりに を使用して最後の計算を繰り返しp
ます。