» 詳しい使用方法や、エラーで展開できない際の対応方法などはこちら
z = f(x,y) の形の数式を3Dグラフとして描画するツール
このVCSSLプログラムは、 入力欄に z = f(x,y) の形の数式を入力すると、 それを3次元のグラフに描いてくれる簡易ツールです。
スポンサーリンク
使用方法
ダウンロードと展開(解凍)
まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされます。
その後、ZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。
» 展開がエラーで止まってしまう場合や、ファイル名が文字化けしてしまう場合は…
プログラムの起動
Windows をご使用の場合
上記でZIPファイルを展開したフォルダ内にある、以下のバッチファイルをダブルクリック実行してください:
もしプログラムを書き変えながら使いたい場合は、代わりに「 VCSSL_Editor__プログラム編集はこちら.bat 」を実行してください。
正常に起動できると、初回のみ、Java実行環境を入手するか等を尋ねられるので、適時答えて済ませると、プログラムが起動します。 2回目以降はすぐに起動します。
Linux 等をご使用の場合
ZIPファイルを展開したフォルダ内へコマンドライン端末で cd して、以下の通り入力して実行してください:
(プログラムの内容を書き変えながら使いたい場合は、代わりに VCSSL_Editor.jar を実行)
» javaコマンドが使用できない等のエラーが表示される場合は…
起動後
画面の様子
起動すると、2つのウィンドウが立ち上がります。 左が数式などの入力画面、右がグラフ画面です。
※ 画面のデザインや項目名などは、バージョンにより多少異なる場合があります。
数式を入力してグラフを描画する
まず、グラフに描きたい数式を、入力画面の「 z(x,y) = 」の入力欄に入力してください。z = f(x,y) における f(x,y) の式です。 式の書き方のポイントは以下の通りです:
- 式は半角(123などの、幅の細い文字)で書いてください。キーボード左上の「半角/全角」キーで切り替えられます。
- 「 x 」や「 y 」は大文字ではなく小文字を用いてください。
- 四則演算が普通に使用できます。ただし、かけ算は「 * 」、割り算は「 / 」の記号を用いてください。足し算や引き算は普通に「 + 」と「 - 」を用います。
- かけ算や割り算は、足し算や引き算よりも先に計算されます(手計算と同じです)。
- sin や cos といった数学関数が使用できます。また、円周率の値は「 PI 」と書けばOKです。 使用可能な数学関数・定数の一覧は、Mathライブラリの仕様書ページをご覧ください。
- 累乗は「 ** 」の記号を用いてください。例えば x の2乗なら「 x**2 」です。
式を入力したら、入力画面の「 プロット 」ボタンを押すと、その式がグラフ画面上に描かれます。 グラフは、入力画面の「 x-N 」と「 y-N 」に指定した数を、 それぞれメッシュのX方向およびY方向の刻み数とする、曲面グラフとして描画されます。 x-N, y-N の値が大きいほど曲面が滑らかになります。
別の数式を重ね描きする / 内容をクリアしてゼロから描き直す
式を書き換えて再び「 プロット 」ボタンを押すと、その内容がグラフ画面上に重ね描きされます。 重ね描きされた複数のグラフは、標準では共にZ値に応じたグラデーション彩色がされるので、見分けづらい場合もあるかもしれません。 その場合は、グラフ画面のメニューバーから「 オプション 」 > 「 グラデーション(Z値) 」の選択を外して無効にしてください。 そうすると、以下のように複数のグラフが色分けされます:
重ね描きではなく、ゼロからグラフを描き直したい場合は、入力画面の「 クリア 」ボタンを押してください。そうすると一旦グラフ内容が全消去されますので、描き直してください。
その他の機能や細かい設定など
背景色を黒ではなく白にしたい場合は、グラフ画面の「 オプション 」 > 「 ブラックスクリーン 」の選択を外してください。 なお、白背景は印刷には適していますが、PC画面上ではZ値のグラデーションが見づらくなってしまうため、用途に応じて使い分けてください。
他にも、グラフ画面の「 ファイル 」メニューから、設定内容の保存や、グラフ内容の画像ファイルへの保存などができます。 同様に「 編集 」メニューから、軸ラベルや目盛り、描画範囲やカメラ、光や色の細かい設定などを行えます。
画像ではなく座標値データをファイルに保存したい場合は、 入力画面の「 データ出力 」ボタンを押すと、現在のグラフの内容を3カラム書式の座標値ファイルとして保存できます。 保存したファイルは、グラフ画面の「 ファイル 」 > 「 ファイルを開く 」メニューから読み込む事ができますし、他のグラフソフトでの読み込みも(書式が対応しているものなら)可能です。
なお、このプログラムで起動されるグラフ画面は、 「 リニアングラフ3D( RINEARN Graph 3D ) 」というデータ解析用のグラフソフトで、 単体でも入手・利用できます。操作感などが気に入った方は、ぜひご利用ください。
スポンサーリンク
コード解説
コード全体
このプログラムのコードはVCSSLで記述されています。 VCSSLはC言語系のシンプルな文法を持っているので、C系の言語に触れられた事のある方なら、 コメントを参考にしながらコード内容を比較的簡単に追う or 改造する事ができると思います。
今回のコードは、基本的なグラフ操作の処理に、GUIの画面を組み合わせて、ツールとして仕上げたものです。 グラフの描画処理の基本や、ユーザーの入力した式からグラフを描く流れについては、以下の回で解説していますので、そちらをご参照ください:
- (グラフの描画方法について) 配列を3Dグラフにプロットする(曲面/メッシュグラフ)
- (入力式のグラフ化について) ユーザーが入力した数式を2Dグラフにプロットする
また、VCSSLでのGUI画面の構築については、「 VCSSL GUI開発ガイド 」をご参照ください。
今回のコードは、サンプルコードというよりは実際に使うためのツールなので、 細部を細かくピックアップしながらの解説は割愛し、コード全体の掲載に留めておきます。 今回のコードの全体は、以下の通りです:
ライセンス
このVCSSL/Vnanoコード( 拡張子が「.vcssl」や「.vnano」のファイル )は実質的な著作権フリー(パブリックドメイン) である CC0 の状態で公開しています※。 記事中にC言語/C++/Java言語などでのサンプルコードが掲載されいてる場合は、それらについても同様です。 そのままでのご利用はもちろん、改造や流用などもご自由に行ってください。
※ ただし、このコードの配布フォルダ内には、ダウンロード後すぐに実行できるように、 VCSSLの実行環境も同梱されており、そのライセンス文書は「 License 」フォルダ内に同梱されています (要約すると、商用・非商用問わず自由に使用できますが、使用の結果に対して開発元は一切の責任を負いません、といった具合の内容です)。 配布フォルダ内の各構成物の一覧やライセンスについては「 ReadMe_使用方法_必ずお読みください.txt 」をご参照ください。
※ Vnano の実行環境については、別途スクリプトエンジンのソースコードも一般公開しており、 何らかのソフトウェア内に組み込んでご利用いただく事も可能です。詳細はこちらをご参照ください。
この記事中の商標などについて
- OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
- Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。この記事は独立著作物であり、Microsoft Corporation と関連のある、もしくはスポンサーを受けるものではありません。
- Linux は、Linus Torvalds 氏の米国およびその他の国における商標または登録商標です。
- その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。
Vnano版 | 積分値のグラフ描画用データを出力するプログラム |
|
|
数値的に積分を行い、結果の関数をグラフに描くためのデータを出力するコードです。 |
3Dグラフを回転アニメーションさせるツール |
|
|
3Dグラフを、Z軸まわりにゆっくりと回転アニメーションさせるツールです。全角度のグラフを、連番の画像ファイルに保存する事もできます。 |
連番ファイルから3Dグラフをアニメーション描画するツール |
|
|
フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。 |
連番ファイルから2Dグラフをアニメーション描画するツール |
|
|
フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。 |
z = f(x,y,t) の形の数式を3Dグラフとしてアニメーション描画するツール |
|
|
入力欄に z = f(x,y,t) の形の数式を入力すると、それを3次元のグラフにアニメーション描画してくれる簡易ツールです。 |
y = f(x,t) の形の数式を2Dグラフとしてアニメーション描画するツール |
|
|
入力欄に y = f(x,t) の形の数式を入力すると、それを2次元のグラフにアニメーション描画してくれる簡易ツールです。 |
t を媒介変数とする x(t), y(t), z(t) の数式を3Dグラフに描画し、アニメーションもできるツール |
|
|
入力欄に x(t), y(t), z(t) の形の数式を入力すると、それを t を媒介変数として3次元のグラフに描画し、アニメーションもできる簡易ツールです。 |
t を媒介変数とする x(t), y(t) の数式を2Dグラフに描画し、アニメーションもできるツール |
|
|
入力欄に x(t), y(t) の形の数式を入力すると、それを t を媒介変数として2次元のグラフに描画し、アニメーションもできる簡易ツールです。 |
z = f(x,y) の形の数式を3Dグラフとして描画するツール |
|
|
入力欄に z = f(x,y) の形の数式を入力すると、それを3次元のグラフに描いてくれる簡易ツールです。 |
y = f(x) の形の数式を2Dグラフとして描画するツール |
|
|
入力欄に y = f(x) の形の数式を入力すると、それを2次元のグラフに描いてくれる簡易ツールです。 |
配列を3Dグラフにアニメーションプロットする(曲面/メッシュグラフ) |
|
|
座標値配列の内容を、3次元の曲面/メッシュグラフに連続でプロットし、アニメーションさせるサンプルプログラムです。 |
配列を3Dグラフにアニメーションプロットする(点/線グラフ) |
|
|
座標値配列の内容を、3次元の点/線グラフに連続でプロットし、アニメーションさせるサンプルプログラムです。 |
配列を2Dグラフにアニメーションプロットする |
|
|
座標値配列の内容を、2次元グラフに連続でプロットし、アニメーションさせるサンプルプログラムです。 |
配列を3Dグラフにプロットする(曲面/メッシュグラフ) |
|
|
座標値配列の内容を、3次元の曲面/メッシュグラフにプロットするサンプルプログラムです。 |
ファイルを3Dグラフにプロットする(曲面/メッシュグラフ) |
|
|
座標値ファイルの内容を、3次元の曲面/メッシュグラフにプロットするサンプルプログラムです。 |
ユーザーが入力した数式を2Dグラフにプロットする |
|
|
実行時にユーザーが入力した数式の値を、2次元グラフにプロットするサンプルプログラムです。 |
配列を3Dグラフにプロットする(点/線グラフ) |
|
|
座標値配列の内容を、3次元の点/線グラフにプロットするサンプルプログラムです。 |
配列を2Dグラフにプロットする |
|
|
座標値配列の内容を、2次元グラフにプロットするサンプルプログラムです。 |
ファイルを3Dグラフにプロットする(点/線グラフ) |
|
|
座標値ファイルの内容を、3次元の点/線グラフにプロットするサンプルプログラムです。 |
ファイルを2Dグラフにプロットする |
|
|
座標値ファイルの内容を、2次元グラフにプロットするサンプルプログラムです。 |