0

Core Graphics を使用して簡単な線を描く方法を知っています。ここで、測定のために寸法線を引く必要があります。私が描く必要があるもの(赤)の例については、下の画像を参照してください。一番上の線は簡単ですが、対角線に垂線を引くには数学が必要なので、今のところ理解するのに苦労しています.

各主線は、始点として (x,y) を持ち、終点として (x1,y1) を持ちます。次に、各点 (x,y) と (x1,y1) で交差する垂線を引く必要があります。

これらの垂線の点を計算するために必要な計算は何ですか?

ここに画像の説明を入力

4

1 に答える 1

5

次のコードは、 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);

p12 番目のマーカー ラインについては、代わりに を使用して最後の計算を繰り返しpます。

于 2013-08-02T19:39:52.090 に答える