WinAPI32で、3次元グラフを作る

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
HK

WinAPI32で、3次元グラフを作る

#1

投稿記事 by HK » 15年前

何度かお世話になっておりますHKと申します。

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
を使っております

HK

Re:WinAPI32で、3次元グラフを作る

#2

投稿記事 by HK » 15年前

自己解決しました

Vista で Aero を OFF にすると SetPixel系 がうまく動かないそうです

こんなので1日悩んでいた自分がばかばかしい。そして時間の無駄だった。

ところで、確かこのまえ2000ポイントくらい溜まってたのですが
またぴよぴよに戻ったのはIP変動のせいですか?

シエル

Re:WinAPI32で、3次元グラフを作る

#3

投稿記事 by シエル » 15年前

たぶんポイントは名前だけしか見てないと思いますよ。

名前間違ってませんか?
大文字だったり小文字だったり、スペース入ってたりとかないですかね?

fatens

Re:WinAPI32で、3次元グラフを作る

#4

投稿記事 by fatens » 15年前

名前の全角・半角の違いではないでしょうか。

パコネコ

Re:WinAPI32で、3次元グラフを作る

#5

投稿記事 by パコネコ » 15年前

昇進状態というので名前の確認できますよ…

シエル

Re:WinAPI32で、3次元グラフを作る

#6

投稿記事 by シエル » 15年前

どうやら以前までは全角だったようですね。

追記:
いつの間にか熟練のプログラマーに。。
まだ初級者レベルなんだけどなぁ。 画像


HK

Re:WinAPI32で、3次元グラフを作る

#8

投稿記事 by HK » 15年前

本当ですね。
ありがとうございました。

ISLe

Re:WinAPI32で、3次元グラフを作る

#9

投稿記事 by ISLe » 15年前

修正プログラムを入手することができます。
ただしWindowsUpdateでの公開(一般公開)はされていないようです。

Vista SP1
http://support.microsoft.com/kb/983184/ja
Vista SP2
http://support.microsoft.com/kb/978545/ja

閉鎖

“C言語何でも質問掲示板” へ戻る