[ 前へ | 目次 | 次へ ]
Now Loading...
ダウンロード
PC (※スマートフォンでは動きません) でダウンロードし、ZIPファイルを右クリックメニューから展開して、できたフォルダ内の「 VCSSL.bat(バッチファイル) 」をダブルクリックすると起動します。 Linux等では「 VCSSL.jar 」をコマンド実行してください。
» 詳しい使用方法や、エラーで展開できない際の対応方法などはこちら

[公式ガイドサンプル] CSVファイルにデータを丸めて書き出し、読み込んで2次元グラフを描く

このプログラムは、 「 VCSSLスタートアップガイド 」 の 「 CSVファイルとグラフの描画 」 の回に登場するサンプルコードです。 ここでは、そのサンプルコードを実行環境ごとダウンロードして、実際に実行してみる事ができます。 プログラミングガイド的な詳しい解説については、上記ページをご参照ください。

使用方法

ダウンロードと展開(解凍)

まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされるので、そのZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。

» 展開がエラーで止まってしまう場合は…

なお、Linux® 等をご使用で、右クリックメニューから展開するとファイル名が文字化けしてしまう場合は、 コマンドライン端末でZIPファイルのある場所まで cd した上で「 unzip -O cp932 ZIPファイル名 」で展開してみてください。

プログラムの起動

Microsoft® Windows® をご使用の場合

上記の通りにZIPファイルを展開したフォルダ内にある、 「 VCSSL.bat(種類はバッチファイル) 」をダブルクリック実行してください。 もしプログラムの内容を書き変えながら使いたい場合は、代わりに「 VCSSL_Editor.bat 」を実行してください。

実行すると、最初にメモリー使用量や、(必要な場合のみ)Java®実行環境を自動で入手するか 等を尋ねられるので、適時答えると、プログラムが起動します。2回目以降はすぐに起動します。

※ ここで入手したJava®実行環境は、ZIPファイルを展開した中の「 jre 」フォルダ内にダウンロードされ、このプログラムの実行のみに使用されます。PC全体に影響する形でインストールされる事はありません。

Linux® 等やその他のOSをご使用の場合

ZIPファイルを展開したフォルダ内へコマンドライン端末で cd して、以下の通り入力して実行してください:

java -jar VCSSL.jar
(プログラムの内容を書き変えながら使いたい場合は、代わりに VCSSL_Editor.jar を実行)

» javaコマンドが使用できない等のエラーが表示される場合は…

起動後

起動すると、まず同じフォルダ内に「 file.csv 」という名前のCSVファイルが作成され、 その中に以下の内容が書き出されます(メモ帳などのテキストエディタで開いてみてください):

- file.csv -
0.0,0.0
0.1,0.01
0.2,0.04
0.3,0.09
0.4,0.16
0.5,0.25
0.6,0.36
0.7,0.49
0.8,0.64
0.9,0.81
1.0,1.0

これはカンマ記号「 , 」区切りで、 2列(縦の並び)のデータが記載されているものです。 1行(横の並び)がグラフの1点に対応していて、左の値がX座標、右の値がY座標とみなされます。

さて、上記のファイルが書き出された直後に、自動でグラフソフトが起動し、下図の2次元グラフが描画されます:

実行結果のグラフ
実行結果のグラフ
ファイルへのデータの書き出しが完了すると、グラフ画面が立ち上がり、2次元グラフが描画されます。

これは、上で書き出されたCSVファイル「 file.csv 」の中に記載されたデータが、2次元グラフとしてプロットされたものです。

別に、一旦ファイルに書き出さなくても、プログラム内のデータから直接グラフを描く事はできるのですが(アニメーション等ではそうした方が高速です)、 データの数値を目視で確認したり、別のソフトやプログラムと組み合わせて使用する場合などには、ファイルを介してデータをやり取りするのが便利です。

コード解説

このプログラムのコードはVCSSLで記述されています。

内容を書き変えて改造したい場合には、 プログラムのコード「 Graph2DRoundWriteLoadCsv.vcssl 」をテキストエディタで開いて改造してください。 スクリプト言語なので、コンパイラなどの別ソフトは不要で、コードを書き換えるだけでOKです。 VCSSLはC系の単純な文法の言語なので、C言語などに触れた事のある方なら簡単に読めると思います。

コード全体は以下の通りです。

以上です。30行程度の非常に短いコードですね。 詳しい解説は、このサンプルコードの掲載元である 「 VCSSLスタートアップガイド 」 の 「 CSVファイルとグラフの描画 」 の回をご参照ください。

