• 締切済み

グラフ描画のサブルーチン集を探しています

元同僚が、 グラフや2次元マップ図等を描画するサブルーチンを集めた書籍 を持っていて、とても便利だよ!と言っていました。 (CDかFD付が付いていました) 見せてもらうと、書籍収録のサブルーチンを使って、 計算結果を2次関数として、一定タイムステップ間隔で出力させていました。 その時は、C言語を使う予定が無かったので聞き流していたのですが、 C言語を使うことになったので、その書籍を購入しようと思っています。しかし同僚は既に転職してしまい聞くこともできません。 もしこころ当たりのある方があれば、教えてください。 その分野では、けっこう有名な本のような言い方をしてたと面います。 どうぞよろしくお願いします。

みんなの回答

  • wathavy
  • ベストアンサー率22% (505/2263)
回答No.1

MFCですが・・ pDC->SelectObject(&BluePen); pDC->MoveTo(0,0); int i; for(i=0; i< TWELVEBITS; i+=DIVISION){ pDC->LineTo(i/DIVISION,(int)(smthHist[i]/10)); } 参考に。

knock123
質問者

お礼

回答ありがとうございます。 済みません、書籍を探しております・・・。

関連するQ&A

  • 配列サイズを明示せずサブルーチンに渡す方法

    プログラムのメインの方で2次元、3次元の高次元配列を設定してそれをサブルーチンに引き渡すことを考えています(しょっちゅうやっていることですが)。 この場合、サブルーチン側に汎用性を持たせるためにできるだけ配列のサイズを自動で渡すようにしたいと思っています(メインが変わるとそれに応じて自動対応)。そうしないとサブルーチンが汎用化せず、ケースバイケース(メイン側の配列のサイズが変わる場合それに応じてコードを書き変えなければならない)に応じなければならず、うっかりミスの間違いもおこりそうです。 配列のサイズを決めないサブルーチンの書き方を教えて頂きたいのですが。 なお、今回は配列はデータとして参照するだけで書き換えることはありません。 言語ですが、”サブルーチン”というだけあってFortranです。(Cのカテゴリだと答えを頂けるかなと思っているのですが。他に適当なところも無いようですが)

  • サブルーチンの使い方

    以下のプログラムを解読中ですが、いまいち理解できません。C言語の経験はあるのですが、Perl初心者のため、Perlの文法を中心に、以下のポイントについて教えてください。 (1)この関数で、引数が「&@」となっていますが、この&の意味は「サブルーチン」ということですか?? (2)2行目のmy ($block, @listin) = @_ で各$block, @listinに格納される値を教えてください。「@_」を調べてみたところ、「サブルーチンの引数を代入」とあるのですが、ここでは、map_block(&@)の&@が&blockと@litinに代入されるということですか??そもそも&@とは何でしょうか? (3)4行目のpush @listout, &$block() for (@listin) について、push関数を調べてみたところ、配列の最後尾に値を格納するということですが、&$block() for (@listin) の部分の意味がよくわかりません。どのような値が、配列listoutに格納されるのでしょうか? (解読中のプログラム) 1sub map_block (&@) { 2   my ($block, @listin) = @_; 3 my @listout = (); 4 push @listout, &$block() for (@listin); 5 return @listout; 6}

    • ベストアンサー
    • Perl
  • C言語でグラフ作成??

    C言語でグラフ作成(2次元) ↓ グラフをJPEGなどの画像データで出力 以上のことを行いたいと思っています。 簡単にできる方法をご存知の方がいましたら教えていただけないでしょうか? また参考サイトやわかりやすい本などがあれば教えていただけないでしょうか? よろしくお願いいたします。

  • scilabでのグラフ描画時の軸設定

    scilabで2次元グラフを描くときの軸の設定 scilabのカラー描画であるMatplotを使ってグラフを描画しているのですが、縦軸と横軸の交点が思い通りに設定できません。 また、グラフと軸がずれて配置されてしまいます。 現在このようなプログラムでグラフを描画しています。 u=[1:1:5;1:1:5;1:1:5;1:1:5;1:1:5]; umin=min(u(:)); umax=max(u(:)); u=255*(u-umin)/(umax-umin); Matplot(u);//行列プロット set(gcf(),'color_map',jetcolormap(256)); colorbar(umin,umax);//color barの表示 g=gca(); g.axes_visible='off'; g.children.data=g.children.data($:-1:1,:);//原点を左下にする xtics=0:1:4;//x軸目盛の設定 drawaxis(x=xtics,y=0.5,dir='d',tics='v'); g.children(1).tics_labels=string(-2:1:2); ytics=0:1:4;//y軸目盛りの設定 drawaxis(x=0.5,y=ytics,dir='l',tics='v'); g.children(1).tics_labels=string(1:1:5); このプログラムを実行すると、縦軸が0.5で、横軸が-1.5のところで交わってしまいます。 また、カラー表示されたグラフが縦軸・横軸共に1.5くらいずつずれてしまいます。 ちなみにこのプログラムは以下のURLのサイトのプログラムを参考にしたものです。 http://vision.kuee.kyoto-u.ac.jp/lecture/dsp/?menu=mat_figure 初心者の質問で申し訳ありませんが、かなり困っています。ご指導、アドバイスよろしくお願いいたします。

  • OpenGLでの描画のタイミング

     OpenGLの使い方について疑問があったので質問しました.  OpenGLを用いて3Dのゲームを作っています.しかし, どうも処理が遅くカクカクした動きになってしまいます. 描画の量が多くなるにつれて遅くなっているので,原因は 描画の時に原因があるようです.ダブルバッファリング を用いて描画しているのですが,描画のときは… 1「描画関数の実行」(glVertex3f()などの実行) 2「裏に描画」(見えていないバッファに描画) 3「裏表入れ替え」(2つのバッファを交換) 0「一定時間待機して自分自身を呼び出す」            (60FPSなら1/60秒程度) を繰り返すものと考えています.  「1230」と繰り返せば通常通り動くのですが, 「1」に計算がかかりすぎると,「2」と「3」が遅れてしまい, カクカクしてしまうのだろうと考えました. (↑これがそもそも間違っていたらすいません><)  そこで,対策を2つ考えたのですが,これでいいでしょうか? それとも,もっと良い方法はないでしょうか?(「1」を 速くするしか方法はないでしょうか?) 【1】一定時間待機する秒数を可変的にする  現在のところ,「0」では,1/60秒待機させています.  しかし,1に1/30秒かかったとすると,「1230」を 1回繰り返すのに,3/60秒かかってしまうことになり, 結局FPSは20止まりです.  そこで,「123」でかかった時間を記録し,その秒数 を1/60から引いた分だけ「0」で待機すれば,1/60秒になる だろう,という方法です. 【2】描画のタイミングを変える  現在のところ,「1230」の順番で繰り返しています. しかし,これでは描画の関数を呼び出した時,「1」に 1/30秒かかったとすると,実際に表示できるのは1/30秒後 ということになります.よって,プログラムの始めに 「1232」を実行しておき,描画の関数の中身は 「3120」とする,という方法です. (そもそも,「2」と「3」のタイミングを   離せるのかどうかもよくわかりません><)  もちろん【1】と【2】の方法は併用もできると思っています. 「2」はOpenGLに入っているglFlush() 「3」はOpenGLに入っているglutSwapBuffers() 「0」はOpenGLに入っているglutTimerFunc() を用いています. 質問が長くなってしまいましたが,よろしくお願いします. 参考までに… 【OS】Mac OS10.7(Lion) 【開発環境】Xcode3 【言語】c++ 【プログラミング歴】6年(c++2年,OpenGL1年) 【CPU】2.66 GHz Intel Core 2 Duo 【メモリ】4 GB 1067 MHz DDR3

  • RubyとC#について

    現在、研究のためエクセルVBAで数十万~数百万個程度のデータの集計及び分析をしています。 VBAでは時間がかなりかかってしまうことと、グラフの描画能力が低いため、新たなプログラミング言語を勉強しようと考えています。 いろいろ情報を収集した結果、RubyかC#にしようかと思っております。 あまり複雑なプログラミング能力は必要ないため、比較的導入しやすそうなRubyにしようかと考えていますが、グラフの描画能力と将来性を考えればC#の方がいいのではないかと迷っております。 やりたい事は、データの集計分析とある程度の柔軟性のあるグラフの描画です。 どちらの言語が適しているのか是非ご教授ください。 よろしくお願いいたします。

  • 伝達関数のステップ応答→グラフを書く

    伝達関数G(s)=50/(1+100S)(1+12S) のステップ応答h(t)を求め、コンピューターで数値計算を行いグラフを書くという問題で、計算を行うためのプログラムと、計算結果・グラフを提出しなければいけないのですが、その数値計算をするプログラムがかけません。 部分分数分解、ラプラス逆変換をしてステップ応答を求めることはできたのですが、コンピューターで数値計算をするには、どのようにプログラムを書けばいいのですか? ちなみにC言語で書こうと思っています。 ヒントだけでもいいので教えてもらえないでしょうか? よろしくお願いします。

  • Scilabを使ったジュリア集合の描画プログラム

    今、Scilabを使用してジュリア集合(充填およびそれ以外を含む集合)を描画するプログラムを書いています。 以前書いたC言語のプログラムをもとに書いているのですが、正確に描画できません。どうしたらよいでしょうか。教えてください。 与える条件は右上と左下の座標(複素数形式)と定数Cの値です。 以下に掲載したのが製作したプログラムです。 よろしくお願い致します。 //描画エリアの右上と左下の座標を複素数で設定する Z =[ -1.2-1.2*%i;1.2+1.2*%i]; //複素定数(C)を設定する C=0+0*%i; //描画エリアのx座標とy座標の各最小値と最大値を計算する。 xmin = min(real(Z)); xmax = max(real(Z)); ymin = min(imag(Z)); ymax = max(imag(Z)); Cr = real(C); Ci = imag(C); //描画点数を800×800に設定する。 N = 800; //各増分を計算する。 dx = (xmax-xmin)/(N-1); dy = (ymax-ymin)/(1-N); //プロットデータを"0"で初期化 map=zeros(N,N); //ジュリア集合の描画 i=1; for X=xmin:dx:xmax j=1; for Y=ymax:dy:ymin for k=1:30 x = X ^ 2 - Y ^ 2 + Cr; y = 2 * X * Y +Ci; if x^2 +y^2 > 4 then break; end map(j,i)=k; X=x; Y=y; end j=j+1; end i=i+1; end //プロットするための設定 Re = xmin:dx:xmax; Im = ymax:dy:ymin; clf(0); Sgrayplot(Re,Im,map');

  • Cの書籍について

    Cの書籍について わたしは、前回の質問で C⇒Java⇒C++の順に入ることにして C言語を勉強することからはじめているのですが 前回の回答で柴田望洋さんの書籍”明解C言語 入門編”をかって 自分でプログラムを書きながら最後まで理解しながら読ませていただいたのですが 次のステップへ進もうと思うのですが、やはり書籍を買うほうがいいのでしょうか その前に、入門編にはCの基本的な知識が書いてありましたが、次のステップは どのようなことを学ぶこととなるんでしょうか?

  • FXの予測トレーニングを作成中。excelのVBでグラフを自動描画。範

    FXの予測トレーニングを作成中。excelのVBでグラフを自動描画。範囲を指定する方法がわからない。 FXの動きを予測するトレーニングのためにExcelのプログラムを作成中です。 データをインポートして、ボタンを押すごとにひとつずつローソクを描画するプログラムを考えています。 MT4でデータエクスポートでexcelファイルを作成します。 I~N列、1~100行(最初はデータなし)を選択してローソク足のグラフを描くようにしておきます。 (この時は、グラフの枠のみが表示) ボタンを押すごとにB~G列の1行のデータをI~Nに転記することでグラフを書かせます。 Cells(3, 16)はグラフ開始行の指定。(通常は1を入力しておく。) <ボタンを押したときのサブルーチン> Dim AM As Single AM = Cells(3, 16) Cells(AM, "i") = Cells(AM, "b") Cells(AM, "j") = Cells(AM, "c") Cells(AM, "k") = Cells(AM, "d") Cells(AM, "l") = Cells(AM, "e") Cells(AM, "m") = Cells(AM, "f") Cells(AM, "n") = Cells(AM, "g") Cells(3, 16) = AM + 1 Calculate End Sub これだと、最初に1~100行を指定しているので、100行を超えるとデータは転記されるが、グラフは変わりません。 100行を超えたら、1~101、2~102と変えていくためには、 Calculateの前にグラフ範囲を指定する命令が必要かと思いますが、誰か教えてください。

専門家に質問してみよう