0

2 つの点と、両方の点に属する角度から始めます。私が残した唯一の部分は最後のポイントであり、これを力ずくで通り抜けたくありません。これまでのところ、以下にリストされているすべての情報があります。

  • ポイントA:与えられた
  • ポイントB:与えられた
  • ポイント C: (?, ?)
  • 角度 A: (点 A で) 与えられ、角度 B と同じ
  • 角度 B: (ポイント B で) 与えられ、角度 A と同じ
  • 角度 C: 180 - 角度*2~ (ポイント C)
  • サイド AB: 距離 (ポイント ~ A & ポイント ~ B)
  • Side AC: (Side~AB * Math.sin(Angle~A)) / Math.sin(Angle~C)
  • Side BC: (Side~AB * Math.sin(Angle~B)) / Math.sin(Angle~C)

私がこれまでに持っているコードはほとんどこれです: (ヒント: p はポイント、a はアングル、d はサイドです。1 は A、2 は B、3 は C です。コードが読みにくいことはわかっています。しかし、それは私の最初のドラフトです。)

public static Point solve(Point p1, Point p2, double angle)
{
  //known
  double a1 = angle;
  double a2 = angle;
  double d12 = p1.distance(p2);
  //mathed
  double a3 = 180 - (angle*2);
  double d13 = (d12*Math.sin(a1))/Math.sin(a3);
  double d23 = (d12*Math.sin(a2))/Math.sin(a3);
  //mathed, mathed.
  Point p3 = null;
  return p3;
}
4

3 に答える 3

4

P を AB セグメントの中心、P = ( A + B ) / 2とします。

この場合、PC ベクトルは AP に垂直で、PC の長さは | パソコン| = | AP | AP | / Tg(角度)、Tg = タン = タンジェント

Tg(角度) = t としましょう

最初の条件 (perp ベクトルの内積): PCx*APx+PCy*APy=0

2 つ目 (長さの 2 乗): t^2*(PCx*PCx+PCy*PCy) = APx*APx+APy*APy

このシステムの解 (2 つの解、C ポイントは AB 線の異なる側にある可能性があります):

PCx = +- APy/t

PCy = -+ APx/t

気をつけてください:標識は反対でなければなりません!

そして最後に:

Cx = Px + PCx = Ax/2 + Bx/2 +- Ctg(角度)/2 * (Ay + By)

Cy = Py + PCy = Ay/2 + By/2 - + Ctg(角度)/2 * (Ax + Bx)

最初のポイント:

Cx1 = Ax/2 + Bx/2 + Ctg(角度)/2 * (Ay + By);

Cy1 = Ay/2 + By/2 - Ctg(角度)/2 * (Ax + Bx);

2 番目のポイント:

Cx2 = Ax/2 + Bx/2 - Ctg(角度)/2 * (Ay + By);

Cy2 = Ay/2 + By/2 + Ctg(角度)/2 * (Ax + Bx)

于 2012-07-05T06:42:44.690 に答える
1

AB の中心を通って AB に垂直な線を引くと、点 C と交差します。この線がセグメント AB と交差する点を D と呼びます。この線を x 軸に、D を原点に、AD をY軸

^ y
|
| A
o
|\
| \
|  \
|   \ C
o----o-----> x
D

長さ DC を計算したら、C を元の座標空間に射影するのは簡単です。

  1. 角度 C = 90 - 角度 A
  2. AC * cos 角度 C = DC
  3. DC = AC * cos (90 - 角度 A)
于 2012-07-05T03:25:46.560 に答える
0

これがうまくいくことを願っています。P1 = (-10,0)、P2 = (10, 0)、角度 = 45 度の例では、私は (0, +-10) が最終的な答えを持っていますが、これは正しいですか?

Mid Point = ( (x1+x2)/2, (y1+y2)/2)
Slope Angle = arcTan(m) = arcTan((y2-y1) / (x2-x1))
Perpendicular Angle = Slope Angle +- 90
Distance = (distance(P1 & Mid Point)/sin(90-Angle)) * sin(Angle)

P3 = (cos(Perpendicular Angle)*Distance + Mid Point.x , sin(Perpendicular Angle)*Distance + mid Point.y)

私がこれを取得した方法は、距離の R を持つ単位円であり、次に直角に移動し、x に cos を使用し、y に sin を使用します。MidPoint が 90 度である三角形の半分 (P1、Mid Point、P3) で正弦の法則によって距離を取得しました。

これについてアドバイスをお願いします。よろしくお願いします ~vzybilly~

于 2012-07-06T17:48:38.843 に答える