なお、このサンプルコードは、前回のサンプルコード 「 CSVファイルにデータを書き出し、読み込んで2次元グラフを描く 」 とほとんど同じで、数行追記しただけです。 なので、コード内容を追いかけての説明は、上記ページをご参照ください。

さて、今回のコードが前回とどう違うのかというと、x と y の値をファイルに書き出す直前に、 以下の「 丸め処理 」の行が新たに追記されています:

もしこの部分が無いとどうなるかというと、出力ファイルに書き出す x と y の値に、 以下のように非常に小さな( ...000001 のような )誤差が入ってしまいます:

- file.csv (上記の丸め処理の行が無い場合) -
0.0,0.0
0.1,0.010000000000000002
0.2,0.04000000000000001
0.30000000000000004,0.09000000000000002
0.4,0.16000000000000003
0.5,0.25
0.6000000000000001,0.3600000000000001
0.7000000000000001,0.4900000000000001
0.8,0.6400000000000001
0.9,0.81
1.0,1.0

なぜこのような誤差が出るのかは、小数点の付いたfloat/double型の数値(浮動小数点数)を、コンピューター内部で、有限桁数の2進数で扱っている事に関係しています。

例えば、私たちが10進数で小数点付きの数値を記述しようとした際、1/2 の値なら 0.5 と綺麗に書けますが、1/3 の値は 0.33333... と永遠に続いてしまいますね。 イメージ的にはこれと似たような事が起こって、10進数では 0.1 という数値は綺麗に書けますが、実は2進数だと無限に続く数値になってしまったりします。 でも、コンピューター内部では、無限に続く数値は扱えないので、それなりの長さで打ち切って扱います。すると、その打ち切った部分が小さな誤差になってしまうのです。

このような数値は 0.1 以外にも実はたくさんあって、さらに他の種類の誤差もあります。 つまり基本的には、「 float/double型の数値には小さい誤差がかかってくるもの 」と思っておくのが無難です。

※ 数値を画面やファイルへ出力する際には、誤差を見込んで一部を余剰桁と見なして丸められたりするため、 誤差が出るはずの値を変数に代入して、すぐ画面やファイルに出力しても、誤差が見えなかったりします(上記の file.csv 内の0.1など)。 今回使っているround関数の戻り値がfloat型なのに、 丸めた直後の値を表示したりファイルに書き出したりしても誤差が出ていない(ように見える)のも、 そのためです。

一方で、見えなくても誤差そのものは内在しているため、2進数で完全に表せない値を使って計算を行うと、誤差の影響は伝搬します。 そして、そのうちに誤差が余剰桁の範囲を超えて、出力内容の中でも表面化したり、また隠れたりします。 例えば今回のコードでは、0.1 の値を使って x や y の値を計算していますが、file.csv の中で誤差が見えたり見えなかったりしています。

なお、round関数の結果を、float型ではなく、(2進数由来の)誤差が本質的に無い形で取得したい場合は、 引数を 10進多倍長浮動小数点数型の varfloat 型として渡せば、varfloat 型の値が返ってきます。 丸め結果の有効桁数が10桁を超えるような場合には、そちらを用いるのが無難です。 ただし、varfloat型の桁数自体を、digit関数で余裕のある長さに設定しておく必要があります。

幸い、この種の誤差は、大抵の場合はかなり(誤差でない部分と比べて相対的に)小さいので、 数値の適当な桁数以降の部分を切り捨てたり、四捨五入したりすれば、それで済む事が多いです (もちろん、誤差がどの程度かまでを厳密に把握しないといけない専門的な計算などでは、より深い注意が必要です)。

そういった、目的の桁数からはみ出る端数をどうこうするのが丸め処理です。 先ほども見た以下のコードでは、まさにその丸め処理を行っています:

内容はコメントの通りです。 さて、この丸め処理が入る事によって、直後の x と y の値は、ファイルに書き出されている通り:

- file.csv -
0.0,0.0
0.1,0.01
0.2,0.04
0.3,0.09
0.4,0.16
0.5,0.25
0.6,0.36
0.7,0.49
0.8,0.64
0.9,0.81
1.0,1.0

このように綺麗になっています。 なお、今回の丸め処理の効果は、このようにデータを記載したファイルが読みやすくなるだけで、 そもそもが誤差自体が非常に小さいため、グラフにはほとんど影響しません。 ただ、計算がうまくできているかを確認するために、数値ファイルの内容を目視で読む事は恐らくよくあるため、その際に役立ちます。

コード内容は以上です。

