ヘッダーファイルの中にXeasyGraphic.hと言うのがあり、立方体を表示させ回転たいのです。
そして、三次元で回転させ、二次元に落とすという方法をしたかったのですが、どうしても、ゆがんでしまいます。どうしたらいいでしょうか?
-------ソース-------
#include<stdio.h>
#include<XeasyGraphics.h>
#include<math.h>
int main(){
/*立方体の宣言*/
float box_x[8]={10,10,10,-10,10,-10,-10,-10};/*X軸*/
float box_y[8]={10,10,-10,10,-10,10,-10,-10};/*Y軸*/
float box_z[8]={10,-10,10,-10,-10,10,10,-10};/*Z軸*/
/*立方体のキャッシュ*/
float box_x2[360][8],box_y2[360][8],box_z2[360][8];
/*平面に落とした時のキャッシュ*/
float flat_x[360][8],flat_y[360][8];
/*回転用*/
int j,i;
float th,x,y,x2,y2;
/*回転プログラム*/
for(j=1;j<=360;j++){
for(i=0;i<8;i++){
x=box_x[i];
y=box_y[i];
th=(PAI/180)*j;
box_x2[j-1][i]=x*cos(th)-y*sin(th);
box_y2[j-1][i]=x*sin(th)+y*cos(th);
box_z2[j-1][i]=box_z[i];
}
}
/*三次元から二次元へ*//*ここが間違えていると思われる*/
for(j=0;j<360;j++){
for(i=0;i<8;i++){
flat_x[j][i]=box_x2[j][i]-box_z2[j][i];
flat_y[j][i]=box_y2[j][i]-box_z2[j][i];
}
}
/*この後に表示が入る予定*/
getchar();
exit(0);
}
No.1ベストアンサー
- 回答日時:
プロジェクションは無視しますが、3D→2Dの透視変換をするならば、
d = box_z2 - (-15); // Z座標=(-15) から見る
flat_x = box_x2 / d;
flat_y = box_y2 / d;
のようにします。
3DのZ座標の最小値は-10√2だからこの場合はありえませんが、box_z2 - (-15) が負になると、座標が反転し、0だと、0割り算が発生し、正であっても0に近いと、XY座標が極めて大きな値になるので、例えば1未満のときは、ラインそのものを表示しないような工夫が必要になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
- Visual Basic(VBA) VBA Boxが空白の場合のメッセージボックス 2 2023/06/14 11:06
- JavaScript 【Javascript】ボタンクリックで2つのclassに対し、それぞれ別のclassを追加したい 1 2022/07/29 20:52
- ヤフオク! ヤフオクの支払いについて分かりません。 1 2023/01/22 15:15
- 国産車 ホンダのNシリーズについて 2 2022/07/12 22:57
- pixiv どうすればpixv Fan Boxを退会できますか? 1 2023/04/23 12:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- ドラマ ドラマrookiesの表boxと裏box 1 2022/04/17 11:43
- 金融業・保険業 三井住友銀行で忘れ物を見つけたら面倒なことに 5 2022/04/04 19:31
- iPhone(アイフォーン) iPhoneのiCloudメールなよですが送信済みBOXがありません。、調べるとパスワードとアカウン 1 2023/06/01 16:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
エクセルである点からの距離で...
-
ピクチャボックスの座標取得
-
交差する2線分の交点座標の求め方
-
エクセルシート上のマウスポイ...
-
一番近い点を見つけたい。
-
c言語でキーボードから2点の座...
-
ビットマップ画像の座標を小数...
-
VBで、開いているExcelシートの...
-
マインクラフト(pc版)で座標...
-
Tiny Basicでのグラフィック。。
-
ワード上Shapeの位置情報を統一...
-
最小二乗平面
-
エクセルで回転する座標の出し方
-
座標A(X,Y)の線分(aX,aY)(b...
-
空間上の二点を結ぶ直線上に任...
-
ClientToScreen
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
求積表の計算方法
-
ダイアログ内コントロールの位...
-
空間上の二点を結ぶ直線上に任...
-
始点、終点の二つの座標と半径...
-
図形が重なりあっているかどうか
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
シーケンサー(PLC?)で制...
-
ピクチャボックスの座標取得
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
選択範囲の座標値の抽出
-
座標を持った平面範囲に座標を...
-
VBで、開いているExcelシートの...
おすすめ情報