WINAPIで以下のサイトにあるような3次元グラフを書くことが目的です。
http://homepage3.nifty.com/ishidate/vcp ... p05_23.htm
現在の進行状況ですが以下のようになってます。
視点(θ、φ)を変更するスクロールバーを作成。
実空間での3次元座標から、画面出力に用いる2次元座標にする関数の作成。
それを用いてXYZ軸を描画。
次に、x,y座標をforループで細かく指定していき、z座標を得る。
z座標を描画
という感じです。
問題点は、ある矩形領域にだけ、点が描画されないということです。
画像を添付しているので、ごらんください。画面の右半分が描画されていません。
(なぜか線は描写される)
一応、原因を調べようとして、青点を横一線になるように打点したところ、
右の端っこに青点が描画されているのは確認できました。これもなぜだかわかりません
打点する関数は以下のようになっています。
void graph_dots(HWND hWnd){ int i; //X軸、Y軸方向を細かくスキャンし、打点していく for(xx=1;xx>=-1;xx-=0.02){ for(yy=-1;yy<=1;yy+=0.02){ //理論空間→実際の空間 x=xx*size; y=yy*size; //関数の計算 z=func(x,y); //実際の空間→理論空間 zz=z/size; //打点する point=ChangeTo2D(x,y,z); SetPixelV(hdc,point.x,point.y,RGB(0,(y>0? 255:0),0)); } } //----------テスト for(i=0;i<800;i+=3) SetPixel(hdc,i,100,RGB(0,0,255)); //---------- } ちなみに 3次元グラフは以下 double func(double x, double y){ return 40*cos(pow(((x*x+y*y)/50.0),0.5)); }Windows Vista
VC++2008
を使っております