- ベストアンサー
作画ソフト 紹介して下さい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
数値計算や数式処理を行う為のソフトウェアは多数あり 商用のソフトであればご質問のような図は 付属のグラフィック機能で描画可能です。 で、そういったソフトのクローンやそれに類するソフトがありまして こちらは基本的にフリーです。ただし、特にグラフィック周りで 一歩も二歩も引けをとります。 3Dグラフィックの水準は Freemat, Gnuplot, Octave, Scilabは概ね同レベルのようです。 問題になるかどうか分かりませんし、最新版では違うかも知れませんが OctaveとScilabは少なくとも数年前のバージョンでは投影法は平行投影のみの対応です。 (単純な図なら自分で透視投影にすることもできるはずですが面倒です) 画像検索などで描画例を見ると、 Asymptote, DataMelt, Euler Math Toolbox, mayavi, R言語は 標準で透視投影に対応しているようです。 wxMaxima, Numpy, Scipy というのもあります。 私が触ったことがあるのは主にScilabですが、 質問の画像の上の方、3次元メッシュプロットは標準装備です。 下の方の図については、3次元等高線プロットが使えるかも知れませんが 輪っかと曲線を一本づつ描画するスクリプトを書くほうが簡単かも知れません。 モノが単純ならプログラムで線を描画しても簡単というわけです。 Java, C(とopengl), VCSSLでも記述が低レベルながら 容易に3D描画ができます。(もちろん透視投影にも対応) 私が知らないだけで、類似のソフトやよりスマートなやり方もあると思います。 参考: http://math.stackexchange.com/questions/40770/recommended-free-software-to-plot-points-in-3d http://www.ibm.com/developerworks/jp/linux/library/l-datavistools/ (Windows版が無いソフトも含まれています) //Scilabの描画スクリプトの例 //command syntax: exec XXXX.sci; x = [-2:0.1:2]'; y = x - 0.5; xm = x * ones(1,size(x,1)); ym = ones(size(y,1),1) * y'; r = xm.^2 + ym.^2; r(r==0) = %nan; z = -1 ./ r; zmin = -10; //メッシュプロット例1(例2と見た目は同じです) //hf1 = scf(); //plot3d(x, y, max(z, zmin)) //ha = gca(); //ha.rotation_angles = [30 240]; //ha.axes_visible = ["off","off","off"]; //ha.box = "off"; //ha.x_label.visible = "off"; //ha.y_label.visible = "off"; //ha.z_label.visible = "off"; //he = gce(); //he.color_mode = 8; //he.hiddencolor = 8; //メッシュプロット例2 hf2 = scf(); plot3d1(x,y,max(z, zmin), 240, 30, , [8 2 0], ) hf2.color_map = hf2.color_map * 0 + 1; //等高線のプロットの例 hf3 = scf(); //cont //r = 0.2:0.3:2; //r = 0.2 + ([0:5] .^2) / 13; r = 0.2 + 1.8 * (1 ./ (1+%e.^ -(([0:5]-3.3)*1.5) ) ); h = -1 ./ r; th = [0:0.1:2*%pi 2*%pi]; for ix = 1:size(r,2), x = r(ix) * cos(th); y = r(ix) * sin(th); z = h(ix) * ones(1, size(th, 2)); param3d(x, y, z); end //grad r = 0.19:0.05:2.1; h = -1 ./ r; th = 2*%pi * [0:6] / 6; for ix = 1:size(th,2), x = r * cos(th(ix)); y = r * sin(th(ix)); z = h * ones(1, size(th(ix), 2)); param3d(x, y, z); end ha = gca(); ha.rotation_angles = [30 240]; ha.axes_visible = ["off","off","off"]; ha.box = "off"; ha.x_label.visible = "off"; ha.y_label.visible = "off"; ha.z_label.visible = "off"; //Scilabのスクリプトここまで。 Rを触るのは初めてでしたが、こんな感じでメッシュプロットができました。 x <- seq(-2,2,length=40) ; y <- x f <- function(x,y) { r <- x^2+y^2; -1/r } z <- outer(x,y,f) zmin <- -2 z[z < zmin - 0.5] <- NA z <- pmax(z, zmin) persp(x, y, z, theta = 10, phi = 30, expand = 0.5, col = "lightblue") 参考にしたページ: http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html http://cran.r-project.org/doc/contrib/manuals-jp/Mase-Rstatman.pdf http://d.hatena.ne.jp/tsutatsutatsuta/20110919/1316429513
その他の回答 (3)
- m_and_dmp
- ベストアンサー率54% (987/1817)
Inkscape というベクタ画像作成ソフトがいいと思います。 http://www.forest.impress.co.jp/library/software/inkscape/ 画像(線)を数式で表せるならエクセルのグラフ作成機能が使えると思います。
- Nouble
- ベストアンサー率18% (330/1783)
書き方について どの様なものを 望まれているのか が、解らない の、です が、 http://johnny-g.watson.jp/frsoft/ken_shiro/cadcals/3dcad2.htm http://matome.naver.jp/m/odai/2138432120797553701 http://d-engineer.com/3dprint/free3dcad.html http://demo.server-queen.jp/osusume/cad/3d/02kikai.htm
お礼
色々な情報をご提供していただき、ありがとうございました
gnuplot? http://iphys3-ap.eng.hokudai.ac.jp/tips/wgnuplot.html 書くと言うよりは、データをプロットするドローツールだな
お礼
詳細なご説明をいただき、とても助かりました