図形科学およびプログラミング基礎教育用モデリングソフトウエアの開発 新津 靖 東京電機大学情報環境学部 270-1382 千葉県印西市武西学園台 Tel:0476-46-8325,Fax:46-8449 e-mail: [email protected] 1. はじめに 大学の初等教育において,機械系学科や土木・建築 系学科では図学教育が行われている.著者は,東京電 機大学において図学教育のための教育用 3 次元ソリッ ドモデラーを開発し,過去 10 年間にわたり 1 年次生に 対して図形科学教育に使用してきた.一方,著者は 2001 年に工学部から情報環境学部に移動し,図形科 学の教育だけでなくプログラミングの基礎教育にも携わ るようになった.1 年次生のプログラミング教育では JAVA や C 言語が使われるが,コマンド入力によるコン パイルと実行のため,実行の流れが把握しにくく,また 学習のモチベーションを維持するのが困難な学生も多 い.そこで,本研究では,プログラミング教育の導入教 育に使用することを目的に,従来の教育用の3次元ソリ ッドモデラーにプログラミング要素を取り入れた独自のソ リッドモデル記述言語とその翻訳ソフトウエアを開発した. 従来のソリッドモデラーでは,変数と繰返し制御(repeat) が使えるだけであったが,さらに(1)各種数学関数,(2) 数式による立体モデル生成,(3)if else 文や for 文,while 文などの制御構造コマンド,(4)キーボード入力関数,マウ ス入力関数,文字出力などの入出力機能,(5)音出力機 能などを付加し,立体モデルを使ったビジュアルなプロ グラミングが可能なインタープリタを開発した.このソフト ウエアは 2010 年度の情報環境学部の1年生前期のデ ザインおよびプログラミング基礎教育の授業(新授業科 目)において使用する予定である.また,従来のソリッド モデラーではフリー版が機能限定版であったのに対し, 本ソフトウエアは機能を限定せずフリーソフトとして配布 する. 2. ソリッドモデラーの形状表現とプログラミング機能 2.1 内部形状モデルとデータ構造 開 発 し た 教 育 用 3 次 元 ソ リ ッ ド モ デ ラ ー 「 Solid Interpreter」は,テキスト形式の独自のスクリプト言語を 解釈してモデルの構築,演算,表示を行うソフトウエア である. このソフトは,基本立体と呼ばれる 13 種類(内 部的には 37 種類以上)の立体に移動や回転,アフィン 変換,集合演算などを施して希望とする3次元立体を構 築することができる.図1に主な基本立体を示す. 図1 の矢印は,上の基本立体と同じ生成プロセスで下の基 本立体を生成していることを示している.これらの基本 立体を生成するコマンドは専用の GUI ツールにより簡単 社団法人 私立大学情報教育協会 平成21年度 全国大学IT活用教育方法研究発表会 に生成することができる.これら以外にも正多面体など も基本立体として生成できる.立体のデータ形式は,境 界表現法(B-Rep)で表されている.すなわち,頂点・稜 線・面のデータで立体の境界を表現している. 頂点・稜 線・面の位相データには Winged Edge データ構造を採 用している.立体モデルのグループ構造化や動作をさせ るための軸機能も備えている. 立体モデルの作成は,生成した基本立体に,移動, 回転,集合演算,変形などを施して行う.スクリプトは, 基本的に「コマンド」,「オプション」,「操作対象オブジェ クト」,「パラメータ」を1行または複数行に記述する.先 頭のトークンがコマンドでない場合は,立体やグループ, 変数などの左辺値として処理される.コピーや集合演算, 式の計算の記述はこのタイプとなる. 2.2 制御構造コマンドの導入 複雑なプログラミングができるように表 1 に示す 3 種類 の制御構造コマンドを導入した.従来は Repeat コマンド のみであったが,if,while,for というプログラミングに良く 使われるコマンドを追加した.C 言語や Java 言語と同様 に{}で実行範囲を指定する.ただし{}は必ず書く必要 がある.これらの繰返しや条件分岐機能と次章で示す 数式表現の導入により,アニメーションや3D ゲームを作 ることも可能になった. 2.3 入出力コマンドの導入 制御構造を機能させプログラミングができるようにする ため表 1 に示す5種類のキーおよびマウス入力機能を 関数として追加した.さらに Wait コマンドに入力がある まで待つ機能を加えた.出力については,文字列を 2 次元および3次元位置に配置させる「文字列要素」を生 成するコマンドと音楽ファイルを読み込みおよび実行制 御するコマンドを追加した. 図 1 基本立体モデル 表 1 制御構造コマンドおよびその他のコマンド 機 能 コマンド 記述方法とパラメータ 図 2 に Plate コマンドにより生成した立体モデルの例を示す. 条件分岐 if else if (条件式) { 実行文 } 図 2 の(a)は 5 式による表現で,(b)は 4 式によるパラメータ設定 繰り返し 1 while while (条件式) { 実行文 } である.最後の式は,範囲指定を3つの数値(初期値,最終値, 繰り返し 2 for for ( 式 1; 増分)をコンマで区切って表現する.図 2 の2つのモデルのス 数値入力 キー入力 式 2; 式 3) { 実行文 } クリプト記述を以下に示す.(a)は,変数 r, t を媒介変数として GetNum 関数として記述され,Dialog 使用して面状の立体を,(b)は線状の立体を生成している. ber() を表示して入力 GetKey() キーの判定とキーコードの 取得(リアルタイム) マウス入 GetMous マウスボタンの状態入力関 力 eBtn() 数 マウス入 GetMous マウス X 座標の取得関数 力 ePosX() マウス入 GetMous 力 ePosY() 音楽コマ Sound <op> “ファイル名” String <op> 要素名, X, Y, <Z> (a) Plate -f Body 5, 0.02; z = 2.4*( exp(-r*r/0.6) ); x = r*cos(t*2); y = r*sin(t*2); r= 0.01, 2.5, 0.12; t= 0, 2.5, 0.08 (b) Plate -l XBody 4, 0.04; z = 10*( exp(-r*r/60)*cos(a*r) ); x = r; y = 0; r= -20, 20, 0.2 マウス X 座標の取得関数 ンド 文字列要 素生成 3. 数式処理機能の導入と数式によるモデル生成 3.1 コマンドパラメータの数式表現 ほとんどのコマンドパラメータに数式表現の記述がで きるように,コマンド解析コードを改良した.パラメータ間 は「,」により区切るようにし,たとえば次のような記述が 可能となった. (a) V = V + 0.1 ; T = T + 0.8 Cone body 12, R*(1+cos(T*3.141592/180.0)), 0.1*T Move body R*sin(V), R*cos(V), T ・・・・・・ (1) 3.2 数式によるモデル生成 数式により面を生成するコマンドを導入した.オプショ ン指定により,面状の立体と線状の立体を作ることがで きる.モデル生成用に 3 つの変数(1 文字の英字が変 数) x, y, z を使用している.それ以外の変数は媒介変 数として使用することができる.コマンド名は表 2 の一番 下に示した「Plate」コマンドである.-f, -l オプションで面 状立体と線状立体の生成を選択できる.オプションの後 には,立体名,厚さ/半径,式数とパラメータが続く.式 数は,面状立体(-f)の生成では 3~5 で,最後の2式が 範囲指定となる.線状立体(-l)の生成では 3~4 式となり, 最後の 1 式が範囲指定となる.以下は,Plate コマンドの パラメータ書式を示している. -f/-l 立体名,厚さ/太さ,式数,x=数式; y=数式; z=数式; 社団法人 私立大学情報教育協会 平成21年度 全国大学IT活用教育方法研究発表会 (b) 図 2 数式による立体モデルの生成例 4. まとめ 従来開発してきた教育用ソリッドモデラーに数式処理 機能を導入した.その結果,スクリプト記述のパラメータ に数式が使えることや制御構造によるプログラミングが 可能なことを確認した.さらに,数式で頂点を設定する モデル生成コマンドを開発し,3次元の関数形状をソリ ッドモデルで表現できることができた. 本ソフトウエアはインタープリタ型の独自言語により立 体構造のモデリングとプログラミングができる.記述方法 はできるだけ C 言語や Java 言語に合わせており,モデリ ングという楽しい作業とプログラミングを組み合わせるこ とで,図形科学やデザインの学習だけでなくプログラミ ングの基礎教育にも適用できるものと期待できる.
© Copyright 2024 Paperzz