[ 前へ | 目次 | 次へ ]
2021/04/03

リニアングラフの最新版をリリース、2D版でも描画エンジンの直接操作が可能に

RINEARNではこの度、3次元グラフソフト「リニアングラフ3D」の最新版「 5.6.26 」、 および2次元版「リニアングラフ2D」の最新版「 5.6.24 」をリリースしました。

今回は、それぞれの主なアップデート内容をお知らせします!

リニアングラフ2Dでも、Java®言語による描画エンジンの直接操作が可能に

まずは、今回のアップデートの最も大きな点についてご紹介しましょう。

リニアングラフをJava言語で制御するAPI

リニアングラフは、2D版と3D版の両方において、Java言語から制御するためのAPIをサポートしています。 これにより、ファイルを開いたり、オプションを操作したり、画像を保存したりといった、基本的なグラフ操作をJava言語プログラムから行う事ができます。 加えて、プログラム内で生成したデータを、ファイルを介さずに配列として渡してプロットしたり、それを高速に繰り返してアニメーションさせたり、といった事も可能です。

3Dでは、描画を細かく制御するための、描画エンジンの操作APIを既にサポート
一方で2Dでは…

ただ、プログラムからの制御では、上述のような一般的なグラフソフトの機能の範囲をさらに超えて、 「 ここに、この色と大きさで点を描きたい 」や「 こことここを繋ぐ、これくらいの太さの線を引きたい 」 といった細かい描画操作を行いたくなる場面もあります。

そのような用途をカバーするために、既にリニアングラフ3Dでは、描画エンジンを直接操作可能なAPIをサポートしていました。 一方で2D版の方では、これまで未サポートの状態が続いていました。

今回から、2Dでも描画エンジンの直接操作が可能に

そこで今回のアップデートでは、リニアングラフ2DのJava言語用APIを拡充し、3D同様の描画エンジン操作機能を新たにサポートしました。 これによって、以下のような簡単な記述で、画面上に自由に点や線などを描く事が可能です:

- 描画エンジンAPIの使用例 (部分的に抜き出し) -

上記は、リニアングラフ2Dの配布パッケージ内に「 Sample5.java 」として同梱されているコードから、ヘッダや main 関数宣言などを削って、本質部分を抜き出したものです。

上記を実行すると、以下のように点と線が描かれたグラフが表示されます:

描画エンジンの直接操作機能は、イベント処理などを併せて実装する事で、既存のプロットオプションやその他のグラフ機能と併用できます(同梱の Sample6.java がそのサンプル実装です)。 そのため、自由にグラフ内容を描画したいという用途だけでなく、 既存の方法で(データファイルを開いたりして)プロットしているグラフに、補助線などを重ね描きしたいといった用途にも使用可能です。

この機能の詳しい使い方については、同梱の取扱説明書か、以下のWeb版ユーザーガイドのページ、およびAPIリファレンスのページなどをご参照ください:

上記APIを通して操作可能な描画エンジン機能については、現状ではまだ単純なものしかカバーしていませんが、今後も必要性や需要に応じて拡充していく予定です(3Dも同様です)。

リニアングラフ3Dでは、細かい描画周りの微調整が中心

一方でリニアングラフ3Dでは、今回は大きな機能の追加などは無く、描画周りの品質を向上させるための微調整が中心です。

具体的には、各座標軸の長さを変えても軸ラベルの余白が一定に保たれるようにしたり、 近接した面ポリゴンの遠近制御の精度(Zソート法という描画アルゴリズムを採用しているため、限界があります)を向上させて、 操作時に稀に局所的に前後関係が反転する“ちらつき”を抑えたり、等々です。 詳細は配布パッケージ同梱のリリースノートをご参照ください。

2D/3D両者において、APIで配列データを渡した後に、その配列が内部でバッファとして流用される挙動の修正も

機能面の拡張については、以上の通りです。

加えて、今回のアップデートでは、両者のJava言語用APIにおいて、半ばバグに近い(仕様では未定義な)不便な挙動があった点の修正を行いました。 具体的には、以下の通りです。

Java言語用APIには、グラフに配列データを渡してプロットさせる機能があります。 ただ、渡した配列データは、リニアングラフ内部で読み込まれるだけでなく、一次処理のためのバッファとしても使用され、 従って呼び出し元の配列の内容が、リニアングラフによって書き変えられてしまうケースも存在しました(※グラフの描画内容には問題は生じません)。 例えば、対数プロットオプションを使用した場合などに、配列内の値が対数値に変換されていました。

これは、この機能が、アニメーションなどの高速データ転送時のオーバーヘッドを削るため、 「 バッファを兼ねた配列スペースに値を詰めてそのまま参照を渡す 」という設計/実装になっていたためです。 しかしドキュメントにはその旨の記載もなく、仮に記載があったとしてもデフォルト挙動としては厄介すぎるという判断から、 今回から配列の参照がそのまま渡されるのではなく、別の配列を自動確保した上で全要素値がコピーされて渡されるようにしました。

