FreeStyleWiki

数学

このエントリーをはてなブックマークに追加

[数学]

数学

OpenGL機械学習関連でやらないとわからないのでメモ書き

  課題

2点間の距離

  • ある2点の座標を求める
    • center(0, 0, 0)camera(0, 0 (center.yと同じ), Z)
    • centerとcameraの距離 forcalLength = 5f が決まっている
    • forcalLengthが可変であってもcamera.zを求めたい
  • x座標とy座標は2点とも同じことを考慮すると
    • \( \sqrt{(z_1-z_2)^2} = focalLength \)
    • center.z = 0 で決まっているので
    • \( \sqrt{(0-z_2)^2} = focalLength \)
    • \( (0-z_2)^2 = focalLength^2 \)
    • \( z_2 = -focalLength \)

図にしてみた

マウスを横に動かしたときの回転する角度

  • 画面中のマウスカーソルを左右に動かした際、その左右の動きの距離をxposDelta
  • 視点(カメラ)から対象の位置の距離をfocalLengthとしたとき
    • 動かした角度はいくつになるか?

\( theta = tan^{-1} ( xposDelta / focalLength ) \)

  • ここで、角度だけしか出してないのはカメラの座標をrotateY(=Y軸中心に回転)させればよいからである

マウスを縦に動かしたときの回転する角度とカメラの座標

  • 画面中のマウスカーソルを上下に動かした際、その上下の動きの距離をyposDelta
  • 視点(カメラ)から対象の位置の距離をfocalLengthとしたとき
    • 動かした角度とカメラの座標はどうなるか?
    • よく考えたら向き以外は横の場合と同じで、角度を求めてrotateX, rotateZすれば良さそう