- ベストアンサー
ヘッダーファイルの中にXeasyGraphic.hがあり、三次元を二次元に変換する方法を知りたい
- この質問では、ヘッダーファイルの中にXeasyGraphic.hがあり、立方体を表示させ回転させたいが、結果がゆがんでしまうという問題が発生しています。
- 質問者は、三次元で回転させた立方体を二次元に落とす方法を知りたいとしています。
- 質問者は、どのようにすれば立方体が正しく回転して二次元に変換されるのか教えてほしいと言っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その他の回答 (1)
関連するQ&A
- 3次元配列から2次元配列に
3次元配列のデータを2次元配列に移すにはどのように したらよいのでしょうか.とりあえず下記のように考えてみましたが. data3[500][500][4000]; //3次元配列 data2[500][500]; //2次元配列 for(y=0; y<500; y++) for(x=0; x<500; x++){ for(z=0; z<4000; z++){ data2[y][x] = data3[y][x][z]; } } } これでいいのでしょうか?
- 締切済み
- C・C++・C#
- 関数宣言
3次元で領域を確保するプログラムをmalloc関数を用いて書きました。しかし、プログラムが長いので関数宣言をしなさいといわれたために、以下のプログラムを書きました。しかし、途中でつまづいてしまい、どのように関数を用いたり、関数を定義すれば良いのか混乱しています。初心者ですが、どうかお願いします。 /*ソース*/ #include<stdio.h> #include<stdlib.h> int main(){ double ***C; f3Malloc(C,.,.); //数値を代入(関数の使い方?) f3Free(C,.,.); } /*3次元配列(返し方?)*/ double*** f3Malloc(C,,){ int i,j,x,y,z; x = 2; y = 3; z = 4; C=(double***)malloc(sizeof(double**)*x*y*z); for(i=0;i<y;i++){ C[i]=(double**)malloc(sizeof(double*)*y*z); for(j=0;j<z;j++){ C[i][j]=(double*)malloc(sizeof(double)*z); } } } /*メモリの解放(返し方?)*/ void f3Free(C,.,.){ int i,j,x,y; x = 2; y = 3; for(i=0;i<x;i++){ for(j=0;j<y;j++){ free(C[i][j]); } free(C[i]); } free(C); }
- ベストアンサー
- C・C++・C#
- 三次元の井戸型ポテンシャルについて
量子力学の質問です。 三次元の井戸型ポテンシャル(一辺Lの立方体)についてなのですが、 (I)箱の端の波動関数を0とする条件 つまりψ(L,y,z,)=ψ(x,L,z,)=ψ(x,y,L)=0 のとき (II)周期的境界条件を条件にした場合 つまりψ(x,y,z,)=ψ(x+L,y,z,)=ψ(x,y+L,z)=ψ(x,y,z+L) という条件のとき とでエネルギー固有値を求めました。 すると(I)は E=h^2/(8πm)・(π/L)^2・{(n_x)^2+(n_y)^2+(n_z)^2} ただしn_x,y,zは0を含まない自然数。 (II)は E=h^2/(8πm)・(2π/L)^2・{(n_x)^2+(n_y)^2+(n_z)^2} ただしn_x,y,z=0,±1,±2... となりました。明らかに(I)と(II)ではエネルギー固有値がちがってきます。 これはなぜなのでしょうか? このほかのフェルミ波数等は同じ値をとるのにエネルギー固有値だけちがうというのはいいのでしょうか?
- ベストアンサー
- 物理学
- c言語
c言語で写真の課題を出されたのですが自分のプログラムでは上手くいきません。どこが間違っているのか教えて欲しいです。 自分のプログラム #include<stdio.h> #include<math.h> int main(){ int i,j; double c,d,x,y,z; for(i=0;i<=360;i++){ c=10*cos(i*M_PI/180); d=10*sin(i*M_PI/180); if(c>=0 && d>=0){ for(j=0;j<=1000;j++){ x=0.001*j; y =x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } if(c<=0 && d>=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c<=0 && d<=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c>=0 && d<=0){ for(j=0;j<=1000;j++){ x=0.001*j; y=x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } printf("x=%lf y=%lf z=%lf\n",x,y,z); } return(0); }
- ベストアンサー
- C・C++・C#
- 三次元座標変換について質問
みなさんこんにちは。 G68の機能を用いて三次元座標変換をしようと考えています。 以下のような指令を用いてテストを行ってみました。 例?)G68X0.Y0.Z0.I1.J0.K0.R30. 例?)G68X0.Y0.Z0.I0.J1.K0.R30. ところが、例?、?のように回転中心座標軸I、Jで指令しても 常にZ軸が回転中心となって座標変換されてしまいます。 このような現象が起こってしまう原因としてどのような要因が考えられますでしょうか。 お手数ですが教えていただけると幸いです。 ちなみに制御装置はFANUC 15iMAです。 宜しくお願い致します。
- 締切済み
- マシニングセンター
- 2次元配列の基礎について
とある問題で 下に示す行列x,yの積を求めるプログラムを作成せよ。 x=[123][456] y=[15] [53][81] 問題の意味が自分にはよくわからないのですが この場合 123*15;123*53;123*81 456*15;456*53;456*81 の解答を表示させればいいのでしょうか? 自分でやったら以下のようになりましたが、これだと456*53と123*15と0しか表示されません。どこをどう直せば宜しいでしょうか? ご教授お願いしますm(__)m #include <stdio.h> int main(void){ int ma[3][1] ={{123},{456}}; int mb[3][1] ={{15},{53},{81}}; int mc[3][1] ={0}; int i; int j; for(i=0;i <= 3;i++){ for(j=0;j <= 1;j++){ mc[i][j] =ma[i][j] * mb[i][j]; } } for(i=0;i <= 3;i++){ for(j=0;j <= 1;j++){ printf("%3d",mc[i][j]); putchar('\n'); } } return 0; }
- 締切済み
- C・C++・C#
- 二次元配列に関する質問です。
一次元配列はわかるのですが二次元配列になると、わからない時があります。 <ソース> #include<stdio.h> int main() { int dat[2][5]={1,2,3,4,5,6,7,8,9,10}; int i; int j; for(i=0;i<2;i++){ for(j=0;j<5;j++){ printf("dat[%d][%d] %d\n",i,j,dat[i][j]); } } return 0; } このプログラムでわからないのは、 int dat[2][5]={1,2,3,4,5,6,7,8,9,10};の部分です。 普段は、int dat[2][5]={{1,2,3,4,5}, {6,7,8,9,10}, }; という使い方をしているのですが・・・。 どうちがうのでしょうか?
- ベストアンサー
- C・C++・C#
- c言語のmalloc関数と2次元配列について
・mallocとreallocのAPPを作成しています、下記は単純化しました。 「質問-1」 ・while(1){...以下を無効にした場合、正常に終了します。 ・有効にして、最初に999を入力した場合、エラー表示されます。 ・この理由が分かりません。 「質問-2」 ・有効にして、初期数値(例えば11)を入力の場合、正常表示されます ・続けて数値(例えば15)を入力した場合、エラー表示されます。 ・この理由が分かりません。 *************************************************************** #include <stdio.h> #include <stdlib.h> void MylnOut(void); int **map; int X=10,Y=10,i,j; //************************************************************** // MAIN //************************************************************** int main() { char str[64]={""}; char *s="変更数値を入力(999で終了).... "; /* 2次元配列確保と初期表示 */ map=(int **)malloc(sizeof(int *)*X); for(i=0;i<X;i++) map[i]=(int *)malloc(sizeof(int)*Y); MylnOut(); /* 変更数値入力 */ // while(1){ // printf(s); // gets(str); // X=atoi(str); // if(X==999) break; /* 領域変更と表示 */ // map=(int **)realloc(map,sizeof(int *)*X); // for(i=0;i<X;i++) // map[i]=(int *)realloc(map[i],sizeof(Y)); // MylnOut(); // } /* 領域開放 */ for(i=0;i<X;i++) free(map[i]); free(map); return 0; } //************************************************************** // 入力・表示 //************************************************************** void MylnOut(void) { for(j=0;j<Y;j++) for(i=0;i<X;i++) map[i][j]=55; for(j=0;j<Y;j++){ for(i=0;i<X;i++) printf("%3d",map[i][j]); printf("\n"); } }
- ベストアンサー
- C・C++・C#
- エクセルを用いた3次元座標変換
3次元座標空間において、座標軸を回転移動させて三つの基準座標点のz座標をすべて0にする方法を教えていただけないでしょうか。 例:(x1,y1,z1), (x2,y2,z2), (x3,y3,z3) →(回転移動)→ (x1',y1',0), (x2', y2', 0), (x3', y3', 0) よろしくお願いします。
- ベストアンサー
- その他(インターネット・Webサービス)