詳しいVCSSLのプログラミングガイド(無料)はこちらへ!

上記のコードはプログラミング言語VCSSLで記述されており、VCSSLのプログラミングガイドは下記で無料公開しています。 上記のコードを改造したい方や、新しいコードを書いてみたい方はぜひご活用ください!

ブラウザで読めるWeb版だけでなく、PDF版も無料で配布しています!

スタートアップガイド( プログラミングがはじめての方向け )
プログラミングの入門書に相当する内容です。プログラミングが初めての方はこちらがおすすめです。
即席ガイド( C系言語ユーザー向け )
C言語や C++ などのC系の言語を扱われている方が、即席でVCSSLを扱うための簡易ガイドです。
文法ガイド
VCSSLの文法や基本的な機能を淡々とまとめた、リファレンスマニュアル的な位置づけのガイドです。
GUI開発ガイド
ボタンや入力項目などのGUI部品が並ぶ、画面を備えたVCSSLプログラムを開発するためのガイドです。
2DCG開発ガイド
画面上や画像ファイルなどに、2次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
3DCG開発ガイド
画面上や画像ファイルなどに、3次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
標準ライブラリ 仕様書
コード内で呼び出される関数は、大半が標準ライブラリのものです。その詳細仕様を掲載しています。

ライセンス

このVCSSLコード( 拡張子が「.vcssl」のファイル )は実質的な著作権フリー(パブリックドメイン) である CC0 の状態で公開しています。 そのままでのご利用はもちろん、言語の種類を問わず、改造や流用などもご自由に行ってください。

※ ただし、このVCSSLコードの配布フォルダ内には、ダウンロード後すぐに実行できるように、 VCSSLの実行環境も同梱されており、そのライセンス文書は「 License 」フォルダ内に同梱されています (要約すると、商用・非商用問わず自由に使用できますが、使用の結果に対して開発元は一切の責任を負いません、といった具合の内容です)。 配布フォルダ内の各構成物の一覧やライセンスについては「 ReadMe_使用方法_必ずお読みください.txt 」をご参照ください。

この記事中の商標などについて

  • OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。この記事は独立著作物であり、Microsoft Corporation と関連のある、もしくはスポンサーを受けるものではありません。
  • Linux は、Linus Torvalds 氏の米国およびその他の国における商標または登録商標です。
  • その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。

[ 前へ | 目次 | 次へ ]
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(魔法陣形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、魔法陣のような3次元曲面のグラフを描画します。
[公式ガイドサンプル] CSVファイルにデータを書き出し、読み込んで3次元のメッシュグラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、3次元のメッシュグラフを描画します。
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(花形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、花の形の3次元曲面のグラフを描画します。
[公式ガイドサンプル] CSVファイルにデータを書き出し、読み込んで3次元の線グラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、3次元の線グラフを描画します。
[公式ガイドサンプル] CSVファイルに書かれた数値データを、配列として読み込んで表示する

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルに記載された数値データを、読み込んで配列に格納してから、内容を画面に表示します
[公式ガイドサンプル] CSVファイルにデータを丸めて書き出し、読み込んで2次元グラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを、丸め処理を行った上で書き出し、さらにそれを読み込んで、2次元グラフを描画します。
[公式ガイドサンプル] CSVファイルにデータを書き出し、読み込んで2次元グラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、2次元グラフを描画します。
[公式ガイドサンプル] CSVファイルを読み込んで2次元グラフを描く

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルに記載されたデータを読み込み、2次元グラフを描画します。
この階層の目次
[ 前へ | 目次 | 次へ ]
お知らせ

リニアングラフ3DのVCSSL用APIにカメラ制御関数を追加、回転アニメーションツールも同梱
2019年10月09日 - RINEARNでは10月9日にソフトウェアの最新版をリリースしました。VCSSLのAPI関数の追加や、リニアングラフ3Dのアニメーションツールの追加など行っています。その概要をお知らせします。

小型関数電卓 RINPn(旧称リニアンプロセッサー nano)の公式ページを開設
2019年10月02日 - 現在オープンソースで開発中の、「シンプル&コンパクト」を目指した小型プログラマブル関数電卓ソフト「 RINPn 」の公式ページが、RINEARNサイト内にオープンしました。その概要をお知らせします。

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

新着
3Dグラフを回転アニメーションさせるツール

3Dグラフを、Z軸まわりにゆっくりと回転アニメーションさせるツールです。全角度のグラフを、連番の画像ファイルに保存する事もできます。
2019年10月09日
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
開発元Twitterアカウント