【3D】カメラを原点に向ける
Posted: 2012年8月27日(月) 18:53
Dev-C++5.2.0.3(gcc4.7.0)、Windows Vista SP2 32ビットです。
3Dの描画の実験をしています。
カメラに、原点を中心とした球上を移動し、常に原点を見る、ということをさせたいです。
適当に書いてみたのですが、うまくいきませんでした。
softyaさんに作っていただいたライブラリを改造したライブラリを使用しています。
カメラの定義はこうなっています。
位置と方向の計算部分は、このようになっています。
カメラを球上で動かすことには(多分)成功しているので、
あとはカメラの角度を適切に計算できればいいと思います。
このページを見つけましたが、
知らない関数と難しい用語があって理解できませんでした。
http://marupeke296.com/DXG_No56_CameraBaseTrans.html
どのように計算すればいいのでしょうか?
教えていただければ幸いです。
よろしくお願いします。
現段階のプロジェクト一式を添付します。
3Dの描画の実験をしています。
カメラに、原点を中心とした球上を移動し、常に原点を見る、ということをさせたいです。
適当に書いてみたのですが、うまくいきませんでした。
softyaさんに作っていただいたライブラリを改造したライブラリを使用しています。
カメラの定義はこうなっています。
/*
x,y,z:座標
cx:縦の首振り(正=上)
cy:横の首振り(正=右)
cz:回転(正=時計回り)
genkai:視野(ピクセル)
genkaiangle:視野(角度)
centerx,centery:中心の座標(二次元)
*/
typedef struct {
double x,y,z;
double cx,cy,cz;
double genkai,genkaiangle;
double centerx,centery;
double matrix[4][4];
} camera_t;
camera.cy=-dec2rad(xangle);
camera.cx=-dec2rad(yangle);
camera.z=-500*cos(-camera.cx);
camera.y=-500*sin(-camera.cx);
camera.x=-camera.z*sin(-camera.cy);
camera.z=camera.z*cos(-camera.cy);あとはカメラの角度を適切に計算できればいいと思います。
このページを見つけましたが、
知らない関数と難しい用語があって理解できませんでした。
http://marupeke296.com/DXG_No56_CameraBaseTrans.html
どのように計算すればいいのでしょうか?
教えていただければ幸いです。
よろしくお願いします。
現段階のプロジェクト一式を添付します。