ここでは、前回扱ったライブラリ以外で、よく用いるライブラリについて扱います。
標準ライブラリは、前回扱ったものが全部ではありません。 前回扱ったライブラリは、VCSSL 2.0 の頃から存在し、言語として最低限必要になる基板機能を提供しているものです。
そして VCSSL 3.0 以降では、より幅広い機能を提供するライブラリも順次増えていっています。 それらは、最初は標準ライブラリとは別扱いの位置づけでしたが、 VCSSL 3.4 の時点で多くが標準ライブラリに統合されました(旧 Open VCSSL Library など)。
以下では、実際にそららの内のいくつかを使用してみます。
まずは、「スタック」や「キュー」などのデータ構造を扱うライブラリです。
スタクとキューは、値を出し入れして、溜めておくための仕組みです。 両者で異なるのはデータ の取り出し順序で、 キューは入れた順に、スタックは逆順に取り出します。 つまりスタックでは、最後 に入れたデータが最初に取り出されます。
データ構造を扱うための機能は、一般にジェネリクスを用いた構造体と関数によって提供されます。 そのため、任意型の値(自作の構造体を含む)を扱う事ができます。
以下に使用例を掲載します:
上のプログラムを実行すると、VCSSL コンソールに以下のように表示されます:
上の通り、スタックでは入れたのと逆順に、キューでは入れた順に、値が取り出された事が分かります。
data.Stack/Queueはスタックとキューを扱うライブラリで、詳細情報は以下のURLで参照できます。
描画やアニメーションなど、特別な処理を記述する必要があるものの、 頻繁に用いられるような用途に関しては、毎回同じような内容を記述しなくても済むように、 軽量フレームワークが用意され ています。
用途に応じたフレームワークを用いる事で、ゼロからプログラムを開発しなくても、 最低限 必要な部分だけを記述すれば済むようになります。
実際に3D描画を扱うためのフレームワークを使用してみましょう:
上のプログラムを実行すると、下図のような3Dアニメーション映像が表示されます。
上で用いた graphics3d.Graphics3DFramework は、3D描画用途をサポートする、 アニメーション対応のフレームワークです。 詳細情報は以下の URL で参照できます。
VCSSLには、3D描画を扱うための標準ライブラリ「 Graphics3D 」が存在します。 しかし、それだけで現実的な3Dプログラムを開発するには、表示画面や描画エンジンの生成や、 アニメーションループの制御、ライトの設定など、面倒な処理を自分で記述する必要があり、 簡易用途ではやや不便です(逆に、細かい部分まで自分で調整したい場合には便利です)。
そこでgraphics3d.Graphics3DFrameworkを使用すると、 そういった面倒な部分はフレームワークが自動で行ってくれます。 そして、準備が完了したタイミングでonStart関数、 アニメーション中の画面更新タイミングでonUpdate関数を呼んでくれます。 なので、これらの関数内に目的の処理を記述するだけで、手軽に3Dアニメーションプログラムを開発できます。
なお、このフレームワークでは、あくまで面倒な部分を自動化してくれるだけなので、 独自に記述する部分に関しては標準ライブラリ「 Graphics3D 」の関数を使用する必要があります。 上のプログラムでも、モデルの生成や配置、移動などにGraphics3Dライブラリの関数を使用しています。 標準ライブラリ「 Graphics3D 」に関する詳細情報は以下のURLで参照できます。
なお、3D同様、2D描画用のフレームワークも用意されています。使用例を以下に掲載します:
上のプログラムを実行すると、ウィンドウに線、長方形、楕円が表示されます。
上で用いたgraphics2d.Graphics2DFrameworkは、2D描画用途をサポートする、 アニメーション対応のフレームワークです。詳細情報は以下のURLで参照できます。
描画関数などに関しては、標準ライブラリ「 Graphics2D 」を使用する必要があります。詳細情報は以下のURLで参照できます。
独立したソフトウェアのようなツールとやり取りするAPIライブラリも存在します。 例えば、グラフソフトと通信し、グラフをプロットする機能を提供するライブラリなどが挙げられます。 ただし、そうした機能は実装規模が比較的が大きいため、サポートされるかどうかは、処理系開発元の判断によります。 グラフソフト関連の機能などは、数値計算分野に向けた処理系ではサポートされるかもしれませんし、 全く必要の無い用途に向けてはサポートされないかもしれません。
以上のような事を前提とした上で、 数値計算用の2D/3Dグラフソフトを制御するためのライブラリ仕様が、以下のURLの通りに用意されています。
上の「 tool.Graph2D/Graph3D 」ライブラリがサポートされている処理系においては、 上記仕様の通りに、2D/3Dグラフをプロットする事ができます。
実際の使用例は、細かい部分は処理系依存ですが、大まかに以下のようになります。まずは、2Dグラフの場合です:
実行すると、以下のようなグラフが表示されます:
座標軸の目盛りやラベルがどのように表示されるかは処理系依存です。
続いて、3Dグラフの場合です:
実行すると、以下のようなグラフが表示されます:
座標軸の目盛りやラベルがどのように表示されるかは処理系依存です。