熊本大学学術リポジトリ Kumamoto University Repositor Title プログラムの動的三次元グラフィックス化の研究と研究 支援用ライブラリの開発 Author(s) 長谷川, 浩史 Citation Issue date Type URL Presen

Similar documents
プログラミング実習I

計算機アーキテクチャ

ポインタ変数

PowerPoint プレゼンテーション

PowerPoint Presentation

Microsoft PowerPoint ppt

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

プログラミングI第5回

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - C1(演算と変数).ppt

ポインタ変数

Microsoft Word - 3new.doc

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

Microsoft Word - SKY操作マニュアル.doc

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

コンピュータの仕組み(1)ハードウェア

プログラミング基礎

Microsoft PowerPoint - prog04.ppt

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

スライド 1

Prog1_2nd

Wordの学習

情報量と符号化

Microsoft PowerPoint - prog03.ppt

スライド 1

Microsoft PowerPoint - 計算機言語 第7回.ppt

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

スクールCOBOL2002

物質工学科 田中晋

Microsoft Word - 19-d代 試é¨fi 解ç�fl.docx

Microsoft Word - Cプログラミング演習(1)_2012

Prog1_10th

講習No.1

スライド 1

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

ソフトウェア基礎技術研修

スライド 1

情報処理 Ⅰ 前期 2 単位 年 コンピューター リテラシー 担当教員 飯田千代 ( いいだちよ ) 齋藤真弓 ( さいとうまゆみ ) 宮田雅智 ( みやたまさのり ) 授業の到達目標及びテーマ コンピューターは通信技術の進歩によって 私達の生活に大きな影響を与えている 本講座は 講義と

ガイダンス

Microsoft PowerPoint - 第3回目.ppt [互換モード]

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

gengo1-2

<4D F736F F D20342E899E D2091E52D81848FAC82D682CC88F8897A2E646F6378>

Microsoft Word - no02.doc

第1回 プログラミング演習3 センサーアプリケーション

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

文字列 2 前回の授業ではコンピュータ内部での文字の取り扱い 文字型の変数 文字型変数への代入方法などを学習した 今回は 前回に引き続き 文字処理を学習する 内容は 標準入出力 ( キーボード ディスプレイ ) での文字処理 文字のファイル処理 文字を取り扱うライブラリ関数である 標準入出力 Lin

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

プログラミング基礎

C#の基本

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

PowerPoint プレゼンテーション

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Microsoft PowerPoint - kougi2.ppt

演算増幅器

Taro-Basicの基礎・はじめに(公

コンピュータ工学Ⅰ

Microsoft PowerPoint - prog03.ppt

UNIX 初級講習会 (第一日目)

Java講座

NS-Draw Ver

デジタル表現論・第6回

ポインタ変数

講習No.9

JavaプログラミングⅠ

PowerPoint2003基礎編

Microsoft Word - 道路設計要領.doc

memo

第2回講義:まとめ

Microsoft Word - _ ‘C’³_V1.6InstManual.doc

Microsoft PowerPoint - 4.pptx

初めてのプログラミング

kantan_C_1_iro3.indd

2 列 B と 列 C の間にカーソルをあわせ, カーソルの形が変化したところでドラッグして右に移動し, 列 B の幅を約 に設定します 3 列 C の上でマウスをドラッグして右に移動し, 列 C, 列 D, 列 E の 3 列を一括選択します 一括選択ができたら, 列 C と 列 D

PowerPoint Presentation

Report#2.docx

gengo1-8

Microsoft PowerPoint - ruby_instruction.ppt

JavaScriptで プログラミング

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

Microsoft Word - Cプログラミング演習(11)

ゲームエンジンの構成要素

情報処理演習 B8クラス

コンピュータ工学Ⅰ

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

Microsoft PowerPoint - program.ppt [互換モード]

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

4 分岐処理と繰返し処理 ( 教科書 P.32) プログラムの基本的処理は三つある. (1) 順次処理 : 上から下に順番に処理する ぶんきそろ (2) 分岐処理 : 条件が揃えば, 処理する はんぷく (3) 反復処理 : 条件が揃うまで処理を繰り返す 全てのプログラムは (1) から (3) の

スライド 1

Microsoft PowerPoint - C4(反復for).ppt

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

<4D F736F F D208D C8FEE95F18DEC90AC A B D836A B2E646F63>

Microsoft PowerPoint - OS07.pptx

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

講習No.8

memo

Prog1_6th

Transcription:

熊本大学学術リポジトリ 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