2

外積の大きさは、外積を構築するために使用される 2 つのベクトル (u、v) によって表される平行四辺形の符号付き面積を表します。それには用途があります。この同じ大きさは、u の大きさ x v の大きさ x u と v の間の角度のサインとして計算できます: ||u||||v||sin(theta)。

u (正規化) と v (正規化) の内積は、u と v の間の角度のコサインを与えます: cos(theta)==dot(normalize(u), normalize(v))

コサイン値に関連する符号付きサイン値を取得できるようにしたいと考えています。正弦波と余弦波が PI/2 同期していないため、関連しています。1 の平方根から余弦値の 2 乗を引いたものが符号なし正弦値を与えることはわかっています: sin(theta)==sqrt(1 - (cos(theta) * cos(theta))角度ではありません。

しかし、随伴符号の計算 (+/-) には、角度としてシータが必要です: (cos(シータ + PI / 2)) > または == または < 0 acos 関数を実行する必要がある場合は、外積を実行するだけでよいでしょう。そして大きさを求めます。

コサイン値に追加して関連するサイン値を取得できる既知の比率またはステップはありますか?

4

3 に答える 3

1

可能なコサインごとに、対応する角度が制限されていない場合、サインに対して両方の符号が可能です。

角度が の間[0,pi]であることがわかっている場合、正弦は正またはゼロでなければなりません。

平行四辺形の面積を知りたい場合は、常に正の分岐を取りsin(x) = sqrt(1 - cos(x)^2)ます。負の領域が意味をなすことはめったにありません (背面カリングなどの平面に対する向きを定義する場合のみ)

2 つのベクトルがある場合は、クロス積または内積を直接使用し、他のベクトルを使用して変換しません。

于 2012-10-15T21:15:46.403 に答える
0

atan2アイデンティティに到達するための複雑な方法のように私には思えます:

d =   · = ||||cosθ
c = |×| = ||||sinθ   (with 0° < θ < 180°)

 tanθ = · / |×|
    θ = atan2(c·sgn(c|z), d)   (= four quadrant)

ここsgn(c|z)で、 は c の z 成分の符号です ( と の両方が xz または yz 平面と正確に平行でない限り、それぞれ y 成分と x 成分の符号です)。

さて、基本的な三角定理から、

r = √(x²+y²)

cos(atan2(y,x)) = x/r
sin(atan2(y,x)) = y/r

したがって、

sinθ = c·sgn(c|z)/√(c²+d²)
cosθ = d/√(c²+d²)
于 2012-10-16T13:50:40.143 に答える
-2

私は解決策を見つけたと思います。 v perp

cos(b) == sin(a)

v_parallel = dot(normalize(u), v) // the projection of v on u

v_perp = normalize(v) - v_parallel

cos(b) = dot(normalize(v), v_perp) // v_perp is already normalized

したがって、

u cross v = magnitude(u) * magnitude(v) * cos(b)
于 2012-10-16T00:25:12.583 に答える