このページの本文へ移動

富士通長野システムエンジニアリング

Japan

  1. ホーム >
  2. 製品 & サービス >
  3. [研究開発] >
  4. AVS >
  5. モジュールレポート - data math / coordinate math
トップ 製品概要 事例 ソリューション サポート & トレーニング 体験版CD-ROM 動作環境 価格 技術情報/FAQ お問い合わせ お見積もり ダウンロード リンク集

モジュールレポート(3):data math / coordinate math

AVS/Express Support Module in Main library


Contents


はじめに

AVS5では、Fieldデータの演算を行う場合に field mathモジュールを使用していました。

しかし、field math には以下のような制限がありました。

  • 1つ又は、2つのFieldデータ間の演算しか扱えない
  • log,sin,cosなどの初等関数が扱えない
  • 一つのモジュールで1つの演算しか行えない

また、AVS5には「Fieldデータの座標値に対して演算が行えるモジュールがない」 という問題がありました。

AVS/Expressではこれらの問題に対応した data math, coordinate mathモジュールが用意されています。

data mathモジュール

data mathモジュールは、Fieldデータの値(node)を計算するモジュールです。

以下の特徴があります。

  • 1~4つまでのFieldデータ間で演算を行える
  • log,sin,cos関数を扱える
  • 一つのモジュールで複雑な数式を使った演算が行える

行える演算は以下の通りです。

+, -, *, / 四則演算
% 剰余
&, |, ^ ビットに関するAND, OR, XOR
&&, || 論理的AND, OR
~ 補数
==, != 等号, 不等号
<, > 未満, より大きい
<=, >= 以下, 以上
and(), or(), xor() 論理的AND, OR, XOR
abs() 絶対値
add(), sub(), multiply(),divide() 四則演算
modulo() 剰余
sqrt() 平方根
exp(x) e(オイラー定数)のx乗
pow(x,y) xのy乗
log() 自然対数
log10() 常用対数
sin(),cos(),tan() 三角関数
asin(),acos(),atan() 逆三角関数
sinh(),cosh(),tanh() 双曲線関数
rand() 乱数

サンプルのネットワークと可視化例を挙げます。

計算空間が一次元で配列の数が 100、0.0 ~ 2πの連続した数値をデータとして格納しているFieldデータを用意します。

ネットワークエディタ上にライブラリ Standard_Objects -> Parameters にある float と int オブジェクトを配置します。

float オブジェクトのプロパティ・エディタを表示し、 "All Properties"リストから dimensions を選択します。 追加ボタンを押すと"Current Properties"リストに追加されます。

値を[]に変更し、設定ボタンを押して確定します。 了解ボタンを押してfloatオブジェクトのプロパティ・エディタを閉じます。

同様に、intオブジェクトにも dimensions を設定します。 intオブジェクトの dimensions には、[1](デフォルト)を設定します。

floatオブジェクトを開き、以下のように設定します。 配列型のオブジェクトに値を入力した場合は、Ctrlキーを押しながらリターンキーで確定します。

intオブジェクトには、以下のように設定します。

この配列データから Fieldデータを生成します。

今回は簡単にFieldデータを作成するために、 uniform_scalar_fieldモジュールを使用します。

ライブラリ Accessories -> Field Mappers -> Field Mappers にある uniform_scalar_fieldをワークスペースに配置し、以下のようなネットワークを作成します。

data math のコントロールパネルにあるタイプイン領域に下記の演算式を記述します。

sin(#1)

(注) #1 は一番左の入力ポートに接続されたFieldデータを現します。

    入力ポートは全部で4つあるので #1~ #4 まで4つのFieldデータを扱う演算が行えます。

    例)ベクトルの大きさを求める

    sqrt(pow(#1,2) + pow(#2,2) + pow(#3,2))

これでsinカーブのグラフが現れます。

さらに data math を追加し、以下のようなネットワークを作成します。

追加した data math#1 のコントロールパネルにあるタイプイン領域に 以下の演算をタイプインすると、 条件を満たす時に1が、満たさない時には0が入ったFieldデータが出力されます。

(-2 > (sin(#1)*4)) || ((sin(#1)*4) > 2)

coordinate mathモジュール

coordinate mathモジュールは、Fieldデータの座標データを計算するモジュールです。

以下の特徴があります。

  • 1~4つまでのFieldデータ間で座標の演算を行える
  • log,sin,cos関数を扱える
  • 一つのモジュールで複雑な数式を使った演算が行える

行える演算は data math と同じです。

入力された座標値を現す場合には、#1~#4 の後に x, y, z を続けて表記します。

例えば、一番左に入力された Fieldデータの x座標を現す場合には #1x と表記します。

例)曲座標形式の座標データをデカルト座標系に変換する

X : #1x*cos(#1y)

Y : #1x*sin(#1y)

coordinate math モジュールを用いて少し変った可視化をおこなってみました。

下図は、二次元FieldデータのZ座標値をずらして複数の可視化結果を 1つのウインドウ内に重ねて表示しています。

各モジュールのパラメーターを以下のように設定すると可視化例のように表示できます。

モジュール名 パラメーター名 設定値
coordinate math output nspace 3
X #1x
Y #y
Z 25
coordinate math#1 output nspace 3
X #1x
Y #1y
Z 40
orthoslice axis 2
plane 32
surf plot input nspace 2
scale 0.05
offset 0
isoline number of contours 17
min level 0
max level 255

おわりに

AVS5では新たにモジュールを自作する必要があるような計算も、AVS/Expressでは標準モジュールで実行できるようになりました。

座標値の演算はAVS/Expressで新たに追加された機能ですが、要望の多かった機能ではないかと思います。 可視化の前に座標変換が必要であるデータであっても、元のデータのままFieldデータとして読み込んだ後、座標変換することができます。

data math, coordinate mathモジュールを利用することで、AVSでの可視化の幅が更に広がるでしょう。


AVS Support Center, fns-avssup@cs.jp.fujitsu.com