07年1級_CG記述解答-3.indd

Similar documents
コンピュータグラフィックス第8回

コンピュータグラフィックス第6回

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

スライド 1

パソコンシミュレータの現状

平成 年 月 7 日 ( 土 第 75 回数学教育実践研究会アスティ 45 ビル F セミナールーム A 札幌医科大学 年 P ab, を正の定数とする 平面上において ( a, を中心とする円 Q 4 C と (, b を中心とする円 C が 原点 O で外接している また P を円 C 上の点と

補足 中学で学習したフレミング左手の法則 ( 電 磁 力 ) と関連付けると覚えやすい 電磁力は電流と磁界の外積で表される 力 F 磁 電磁力 F li 右ねじの回転の向き電 li ( l は導線の長さ ) 補足 有向線分とベクトル有向線分 : 矢印の位

情報処理Ⅰ

モデリングとは

vecrot

2011年度 筑波大・理系数学

< BD96CA E B816989A B A>

スライド 1

論理と計算(2)

PowerPoint Presentation

Microsoft PowerPoint - 9.pptx

memo

代数 幾何 < ベクトル > 1 ベクトルの演算 和 差 実数倍については 文字の計算と同様 2 ベクトルの成分表示 平面ベクトル : a x e y e x, ) ( 1 y1 空間ベクトル : a x e y e z e x, y, ) ( 1 1 z1

2015-2017年度 2次数学セレクション(複素数)解答解説

2014年度 センター試験・数学ⅡB

2011年度 東京工大・数学

画像類似度測定の初歩的な手法の検証

Microsoft Word - 92.doc

Chap2.key

Microsoft Word - 3new.doc

Microsoft PowerPoint - prog08.ppt

Microsoft Word - 補論3.2

Microsoft PowerPoint - 10.pptx

Microsoft PowerPoint - H22制御工学I-10回.ppt

PowerPoint Presentation

一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア

2010年度 筑波大・理系数学

ARToolKit プログラムの仕組み 1: ヘッダファイルのインクルード 2: Main 関数 3: Main Loop 関数 4: マウス入力処理関数 5: キーボード入力処理関数 6: 終了処理関数 3: Main Loop 関数 1カメラ画像の取得 2カメラ画像の描画 3マーカの検出と認識

メソッドのまとめ

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

行列、ベクトル

Microsoft Word - 415Illustrator

技術者のための構造力学 2014/06/11 1. はじめに 資料 2 節点座標系による傾斜支持節点節点の処理 三好崇夫加藤久人 従来, マトリックス変位法に基づく骨組解析を紹介する教科書においては, 全体座標系に対して傾斜 した斜面上の支持条件を考慮する処理方法として, 一旦, 傾斜支持を無視した

2017年度 長崎大・医系数学

論理と計算(2)

Prog1_6th

Microsoft PowerPoint - ロボットの運動学forUpload'C5Q [互換モード]

2018年度 東京大・理系数学

Microsoft PowerPoint - 04.pptx

プログラミング基礎

Microsoft PowerPoint - 構造力学Ⅰ第03回.pptx

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

プログラミングA

Microsoft Word - VisualBaseManual0.doc

微分方程式 モデリングとシミュレーション

プログラミング入門1

ギリシャ文字の読み方を教えてください

DVIOUT-17syoze

2016年度 京都大・文系数学

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

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

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Microsoft PowerPoint - 9.pptx

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

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

スライド 1

Microsoft Word - 201hyouka-tangen-1.doc

cp-7. 配列

Javaによるアルゴリズムとデータ構造

1999年度 センター試験・数学ⅡB

スライド タイトルなし

1 対 1 対応の演習例題を解いてみた 微分法とその応用 例題 1 極限 微分係数の定義 (2) 関数 f ( x) は任意の実数 x について微分可能なのは明らか f ( 1, f ( 1) ) と ( 1 + h, f ( 1 + h)

ARCHITREND ZERO 汎用コマンド一覧

kiso2-09.key

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

JavaプログラミングⅠ

第1章 単 位

COMPUTING THE LARGEST EMPTY RECTANGLE

プレポスト【解説】

2011年度 大阪大・理系数学

1

以下 変数の上のドットは時間に関する微分を表わしている (ex. 2 dx d x x, x 2 dt dt ) 付録 E 非線形微分方程式の平衡点の安定性解析 E-1) 非線形方程式の線形近似特に言及してこなかったが これまでは線形微分方程式 ( x や x, x などがすべて 1 次で なおかつ

Microsoft PowerPoint - 3.pptx

memo

解析力学B - 第11回: 正準変換

JavaプログラミングⅠ

DVIOUT

フローチャートの書き方

<907D945D F D C789C195CF8D5888EA97978CF68A4A97702E786C7378>

FEM原理講座 (サンプルテキスト)

経済数学演習問題 2018 年 5 月 29 日 I a, b, c R n に対して a + b + c 2 = a 2 + b 2 + c 2 + 2( a, b) + 2( b, c) + 2( a, c) が成立することを示しましょう.( 線型代数学 教科書 13 ページ 演習 1.17)

PowerPoint プレゼンテーション

Microsoft Word - 漸化式の解法NEW.DOCX

数学の世界

DVIOUT-SS_Ma

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

JAVA入門

2006年10月5日(木)実施

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

基本作図・編集

基本作図・編集

C#の基本

2013年度 九州大・理系数学

memo

Excelを用いた行列演算

Transcription:

07 年 CG エンジニア検定 CG 部門 1 級一次試験 ( 記述式 ) 解答 第 1 問 正解答 a.90 b.(2, 0, ) c.(0, 0, -6) d.(-2, 0, -9) e.6 第 2 問 正解答 a.0 b.1 c. 1 ] t 6 t 4 6-2 + g d. 1 2 1 P + P + P 6 6 0 1 2 e. 1 2 1 P + P + P 6 6 1 2 f. 1 ] t 2-4 t g 2 g. 1 ^ P P 0 2 2- h h. 1 ^ 2P 1+ P 2h i. 1 ^ P 1+ 2 P 2h

第 問 正解答 a. I ] r g= k ] r g I ] r gcos a= 0 d d i N $ L 4 2 10 I d ^gh= k d ^gh I i ^gh cos a= 0. 4# 10# = 4# = = N L 5 18 5 5 I ] bg= k ] bg I ] bgcos a= 0 d d i b. 1 15 2 ^7, -, 1h c. ^7, -, 1h $ ^1, -2, h 7 40 50 cos c = = + + = = 15 2 1+ 4+ 9 0 7 0 7 5 7 4 d. 4 5 625 625 I s= k s I i cos c= 0. # 10# d n = # = 7 969 12 第 4 問 (1) y (2) ^-a, ah ^a, ah ^-a, ah y ^a, ah E S E x x S ^-a, -ah ^a, -ah ^-a, -ah ^a, -ah () y (4) ^-a, ah ^a, ah ^-a, ah y ^a, ah S E x E S x ^-a, -ah ^a, -ah ^-a, -ah ^a, -ah

