STAGE 2
長さと角度を測る
内積と外積
🎯 ミッション
2本のベクトルから角度を取り出す内積と、2本に直角な向きを作る外積を身につけよう。チート900の右脚で、膝の角度と「膝が曲がる向き」を計算し、脚が伸び切ると外積の向きが決まらなくなる理由を説明できれば合格。
未達成

ねこ博士
前のステージでは、2つの点の差でベクトル(矢印)を作り、その長さを √(x²+y²+z²) で測った。今日は2本の矢印の間の角度を測る。たとえば右膝の角度だ。膝から腰(股関節)へ向かう矢印と、膝から足首へ向かう矢印、この2本の間の角が膝の角度になる。まっすぐ伸びていれば 180°、深くたたんでいれば小さい角度だ。

うさ美
画面の上なら分度器で測れますけど、3次元の矢印だと、どの向きから見るかで角度が変わって見えてしまいます。座標の数だけで計算できるんですか?

ねこ博士
できる。まず2本の矢印を座標で表そう。どちらも膝から出る矢印だから、矢印の先の点の座標から、膝の座標を引けばいい。引く順番を逆にすると、矢印の向きが反対になってしまうので注意だ。そして、角度を測る道具が内積だ。2つのベクトルの同じ成分どうしを掛けて足したものを内積と決め、記号は a・b と書く。答えは矢印ではなく、ただの1つの数だ。
膝から股関節への矢印:a = (股関節の座標) − (膝の座標) = (ax, ay, az)
膝から足首への矢印:b = (足首の座標) − (膝の座標) = (bx, by, bz)
内積:a・b = axbx + ayby + azbz
例:a=(1, 2, 0)、b=(3, −1, 2) なら a・b = 1×3 + 2×(−1) + 0×2 = 1

うさ美
掛けて足すだけなら計算は簡単です。でも、それがどうして角度と関係するんですか?

ねこ博士
ある式を確かめると分かる。2本の矢印 a と b の先を結ぶ矢印は a−b だね。その長さの2乗 |a−b|² を、成分で書いて展開してみてくれないか。|a| は a の長さという意味だ。

うさ美
|a−b|² = (ax−bx)² + (ay−by)² + (az−bz)²。1つ目を展開すると ax² − 2axbx + bx² です。3つとも展開して並べ替えると、(ax²+ay²+az²) + (bx²+by²+bz²) − 2(axbx+ayby+azbz)。最初の2つのかっこは |a|² と |b|²、最後のかっこは内積なので、|a−b|² = |a|² + |b|² − 2 a・b になりました。

ねこ博士
そう。この式を「内積=……」の形に直すと、a・b = (|a|²+|b|²−|a−b|²)÷2。右辺には長さしか出てこない。長さは、2本の矢印を形を変えずに丸ごと回したり動かしたりしても変わらない。だから内積も、図形を丸ごと回しても変わらない。ということは、いちばん計算しやすい向きに回してから計算してもいい。2本の矢印が作る平面を x と y の平面に重ね、a を x の向きにそろえてしまおう。a と b の間の角を θ とすると、a と b の成分はどうなる?

うさ美
a は x の向きなので (|a|, 0, 0)。b は x の向きから角度 θ だけ回った向きで、長さ |b| だから、『本当はおもしろい複素数の世界』で習った cos・sin で (|b| cos θ, |b| sin θ, 0) です。内積は |a|×|b| cos θ + 0 + 0 = |a| |b| cos θ……角度が出てきました!

ねこ博士
それが内積のいちばん大事な性質だ。逆に使えば、成分から内積と2つの長さを計算するだけで cos θ が分かる。cos θ から角度 θ に戻す計算は、関数電卓やコンピュータの arccos(アークコサイン)という機能がやってくれる。
内積と角度:a・b = |a| |b| cos θ
逆に使う:cos θ = a・b ÷ (|a| |b|) → θ = arccos(cos θ)
「a を回す」で2本の矢印を丸ごと回しても、成分の掛け算の和で出した内積は変わらず、いつも |a||b|cos θ と同じになる。点線は b の「a の向きへの影」。θ が 90° を越えると影は反対側へ伸び、内積はマイナスになる

うさ美
θ が 90° のとき、内積はぴったり 0 になりました。90° より大きいとマイナスです。

ねこ博士
cos 90°=0 だからね。内積が 0 なら2本は直角、プラスなら鋭角、マイナスなら鈍角だ。もう1つ、図の点線に注目してほしい。a の長さが1のとき、a・b = |b| cos θ は、b を a の向きへ落とした影の長さになる。たとえば x の向きの長さ1の矢印 (1, 0, 0) と点 p の内積は、p の x 座標そのものだ。座標とは、軸の向きの矢印との内積だと言い換えられる。この見方は、骨盤から見た座標(ステージ3)や、カメラに写す計算(ステージ9)でもう一度使う。

うさ美
では、実際の右膝の角度を計算してみたいです。

ねこ博士
よし。膝から股関節へのベクトルを t(太もも)、膝から足首へのベクトルを s(すね)として、cos θ = t・s ÷ (|t| |s|) から角度を出す。下の図でコマを動かしてごらん。
赤が右脚。膝から股関節への t(太もも)と、膝から足首への s(すね)から、内積で膝の角度を計算する。紫の矢印は外積 t×s(見やすいように長さを2倍強にして描いている)。インパクト(約 1.32 秒)の前後で脚が伸び切ると、紫の矢印がほとんど消える。図はドラッグで回せる

