3D-CGを表示するためのビューワー。未完成です。
投影面として円柱面に投影する方式である。
いちおう、三角関数などを使って計算している。
正確には逆三角関数を使って、角度を算出し、基準の角度との比率から、画像の拡大率などを計算している。
また、角度を求めるために、高校数学レベルの、ベクトルの余弦定理を使っている。
ソースコード内では、ベクトル内積などの計算を見やすくするため、変数の宣言でむりやり、 ベクトルのような物を定義したり、ベクトルの絶対値のようなものを定義したりしている。
構造体とかでも作れるのかもしれないけど、今のところベクトルや行列などの定義としては構造体は使ってない。
Win10 でビルドすれば動くことを確認しています。
Win7 でも過去に動きましたが、win7のサポート停止にともない、2019年10月以降は本ビューアーも今後はwin7のサポート停止をします。わざわざ手元のパソコンにwin7を入れたり仮想化したりして検証するのがメンドウなので。
ダウンロードして解凍してからソリューションファイル(sln拡張子のファイル)を起動します(要 Visual C++ など)。
起動後、Visual Studio内でF5ボタンでビルドします。
ウィンドウ左に視界の画像があります。
上空から見下ろした図(上面図)が、ウィンドウのやや左側に表示されます。
初期状態では、視界の部分には、黒い背景に、ピンク色の壁が移っています。
キーボードの矢印キーの上下左右のどれかを押すと、その方向に、カメラが移動します。上面図には、壁とカメラの見下ろした位置が表示されており、 キーボード矢印キーを押すと、その方向にカメラが移動しているのが、上面図の画面で確認できます。
そして、カメラ位置から計算した視界の画像を、視界の画像表示の部分に表示します。
水平方向におけるカメラの平行移動と回転(自転)。
被写体の壁に、カメラが近づきすぎたり、壁の向こうに通り過ぎたり、壁から離れすぎたりすると、もしかしたら表示がバグるかもしれないです。