第 5 問 正解答 C 言語 Java 共通 a.vol_y b.(k-vol_x/2.0)*(k-vol_x/2.0)+(j-vol_y/2.0)*(j-vol_y/2.0) c.vol_z d.volume[k][j][i] e.mip[k][j]

07 年 CG エンジニア検定 CG 部門 1 級一次試験 ( 論述式 ) 解答 第 1 問 正解答例 a. 12 14 25 16 18 22 17 15 17 24 1 15 b. バイリニア補間式 : f ^ x, yh= 22-8x- 6y+ 12xy 判別式 :D=-12 等高線 : 16 22 14 c.d=0 を式 に代入すれば, 直ちに c2 c1 d x+ n d y+ n= 0 c c c2 c1 を得る. したがって,x + = 0もしくは y+ = 0. すなわち, その等高線はスクエアを4 分割する縦横 2 本 c c の漸近線自身になる. d. 漸近線同士の交点および漸近線とスクエアの辺との交点の符号を考慮すれば, 図 のいずれの場合も,4 つのサブスクエアはパターン0,1,,4のいずれかになっていることがわかる. そのままでは複雑で分類しきれないスクエアを細分することによって, より単純な既知のケースに帰着させていることから, この手法は, 分割統治法の原理に基づいているということができる.

第 2 問 正解答例 a. もともと 2 次元の画像を 次元に拡張した 次元画像, すなわちボリュームデータの形式が適している. 具 体的にはボクセル表現やオクトリー表現などである. b. 等値面 ( アイソサーフェス ) 抽出処理を行えばよい. 具体的には, マーチングキューブ法などのアルゴリズム を用いて, 臓器と空洞部分, 臓器どうし, あるいは骨と筋肉などの境界面を求め, 細かいポリゴンで表面を近 似したモデルに変換する. c. 例 1. 注釈表示 ( アノテーション ) 機能 各臓器 筋肉 骨の名称を, 引き出し線も付けて CG 画像に上書きし表示する必要がある. 拡大縮小操作 の影響を受けず画面上で一定の大きさで文字列を表示する. また, 回転操作の影響も受けず常にユーザ の側を向くように表示する必要もある. 2. 半透明表示 非表示制御機能 人体の内部は多くの器官が重なり合っているため, 任意の器官を選択的に半透明表示したり非表示にし たりする機能をもつことが望ましい.. 断面表示機能 各器官の形状を把握しやすくするため, 断面を表示し, 断面位置をマウス操作で連続的に移動できるこ とが必要である. 少なくとも垂直 水平 奥行きの 方向の断面設定機能が必要である. また, ユーザイ ンタフェースを工夫して任意方向の断面をとる機能があることも望ましい. 4. その他 たとえば, 立体視表示 (D 表示 ) 機能, 拡大縮小時の LOD 機能, など. d. 例 1 つは, 特殊なハードウェア装置が必要かどうかを確認する必要がある. たとえば, マウスで操作する PC だ けでよいのか, メスに見立てた特殊な 次元入力装置が必要なのか, 表示装置として VR で使うような没入感 のある大画面表示装置が必要なのか, などである. 2 つ目には, ソフトウェアの機能として, 元の断層画像データを取り込むかどうかを確認する必要がある. 一般的な訓練のためなら不要だが, 毎回の手術対象患者のデータを取り込むには前処理部をユーザ用に改変 する必要があるため, 大幅な追加開発が発生する. そのほか, メスで患部を開く機能でどの程度リアルに変形を行うか, 操作中に血管とメスとの干渉チェッ クを行うかどうか, などがポイントとなりうる.

