1

デカルト座標系の直線ABを考えてみましょう。線の長さはdです。

必要なもの:

線の方向を表すために、点 B に矢印を描きたいと思います。

私が試したこと:

Bのいくつかのx点の前に、線ABに配置された点Cを見つけました。次に、線CBに対して90度の点(PとQ)を見つけようとしました。しかし、それは私にはうまくいきません。

この画像を参照してください: ここに画像の説明を入力 この複雑な手順を実行するのではなく、正しい矢印を正しい方向に描くために線の方向を見つける他の方法はありますか?

線はどの方向にもある可能性があることに注意してください。私が持っているのは、ポイント A と B だけです。

4

1 に答える 1

4
  1. 線の点を見つけるにはどうすればよいですか - Objective c? 複雑すぎます。ペアの代わりに使用すると、少し見栄えが良くなります。CGPoint(x, y)

  2. 質問には 1 つの入力パラメーターがありません。たとえば、 CからBまでの距離など、矢印の目的のサイズです。

そうは言っても、次の計算が役立つはずです。

// Your points A and B:
CGPoint A = CGPointMake(x1, y1);
CGPoint B = CGPointMake(x2, y2);

// Vector from A to B:
CGPoint AB = CGPointMake(B.x - A.x, B.y - A.y);

// Length of AB == distance from A to B:
CGFloat d = hypotf(AB.x, AB.y);

// Arrow size == distance from C to B.
// Either as fixed size in points ...
CGFloat arrowSize = 10.;
// ... or relative to the length of AB:
// CGFloat arrowSize = d/10.;

// Vector from C to B:
CGPoint CB = CGPointMake(AB.x * arrowSize/d, AB.y * arrowSize/d);

// Compute P and Q:
CGPoint P = CGPointMake(B.x - CB.x - CB.y, B.y - CB.y + CB.x);
CGPoint Q = CGPointMake(B.x - CB.x + CB.y, B.y - CB.y - CB.x);

Pは、最初にベクトルCB = (CB.x, CB.y) を減算し、次に垂直ベクトル (-CB.y, CB.x) を加算することによって、 Bから計算されます。

于 2012-10-03T14:27:16.190 に答える