これによってリニアングラフ内外で配列の参照が切れるため、渡した配列が読まれた後は、リニアングラフ側から操作される事はなくなりました。 一方で、データの受け渡しのオーバーヘッドが若干増加しました。 現状では問題になるようなオーバーヘッドではありませんが、将来的には、 コピーせずバッファ参照を直接渡せる方法も(オプションなどで切り替え可能にして)再びサポートするかもしれません。

その他、細かい点も

他にも、いくつか細かい点の更新などを含んでいます。メニュー非表示時の余白の調整や、ビルド環境の OpenJDK 16 への移行などです。詳細はリリースノートをご参照ください。

今回のアップデート内容は以上です。 今回も、追加/修正されたいくつかの機能において、ユーザー様からのご意見・ご要望や、先行開発版による動作検証などのご協力をいただきました。 今回ご協力くださった方々や、貴重なフィードバックをお寄せいただいた方々には、この場をお借りして、改めて御礼申し上げます。

これからも、RINEARNでは貢献活動の一環として、リニアングラフのメンテナンスや改良を継続してまいりますので、どうぞ今後ともご愛用いただけますと幸いです。


[ 前へ | 目次 | 次へ ]

Vnanoがオープンベータ版に移行、VCSSLの実行環境で標準で実行可能に
2021年04月07日 - ソフト内組み込み用スクリプトエンジン&言語「 Vnano 」がオープンベータ版に移行し、併せて、VCSSLの実行環境でもVnanoコードの実行が可能になりました。詳細をお知らせします。

リニアングラフの最新版をリリース、2D版でも描画エンジンの直接操作が可能に
2021年04月03日 - リニアングラフ2D/3Dの最新版をリリースしました。それぞれのアップデート内容をお知らせします。今回から、2D版でもJava言語APIによる描画エンジンの直接操作が可能になりました。

RINPn のオープンベータ版をリリース! 詳細な公式ガイドも同梱&公開
2021年03月08日 - 2019年より開発進行中のプログラム関数電卓「 RINPn(りんぷん)」が、正式リリースに向けた最終準備段階として、オープンベータ版へと移行しました。その詳細をお知らせします。

この階層の目次
新しいお知らせ

リニアングラフやVCSSLの最新版をリリース、目盛りの位置や内容を自由に指定可能に!
2024-11-24 - リニアングラフ3D/2Dを更新し、自由な位置に、自由な表記内容の目盛りを描けるようになりました! 併せて、Java言語やVCSSLでの、プログラム制御用APIも拡張しています。詳細をお知らせします。

Exevalator 2.2 をリリース、TypeScript 対応によりWebブラウザ上で動作可能に
2024-10-22 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。新たに TypeScript に対応し、Webブラウザ上での式計算にも使えるようになりました。詳細を解説します。

アシスタントAI作成の舞台裏(その2、作成編)
2024-10-12 - アシスタントAIの作成方法解説の後編です。実際にChatGPTの「GPTs」機能を用いて、アシスタントAIを作成する手順や、独自の知識をもたせたり、精度を出すためのノウハウなどを解説しています。

アシスタントAI作成の舞台裏(その1、基礎知識編)
2024-10-07 - アシスタントAI作成方法解説の前編です。今回はまず、アシスタントAIを作る前に抑えておきたい、基礎知識を延々と解説しています。そもそもLLM型AIとはどんな存在か? RAGとは何か? 等々です。

ソフトの利用をサポートしてくれるアシスタントAIを提供開始!
2024-09-20 - RINEARN製ソフトの使い方の質問応答や、一部作業のお手伝いをしてくれる、アシスタントAIを提供開始しました。ChatGPTアカウントさえあれば、誰でも無料で使用できます。使い方を解説します。

Exevalator 2.1 をリリース、新たに Visual Basic に対応
2024-07-28 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。今回から、新たに Visual Basic(VB.NET)でも使用できるようになりました。詳細を解説します。

関数電卓 RINPn(りんぷん)、Esc キーで計算式の一発クリアが可能に
2024-07-20 - 関数電 RINPn の Ver.1.0.2 をリリースしました。今回から、キーボードの「 Esc 」キーを押すと、入力中の計算式を一発でクリアできるようになりました。詳細を解説します。

Exevalator 2.0 をリリース、互換性に注意が必要なバグ修正が 1 件
2024-07-14 - オープンソースの式計算ライブラリ「Exevalator (エグゼバレータ)」の2.0をリリースしました。今回の更新では、互換性に注意を要する 1 件のバグ修正があります。詳細を解説します。

各ソフトウェアをアップデート、リニアングラフのコマンド拡張やVCSSLの英語対応など
2024-02-05 - 各ソフトの一斉アップデートの内容をお知らせします。今回は、リニアングラフのコマンド機能を大幅拡張したのがメインです。また、VCSSLのメッセージ類の英語対応も行いました。

Vnano の Ver.1.1 で実装した反復計算高速化の内側
2024-01-17 - 前回のお知らせ記事の続編です。スクリプトエンジン Vnano の Ver.1.1 において実施した高速化を、エンジン内部の実装面から掘り下げて解説します。