第 問 正解答例 C 言語の場合 int projection(vector v0[], Vector v1[]) /* v0[0], v0[1], v0[2] T0 の頂点 */ /* v1[0], v1[1], v1[2] T1 の頂点 */ { Vector w0[2]; /* T0 の2 辺を表すベクトル */ Vector w1[2]; /* T1 の2 辺を表すベクトル */ Vector lgt; /* 平行光の方向ベクトル */ int flag; /* 判定値 ; 内部なら 1, さもなければ0 */ int i; /* ループカウンタ ; i = 0,1,2 */ Matrix M0, M1; /* x 行列, およびその逆行列 */ Vector c0; /* 方程式の定数項ベクトル */ double t0, t1, t2; /* 方程式の 変数 */ Vector tv; /* t0,t1,t2 を要素とするベクトル */ Vector v2[]; /* T2 の頂点 v2[0],v2[1],v2[2] */ /* T0 の2 辺を表すベクトルw0[0], w0[1] を求め, */ /* 平行光の方向ベクトル lgt を求める */ w0[0] = subtract(v0[1], v0[0]); w0[1] = subtract(v0[2], v0[0]); lgt = crossproduct(w0[0], w0[1]); /* T1 の2 辺を表すベクトルw1[0], w1[1] を求める */ w1[0] = subtract(v1[1], v1[0]); w1[1] = subtract(v1[2], v1[0]); /* T0 の つの頂点 v0[0],v0[1],v0[2] に対して同じ処理を行う */ flag = 1; /* 判定値 flag に初期値 1 を与えておく */ for (i = 0; i < ; i++) { /* t0,t1,t2 を つの変数とする下記の方程式を解く : */ /* v0[i] + t0 * lgt = v1[0] + t1 * w1[0] + t2 * w1[1] */ /* x 行列 M0, 定数項 c0 を用いると, 方程式は下記のように書ける : */ /* [t0 t1 t2] * [M0] = [c0.x c0.y c0.z] */ M0 = setmatrix(-lgt.x, -lgt.y, -lgt.z, w1[0].x, w1[0].y, w1[0].z, w1[1].x, w1[1].y, w1[1].z); c0 = subtract(v0[i], v1[0]); /* M0 の逆行列をM1 とすると, t0,t1,t2 は以下のように求められる : */ /* [t0 t1 t2] = [c0.x c0.y c0.z] * [M1] */ M1 = invert(m0); tv = mulvecmat(c0, M1); t0 = tv.x; t1 = tv.y; t2 = tv.z; /* T2 の頂点 v2[i] を求める */ v2[i] = addsclmul(v0[i], t0, lgt);

/* t1,t2 がいずれも0 または正で, なおかつ t1+t2 が1 以下ならば, */ /* v2[i] はT1 の内部に完全に含まれる. これらの条件がひとつでも */ /* 成立しない場合は, 判定値 flag を0 にする */ if (t1 < 0.0) { else if (t2 < 0.0) { else if (t1 + t2 > 1.0) { /* T2 を描画する */ drawtriangle(v2[0], v2[1], v2[2]); /* 判定結果を返す */ return flag; Java の場合 public static int projection(vector[] v0, Vector[] v1) /* v0[0], v0[1], v0[2] T0 の頂点 */ /* v1[0], v1[1], v1[2] T1 の頂点 */ { Vector[] w0 = new Vector[2]; /* T0 の2 辺を表すベクトル */ Vector[] w1 = new Vector[2]; /* T1 の2 辺を表すベクトル */ Vector lgt; /* 平行光の方向ベクトル */ int flag; /* 判定値 ; 内部なら 1, さもなければ0 */ int i; /* ループカウンタ ; i = 0,1,2 */ Matrix M0; /* x 行列 */ Matrix M1; /* M0 の逆行列 */ Vector c0; /* 方程式の定数項ベクトル */ double t0, t1, t2; /* 方程式の 変数 */ Vector tv; /* t0,t1,t2 を要素とするベクトル */ Vector[] v2 = new Vector[]; /* T2 の頂点 v2[0],v2[1],v2[2] */ /* T0 の2 辺を表すベクトルw0[0], w0[1] を求め, */ /* 平行光の方向ベクトル lgt を求める */ w0[0] = subtract(v0[1], v0[0]); w0[1] = subtract(v0[2], v0[0]); lgt = crossproduct(w0[0], w0[1]); /* T1 の2 辺を表すベクトルw1[0], w1[1] を求める */ w1[0] = subtract(v1[1], v1[0]); w1[1] = subtract(v1[2], v1[0]);

/* T0 の つの頂点 v0[0],v0[1],v0[2] に対して同じ処理を行う */ flag = 1; /* 判定値 flag に初期値 1 を与えておく */ for (i = 0; i < ; i++) { /* t0,t1,t2 を つの変数とする下記の方程式を解く : */ /* v0[i] + t0 * lgt = v1[0] + t1 * w1[0] + t2 * w1[1] */ /* x 行列 M0, 定数項 c0 を用いると, 方程式は下記のように書ける : */ /* [t0 t1 t2] * [M0] = [c0.x c0.y c0.z] */ M0 = setmatrix(-lgt.x, -lgt.y, -lgt.z, w1[0].x, w1[0].y, w1[0].z, w1[1].x, w1[1].y, w1[1].z); c0 = subtract(v0[i], v1[0]); /* M0 の逆行列をM1 とすると, t0,t1,t2 は以下のように求められる : */ /* [t0 t1 t2] = [c0.x c0.y c0.z] * [M1] */ M1 = invert(m0); tv = mulvecmat(c0, M1); t0 = tv.x; t1 = tv.y; t2 = tv.z; /* T2 の頂点 v2[i] を求める */ v2[i] = addsclmul(v0[i], t0, lgt); /* t1,t2 がいずれも0 または正で, なおかつ t1+t2 が1 以下ならば, */ /* v2[i] はT1 の内部に完全に含まれる. これらの条件がひとつでも */ /* 成立しない場合は, 判定値 flag を0 にする */ if (t1 < 0.0) { else if (t2 < 0.0) { else if (t1 + t2 > 1.0) { /* T2 を描画する */ drawtriangle(v2[0], v2[1], v2[2]); /* 判定結果を返す */ return flag;