2017-08-09 1 views
1

A quick math question in unity

上の2点の位置を取得する公知の因子はO(円の中心)、R(半径)、及びXの位置(自然XとOとの間の距離)です。

私がここに必要とするのは、常に完全に垂直または水平の直線の交点です。サークルはコライダーではなく、表示するための視覚的な表現です。これのもう1つの事実は、Xは常に円の範囲内(半径内)にあり、x1とx2の両方が常にOからの半径距離にあることを意味します。

私は試してみると本当にうんざりしますコーディングを用いて既知の数学的方程式を利用することができ、これは変わらない。 X = (X.x, X.y):私が正しくあなたの問題を理解していれば

答えて

3

Xは、位置が知られているサークル内の「ランダム」のポイントです。

円にX1X2を知りたい場合は、(X1X2)が縦線になるようにします。あなたはを知りますこれらのポイントのabsiccaはX.xです。 A = (O.x + r * cos θ, O.y + r * sin θ)

  • Oが円
  • rの起源であるが、あなたのサークル
  • の半径である

    あなたは確かに円上の点の座標は次のように定義することができることを知っていますθは、ラジアン単位の角度です。

したがって、あなたがθ1を知ったら

X.x = O.x + r * cos θ1 
<=> cos θ1 = (X.x - O.x)/r <=> θ1 = arcos((X.x - O.x)/r) 

を意味

X1 = (O.x + r * cos θ1, O.y + r * sin θ1) = (X.x, O.y + r * sin θ1) 

は、コンピューティングsin θ1X1.yはケーキの一部です。

コンピューティングX2は非常に簡単です。縦座標を反転するだけです。


(X1X2)水平ラインである場合は、X1X2の座標を知っている:

ここ
X1 = (O.x + r * cos θ1, O.y + r * sin θ1) = (O.x + r * cos θ1, X.y) 

    X.y = O.y + r * sin θ1 
<=> sin θ1 = (X.y - O.y)/r <=> θ1 = arcsin((X.y - O.y)/r) 

、あなたがabsiccaを反転させる必要がありX2を取得します。

+0

O.o Whoa ....あなたは完全に理解していると思います! これでコーディングするつもりです!まことにありがとうございます! –