» 詳しい使用方法や、エラーで展開できない際の対応方法などはこちら
t を媒介変数とする x(t), y(t) の数式を2Dグラフに描画し、アニメーションもできるツール
このVCSSLプログラムは、 入力欄に x(t), y(t) の形の数式を入力すると、 それを t を媒介変数として2次元のグラフに描画し、 アニメーションもできる簡易ツールです。
スポンサーリンク
使用方法
ダウンロードと展開(解凍)
まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされます。
その後、ZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。
» 展開がエラーで止まってしまう場合や、ファイル名が文字化けしてしまう場合は…
プログラムの起動
Windows をご使用の場合
上記でZIPファイルを展開したフォルダ内にある、以下のバッチファイルをダブルクリック実行してください:
もしプログラムを書き変えながら使いたい場合は、代わりに「 VCSSL_Editor__プログラム編集はこちら.bat 」を実行してください。
正常に起動できると、初回のみ、Java実行環境を入手するか等を尋ねられるので、適時答えて済ませると、プログラムが起動します。 2回目以降はすぐに起動します。
Linux 等をご使用の場合
ZIPファイルを展開したフォルダ内へコマンドライン端末で cd して、以下の通り入力して実行してください:
(プログラムの内容を書き変えながら使いたい場合は、代わりに VCSSL_Editor.jar を実行)
» javaコマンドが使用できない等のエラーが表示される場合は…
起動後
画面の様子
起動すると、まず2つのウィンドウが立ち上がります。 左が数式などの入力画面、右がグラフ画面です。 また、グラフ描画後に入力画面の「 アニメーション 」ボタンを押すと(詳細は後述)、 アニメーション操作画面が立ち上がります。
※ 画面のデザインや項目名などは、バージョンにより多少異なる場合があります。
数式を入力してグラフを描画する
まず、グラフに描きたい数式を、変数「 t 」を媒介変数(アニメーション目的の場合は時刻変数)として、入力画面の「 x(t) = 」および「 y(t) = 」の入力欄に入力してください。 式の書き方のポイントは以下の通りです:
- 式は半角(123などの、幅の細い文字)で書いてください。キーボード左上の「半角/全角」キーで切り替えられます。
- 媒介変数には小文字の「 t 」を用いてください。この t が、アニメーション時には時間を表す変数になります。
- 四則演算が普通に使用できます。ただし、かけ算は「 * 」、割り算は「 / 」の記号を用いてください。足し算や引き算は普通に「 + 」と「 - 」を用います。
- かけ算や割り算は、足し算や引き算よりも先に計算されます(手計算と同じです)。
- sin や cos といった数学関数が使用できます。また、円周率の値は「 PI 」と書けばOKです。 使用可能な数学関数・定数の一覧は、Mathライブラリの仕様書ページをご覧ください。
- 累乗は「 ** 」の記号を用いてください。例えば t の2乗なら「 t**2 」です。
式を入力したら、入力画面の「 プロット 」ボタンを押すと、その式がグラフ画面上に描かれます。
グラフは、入力画面に入力した「 t-min 」から「 t-max 」の範囲で、媒介変数 t の値を動かしながら、合計「 t-N 」個の等分割地点で点を打ち、それを線で繋いで描画されます。 「 t-N 」の値を密にするほどグラフが滑らかになりますが、それなりに粗い方が媒介変数の変化を把握しやすいかもしれません。 なお、点の無い、ただの線グラフにしたい場合は、グラフ画面の「 オプション 」 > 「 点プロット 」の選択を外してください。 線の幅を変えたい場合は、「 線プロット 」の選択を外して選択しなおすと、指定できます。
別の数式を重ね描きする / 内容をクリアしてゼロから描き直す
式を書き換えて再び「 プロット 」ボタンを押すと、グラフ画面上に別の色で重ね描きされます。 上書きではなく、ゼロからグラフを書き直したい場合は、「 クリア 」ボタンを押してください。
アニメーション機能
グラフを描画した状態で、入力画面の「 アニメーション 」ボタンを押すと、グラフがアニメーションモードになり、アニメーション操作画面が表示されます。 アニメーション操作画面の「 PLAY 」ボタンを押すと、媒介変数 t の値を、グラフ上の 1 点分ずつ動かしながらアニメーション描画します。 いま何点目であるかはグラフ画面上に「 count = 」として表示されます。
その他の機能や細かい設定など
その他、グラフ画面の「 編集 」メニューなどから、グラフ範囲やタイトル・軸ラベル、凡例(各色の線ごとの表示名)などを設定できます。 また、グラフ画面の「 ファイル 」メニューから、設定内容の保存や、グラフ内容の画像ファイルへの保存などもできます。
入力画面の「 データ出力 」ボタンを押すと、現在のグラフの内容を2カラム書式の座標値ファイルとしても保存できます。 保存したファイルは、グラフ画面の「 ファイル 」 > 「 ファイルを開く 」メニューから読み込む事ができます。
なお、このプログラムで起動されるグラフ画面は、 「 リニアングラフ2D( RINEARN Graph 2D ) 」というデータ解析用のグラフソフトで、 単体でも入手・利用できます。操作感などが気に入った方は、ぜひご利用ください。
コード解説
コード全体
このプログラムのコードはVCSSLで記述されています。 VCSSLはC言語系のシンプルな文法を持っているので、C系の言語に触れられた事のある方なら、 コメントを参考にしながらコード内容を比較的簡単に追う or 改造する事ができると思います。
今回のコードは、基本的なグラフ操作の処理に、GUIの画面を組み合わせて、ツールとして仕上げたものです。 グラフの描画処理の基本や、ユーザーの入力した式からグラフを描く流れについては、以下の回で解説していますので、そちらをご参照ください:
- (グラフの描画方法について) 配列を2Dグラフにプロットする
- (入力式のグラフ化について) ユーザーが入力した数式を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次元グラフにプロットするサンプルプログラムです。 |