熊本大学学術リポジトリ Kuaoto Unersty Reostor Ttle プログラムの動的三次元グラフィックス化の研究と研究 支援用ライブラリの開発 Author(s 長谷川, 浩史 Ctaton Issue date 2011-03-17 Tye URL Presentaton htt://hdl.handle.net/2298/23902 Rght
プログラムの動的三次元動的三次元グラフィックスグラフィックス化の研究研究と研究支援用ライブラリライブラリの開発 長谷川浩史公立大学法人大阪市立大学大学運営本部研究支援課 1. はじめに筆者は 現在プログラムの動的三次元グラフィックス化の研究に取組んでいる この研究の切っ掛けは 長年携わってきた教育支援業務の C 言語演習の経験に負うところが大きい 又 この研究をしながらも感じたのは 情報等の分野で提案されている手法をデモしたり 特定のをさせたりして その能力等を確かめたり 比較したりすることができると非常に研究に役立つツールになるのではと考えられることである 本報告では このような研究支援のためのプログラムの開発についても述べる 2. プログラムの動的三次元動的三次元グラフィックスグラフィックス化プログラムを理解させるために 解説本やテキスト等ではフローチャートや動作を説明する図等がよく利用される コンピュータは逐次的にを行っており 図も静止のものより信号の流れを取り入れた動的なもののほうが 視覚的効果が高くなるのではと思われる 又 近年 3D ディスプレイやグラフィックス技術の進歩と共に 3D 表現をパソコン等で実現することが容易になりつつあり プログラムの理解を直感的 視覚的に深めさせる手法として この 3D 技術を積極的に取り入れた表現法も重要になってくると考えられる このような観点からプログラムの動的三次元グラフィックス化の研究を進めている 2.1 3D 表現の導入本手法は プログラムの説明 ( 表現 に 従来的手法のフローチャートや静止の説明図に 動きと 3D 表現を取り入れたものであり 図 1に示すようにソースプログラムが表示され 右側にはフローチャートが表示される 勿論別々に表示するようにもしてもよい 図 1の右側に示すフローチャートは PAD(Proble Analyss Dagra をベースとしている PAD は プログラムに従うチャートに個人性がでにくい特徴があることから利用している これに まず プログラミングの初心者に直感的 視覚的な理解が得られやすくなるような 表現法を研究する それから 上級者用の内容も追加をしていく予定にしている フローチャートの各部分をクリックすると 各部分の内容に応じた各命令文等の CG 表現が出現する 各部分の表現は 図 2 図 3 図 4に示す如くである 命令文の各表現は 命令文そのものを ( テキスト 表示する場合と CG 表現をする場合を選択できるようにし 繰返し文内の各や ソースプログラムの実行を示すために その文が立体化 又は 前面に浮き上がる ( 飛び出す ようにしている 図 1の例の変数の宣言及び 代入文 入 nt a,b=0; nt c; a=3; scanf( %d,&b c=a+b; rntf( 合計 %d n,c; 入力 力文及び出力文の場合 コンパイラにより 表 1 2 のようなテ ーブルが作成される 1 は 変数のテーブル 2 は 定数のテー ブルを示す この表に番号が付けられ 例えば 変数 a の場合は 出力 図 1 プログラムと PAD 図 2 キーボード 図 3 ディスプレイ
プログラムプログラムプログラムデータデータデータメモリ 表 1 変数 nae tye 番地 プログラムカウンタ &0 不定 &1 不定 &f0 0 &f1 0 データ領域領域領域領域プログラムカウンタ 0 a nt 0 選択回路 増分加算 命令レジスタ レジスタ &4 0 &5 0 &8 6 &9 0 &f4 4 3 &f5 5 0 &f8 8 % &f9 9 d &fb % &fc d &fd n 1 b nt 4 2 c nt 8 アキュムレータ論理整数演算 +*/- +*/- 浮動小数点演算 プログラム領域領域領域領域演算回路 表 2 定数 tye 内容番地 演算回路 キーボード ディスプレイ合計 6 0 整数 0 f 0 1 整数 3 f 4 2 文字 %d f 8 図 4 3 文字 %d n f b (1,0 のように符号化される ( トークン このトークンに従って メモリに変数が割り当てられていくが a の場合は初期化されていないので その内容は最初は不定 ( ゴミ値 である (1,2 の c も同様 又 (1,1 の b は 定数 0 のトークン (2,0 により 0 が格納される 次に a に定数の 3 が格納され それから 入力文の scanf が実行されると 図 4の中に キーボードがズームアップされてくる 入力待ちの状態で数字キーを押すと データがバッファに格納され enter キーが押されるとバッファの内容が解読され この場合では nt の 10 進整数 ( の2 進数 として 変数 bのアドレスのメモリに格納される そして a+b の整数演算が行われ 結果が c に格納される それから rntf 文の文字列が解読され cの内容を %d の 10 進整数型でモニターに出力する 最後に n が解読され改行復帰が行われる このようなを アドレスバス データバス上のデータの流れを動的に示しながら パーツのズームアップ等も交えて表現して行く このように動き等を付加することにより 単に命令文の列の説明より よりイメージ的にプログラムの働きが認識しやすくなると考えている 勿論 scanf rntf は関数なので 関数の動作を考慮した表現をする必要がある しかし それは 上級用で追加することにする 3. 研究支援用ライブラリ情報等の分野で提案されている手法をデモしたり 特定のをさせて その能力等を確かめたり 比較したりすることができるそのようなツールが ライブラリ等としてあれば ユーザーにとっては 非常に便利で 役に立つものと思われる 筆者は 2. の研究に取組みながら 又 研究室に在職していた経験からもその必要性を強く感じている そのために このようなライブラリの開発を始めており まず これまでに作成したプログラムのライブラリ化をはかることにする 3.1 力情報を用いたいた 1 張らは 図の各点は 電荷を帯びた点電荷と考え 図形の各点は その影響をうけたクーロン力が作用しているとする そして このクーロン力を利用したクラスタリング手法を提案した 今 D 次元パターン空間に n 個のパターン x f があるとする 簡単のため 4πε 0 を省略すると x とx 間の力は (1 式で表される ( 1 n q q = r 3 任意のパターン 1 r = r 3 r x が他の 1 { f 1..., f 1, f 1..., fn} f + R = E(( f Ef ( f Ef T (1 f 1 ( x = r 3 x x r n 個のパターンから力が与えられているとき その和は (2 式となる とすると f の共分散行列は (3 式で示される (3 (2
ここで E は期待値を示し R の固有ベクトルと固有値をそれぞれc...c c 1 λ 1 を力の特徴ベクトル f ( x を特徴値と呼ぶことにする 3.2 二つのつのパターンパターン クラスクラス間の類似度 パターンx とパターンx 間の類似度を (4 式のように定める S (, = s (, + 2s (, + 3 ここで 各 は定数である s (, = 1 f s (, = r 1 ( x f ( x f ' (5 T 2 ( f ( x f ( x f ( x f ( x (6 クラスター c とc の類似度を (7 式のように定める q S ( q, = w S (, J (7 c x c x c q (4 λ...λ 1 D 1 D ( λ1 λ2... λd とし 3.3 MNN(Mutual Nearest Neghborhood クラスタリング法 Gowda 2 らにより提案されたこの手法は 二つのパターン間の MNV (Mutual Neghborhood Value を計算する 今 パターンx A がx B の S 番目の近傍で x B がx A のt 番目の近傍である場合 MNV は (8 式となる MNV ( A, B = MNV ( B, A = s+ t (8 クラスタリングでは MNV ( A, B = MNV ( B, A = 2 のパターン同士を融合し新しいクラスターとする 図 5は この手法を手書き文字 (ETL-9 に適応した例の結果を示したものである 図 5の子ウインドウの左は原画を 右側は結果を示している 各パターンやクラスターに対して (4 式と (7 式に従う類似度を算出し MNV 値を求め クラスタリングを行っていく 但し 特徴値に閾値を設け 閾値以上で MNV 値が 2 のものを融合している 更に 小さいク 図 5 力情報を用いた例 図 6 ダイアログとメニュー ラスターは 距離情報のみを用いて融合させている プログラムは Wndows ベースで動作し C 言語で作成している まず 大きなウインドウの親ウインドウが立ち上がる メニューの中のオープンをクリックすると 図 6 下のメニュー項目が出現し database 番号アイテムを選択すると 図 6 上のダイアログが現れる ここで 番号を入力し OK をクリックする 次に database ファイルを選択すると 図 5の子ウインドウが現れ 左側に 番号アイテムで指定した文字パターンが表示される メニューの力特徴抽出をクリックすると クラスタリングが実行され その結果が 子ウインドウの右側に濃淡値で示される この文字の 1 のドット数は 1150( 初期クラスター数 で クラスタリングされ ここでは 37 クラスターまでに分類されている 4. まとめ
研究支援用ライブラリの開発は 今後どのような形でプログラムを共通化していけばよいのか検討する必要があり 同様の仕事をされている方や興味を持っておられる方等との情報交換を希望している 又 プログラムの動的三次元グラフィックス化の研究は 3D 化を更に進める予定である 尚 この研究は 日本学術振興会より平成 22 年度科学研究費補助金 ( 奨励研究 22918018 の助成を受けて行われている 参考文献 (1 張 : ニューラルネットワーク及び視覚心理学的手法によるパターン分類及び生成に関する研究 大阪市立大学大学院博士論文 平成 7 年 2 月 (2K.C.Gowda et al: Aggloerate clusterng usng the concet of utual nearest neghborhood Pattern Recognton ol.10 105-112 1972