うさ美
踏み切りのあとは膝が 70° くらいまで曲がって、インパクトの 1.32 秒ごろに 177° まで伸びています。数の表だけで膝の角度が分かるんですね。紫の矢印は何ですか?

ねこ博士
それが今日の2つ目の道具、外積だ。膝の角度が分かっても、膝がどちら向きに曲がっているかはまだ分からない。膝は蝶番(ちょうつがい)のように、決まった軸のまわりでしか曲がらない。その軸は、太ももとすねの両方に直角な向きだ。2本のベクトルの両方に直角な矢印を作る計算が外積で、記号は a×b と書く。内積と違って、答えはベクトルだ。
外積:a×b = (aybz − azby, azbx − axbz, axby − aybx)

うさ美
式が複雑です。本当に a にも b にも直角になるんですか? さっきの a=(1, 2, 0)、b=(3, −1, 2) で a×b を計算して、a との内積と b との内積を確かめてみます。……どちらも 0 なので、両方と直角です。
a×b:(2×2 − 0×(−1), 0×3 − 1×2, 1×(−1) − 2×3) = (4, −2, −7)
a との内積:1×4 + 2×(−2) + 0×(−7) = 0
b との内積:3×4 + (−1)×(−2) + 2×(−7) = 0

ねこ博士
うまく確かめられたね。文字のまま a・(a×b) を展開しても、項が2つずつ打ち消し合ってぴったり 0 になる。外積にはあと2つ、大事な性質がある。長さは |a| |b| sin θで、これは a と b を2辺とする平行四辺形の面積に等しい。向きは右手の規則で決まる。右手の親指を a、人差し指を b の向きに合わせると、中指を立てた向きが a×b だ。だから順番を入れ替えると向きが逆になり、b×a = −(a×b)。
a と b を2辺とする平行四辺形の面積は「底辺 |a| × 高さ |b| sin θ」。外積 a×b は、長さがこの面積、向きは面に直角(右手の規則)。a と b が同じ向き・反対向き(θ が 0° か 180°)のときは平行四辺形がつぶれて面積 0、外積も長さ 0 になる

うさ美
平行四辺形がつぶれると外積の長さが 0……。ということは、脚がまっすぐ伸び切って、太ももとすねが一直線になると、外積はほとんど 0 になってしまいます。さっきの図で、インパクトの前後で紫の矢印が消えかけていたのはそのせいですか?

ねこ博士
その通り。そして、ここに落とし穴がある。外積の長さがほとんど 0 のときは、点の位置がほんの数 mm ずれるだけで、外積の向きがくるっと変わってしまう。長さ 1 m の棒の向きは少し押しても変わらないが、長さ 1 mm の棒は少し押しただけで反対を向くのと同じだ。

うさ美
向きが変わると、何が困るんですか?

ねこ博士
このアニメーションを作るとき、インパクトの瞬間に膝を伸ばし切る計算を、外積で求めた「膝の蝶番の軸」のまわりに、すねを回して行っていた。ところが脚がほぼ伸び切ったコマでは、その軸の向きが1コマおきに裏返ってしまい、つま先が1コマごとにジグザグに動くという不具合が出た。どう直したかはステージ5で話そう。今日の大事な点は、外積の向きは、外積が短いときには信用できないということだ。
💡 内積と外積の使い分け内積:答えは数。2本の間の角度(cos θ)や、ある向きへの影の長さ(成分)を知りたいときに使う。
外積:答えはベクトル。2本の両方に直角な向き(回転の軸や、面の向き)と、2本が作る平行四辺形の面積(sin θ)を知りたいときに使う。2本がほぼ平行なときは向きが不安定になる。
外積:答えはベクトル。2本の両方に直角な向き(回転の軸や、面の向き)と、2本が作る平行四辺形の面積(sin θ)を知りたいときに使う。2本がほぼ平行なときは向きが不安定になる。
【このステージの成果】
内積:a・b = axbx+ayby+azbz = |a| |b| cos θ(|a−b|² = |a|²+|b|²−2 a・b と、回しても長さが変わらないことから)
角度:cos θ = a・b ÷ (|a| |b|)。内積 0 なら直角、プラスなら鋭角、マイナスなら鈍角。膝の角度は、膝→股関節と膝→足首の2本から
長さ1の矢印との内積は、その向きへの影の長さ(成分)。座標は軸の向きの矢印との内積
外積:a×b = (aybz−azby, azbx−axbz, axby−aybx)。a と b の両方に直角、長さは |a| |b| sin θ(平行四辺形の面積)、向きは右手の規則、b×a = −(a×b)
膝の曲がる軸=太もも×すね。脚が伸び切ると外積がほぼ 0 になり、向きが不安定になる(つま先のジグザグの原因)
確認クイズ
Q1. a=(1, 2, 0)、b=(3, −1, 2) の内積 a・b は?
正解! 同じ成分どうしを掛けて足す:1×3 + 2×(−1) + 0×2 = 3 − 2 + 0 = 1。
Q2. 2本のベクトルの内積が 0 のとき、2本の間の角度は?
正解! a・b = |a| |b| cos θ が 0 で、長さが 0 でなければ cos θ = 0、つまり θ = 90°。
Q3. 脚がまっすぐ伸び切ったとき、太もも×すね(外積)はどうなる?
正解! 外積の長さは |a| |b| sin θ。一直線(θ=180°)では sin θ = 0 なので長さ 0。長さがほぼ 0 のときは、点のわずかなずれで向きが裏返ってしまう。