FreeStyleWiki

数学

[数学]

数学

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

  課題

2点間の距離

  • ある2点の座標を求める
    • center(0, 0, 0)camera(0, 0 (center.yと同じ), Z)
    • centerとcameraの距離 forcalLength = 5f が決まっている
    • forcalLengthが可変であってもcamera.zを求めたい
  • x座標とy座標は2点とも同じことを考慮すると
    • %5Csqrt%7B%28z%5F1%2Dz%5F2%29%5E2%7D+%3D+focalLength+
    • center.z = 0 で決まっているので
    • %5Csqrt%7B%280%2Dz%5F2%29%5E2%7D+%3D+focalLength+
    • %280%2Dz%5F2%29%5E2+%3D+focalLength%5E2+
    • z%5F2+%3D+%2DfocalLength+

図にしてみた

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

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

theta+%3D+tan%5E%7B%2D1%7D+%28+xposDelta+%2F+focalLength+%29+

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

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

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