1 / 40

航空宇宙機設計製図 Ⅱ

第4回 (2009/10/23). 航空宇宙機設計製図 Ⅱ. 2009 年度 九州大学 工学部 機械航空工学科 航空宇宙工学コース 3年後期 金曜3限 谷 泰寛. ver. 2009/10/30. 図形処理のための幾何学. 拡大・縮小、回転、平行移動. y. ( x’, y’ ). by. ( x, y ). y. x. x. ax. 拡大/縮小. ・原点に対して、x軸方向に a 、y軸方向に b だけ拡大/縮小 . y. ( x’, y’ ). r. ( x, y ). q. y = r sin a. a. x.

vidor
Download Presentation

航空宇宙機設計製図 Ⅱ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4回 (2009/10/23) 航空宇宙機設計製図Ⅱ 2009年度 九州大学工学部機械航空工学科航空宇宙工学コース 3年後期 金曜3限 谷 泰寛 ver. 2009/10/30

  2. 図形処理のための幾何学 拡大・縮小、回転、平行移動

  3. y (x’, y’) by (x, y) y x x ax 拡大/縮小 ・原点に対して、x軸方向にa、y軸方向にbだけ拡大/縮小 

  4. y (x’, y’) r (x, y) q y = r sina a x x = r cosa 回転 ・原点まわりに半時計方向にθだけ回転 

  5. 平行移動 ・x軸方向にp、y軸方向にq だけ平行移動  y (x’, y’) y+q (x, y) これでも計算可能だが、行列の和の形となってしまう y x x x+p

  6. 平行移動 ・x軸方向にp、y軸方向にq だけ平行移動  y (x’, y’) y+q (x, y) これでも計算可能だが、行列の和の形となってしまう y x x 同次座標表現 x+p

  7. 同次座標表現 座標点を、以下の形式で表現する形式(2次元の場合)  同次座標表現のメリット   ・平行移動が、マトリックスの積で表現できる(前頁)。   ・m=0とすると、特定方向の無限遠点を表現可能。  ・実際の座標値は、 ・3次元の場合は、

  8. 2次元変換マトリックス

  9. 例題 : 左右対称図形を描く

  10. 移動→対称→移動:合成変換 ① ④ (a, b) ③ 平行移動 ② 平行移動 対称移動

  11. コンピュータによる図形描画 コンピュータ グラフィックスライブラリ ディスプレイ アプリケーション プログラム プロッタ プリンタ OS データ

  12. ウインドウシステム • コンピュータの画面出力 複数のタスクにウインドウを割り当て、画面出力を多重化 • 主なウインドウシステム    ・Quartz compositor (Mac OS X )    ・X Window System   (Microsoft Windows : OSにウインドウシステムが組込)

  13. グラフィックスライブラリ • アプリケーションとディスプレイとのインターフェイスを行う関数群 • 主なグラフィックスライブラリ  ・OpenGL    ・Direct2D, Direct3D    ・Quartz    (古くは、 CORE, GKS, PHIGS など)

  14. 本講義での画像表示 ・画面表示・・・X Window System 座標変換等の計算処理部分は自作し、線を引く等の基本的な描画のみを使用するため) ・保存/出力・・・Postscript (EPS) 画像は文書ファイルへ貼り付けて残すものとする。(要すれば、その文書ファイルをプリンタで印刷)

  15. X Window System クライアント・サーバモデルとネットワーク指向   クライアントとサーバの2つのプログラム間で分担して処理   ・サーバ:ウインドウの生成・スクリーン表示、図形の出力、キーボードやマウスの入力処理   ・クライアント:ウインドウの生成を要求、図形の出力を要求 Request サーバ クライアント Reply Event Error

  16. X Window System デバイス独立、OS独立  ・デバイスに依存する部分はサーバが担当するので、アプリケーションはデバイスに依存しない形で書くことが可能  ・サーバ側システムのOSやハードウエアに依存した操作は、サーバが処理を担当  ・アプリケーションは、XlibというC言語で書かれたライブラリの関数をコールし、コールされたXlibの関数がXプロトコルを発生 サーバ クライアント X protocol OS OS

  17. X Window System ソフトウエアの階層とツールキット、グラフィックスライブラリ アプリケーション Widget Xt intrinsics OSF Motif OpenGL / GLX Xlib ※本講義では、直接Xlibをコールするアプリケーションを作成する。

  18. X Window System ビットマップ・ディスプレイを想定 ビットマップディスプレイ: ピクセルと呼ばれる小さな点(画素) の集合で画像を表示する装置

  19. X Window System • ディスプレイ上に画像を描くには、ディスプレイ上のピクセルに個別の色を与える。 • ピクセルの識別のために、ピクセル座標系を利用。 • 左上を原点(0,0)

  20. X Window System ウインドウを表示するプログラム  #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdio.h> main() { Display *d; Window w; d = XOpenDisplay (NULL); w = XCreateSimpleWindow (d, DefaultRootWindow (d), 50, 50, 400, 300, 2, BlackPixel(d,0), WhitePixel(d,0)); XMapWindow (d,w); XFlush (d); getchar (); XCloseDisplay (d); }

  21. X Window System 線を描くプログラム  #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdio.h> int main(){ Display *dsp; Window win; int screenNumber; GC gc; unsigned long white; unsigned long black; long eventMask; dsp = XOpenDisplay( NULL ); screenNumber = DefaultScreen(dsp); white = WhitePixel(dsp,screenNumber); black = BlackPixel(dsp,screenNumber); win = XCreateSimpleWindow (dsp, DefaultRootWindow(dsp), 50, 50, 600, 300, 0, black, white ); XMapWindow( dsp, win ); eventMask = StructureNotifyMask; XSelectInput( dsp, win, eventMask ); XEvent evt; do{ XNextEvent( dsp, &evt ); // calls XFlush }while( evt.type != MapNotify ); gc = XCreateGC( dsp, win, 0, NULL); XSetForeground( dsp, gc, black ); XDrawLine(dsp, win, gc, 10, 10,190,190); XDrawLine(dsp, win, gc, 10,190,190, 10); eventMask = ButtonPressMask|ButtonReleaseMask; XSelectInput(dsp,win,eventMask); do{ XNextEvent( dsp, &evt ); // calls XFlush() }while( evt.type != ButtonRelease ); XCloseDisplay( dsp ); }

  22. X Window System C言語で作成したX Window Systemを使用したプログラムのコンパイル・リンク方法(前頁のサンプル等)  (1) ホスト計算機の場合    ・sample.cをコンパイルし、a.outを作成する場合、 X11のライブラリ(Xlib.h, Xutil.h)をライブラリとして指定する必要がある。 gcc sample.c -lX11 (2) その他のX環境の場合(自宅のPCなど)    ・ライブラリが置いてある場所がシステムによって異なる場合には、    ライブラリの場所を指定する必要がある。 (例)gcc sample.c -L/usr/X11R6/lib -lX11 22

  23. Tips X Window Systemで描画するプログラムを実行する場合は、 ● 「X11(xterm)」上で実行する。 ● ホスト計算機にログインする際に、 ssh -X ah.s.kyushu-u.ac.jp  とする。「-X」を忘れないように。 ● ホスト計算機にログインした時に、「.Xauthorityでエラーが発生」とかいうエラーメッセージが表示される場合は、個人の使用容量制限(100MB?)をオーバーしている可能性がある。(次頁参照)→ 不要なファイルを削除。 だめなら、パソコンから一旦ログアウトしてみる。 ●コンパイルする場合は、「ターミナル」でも良いし、「X11」でも「-X」をつけなくてもよい。 これをきちんとやらないと、 Segmentationなんとかというエラーメッセージが表示される。

  24. Tips 自分がどれくらい容量を使っているかを確認する方法 ● Finderで、自分のIDをクリックした後、 「ファイル」メニュー → 「情報を見る」を選択 「サイズ」の欄を見る(少し時間がかかる)

  25. Tips プログラムは正しそうなのに、コンパイルでエラーが出る場合 エラーメッセージに、「UTF-16がどうしたこうした」と出る場合、Emacsでプログラムを編集した際に、ファイルの先頭に妙な文字が入ってしまっていることがある。(Emacs上では見えないため、原因がわかりづらい。) 確認方法    $ cat ファイル名  として、画面上にファイルの中身が表示されるので、先頭に「??」があるかどうかを  確認する。 対処方法 (「??」があった場合。根本的な解決ではないが。)  ・上で、画面に表示されたものの「??」を除く部分をマウスで選択してコピーする。  ・ Emacs等のエディタで、新しいファイルの編集を行い、コピーしたものを貼付けて、 別名のファイルとして保存する。

  26. Tips 「ターミナル」で文字を大きくするには、 ● 「ターミナル」メニュー → 「環境設定」

  27. Tips 「xterm」で文字を大きくするには、 (方法その1)   ● 次の内容のファイルを作り、「.Xdefaults」という名前で保存する。   ● xterm上で次のコマンドを実行する。       $ xrdb .Xdefaults   ● 「アプリケーション」メニューから、新たに「xterm」を実行する。 (方法その2)   ● xtermを実行する際のオプションで、フォントサイズを指定する。 $ xterm -fn 10x20(このように打ち込むと、新しいウインドウが開く) ◯ 使えるフォントサイズは、5x7 5x8 6x9 6x10 6x12 6x13 7x13 8x13 7x14 9x15 8x16 10x20 12x24 など。 対応していないサイズを指定すると、デフォルトのサイズになってしまう模様。 XTerm*VT100*font: 10x20

  28. Postscript と EPS • Adobe社が開発したページ記述言語の1つ。 • 「ページ記述言語」とは、ページ上に印刷される文字、図形、画像などを記述するための言語。プログラミング言語でもあり、計算や繰り返しなどを記述する能力がある。 • EPS (Encapsulated Postscript)とは、Postscriptを利用して作られた画像ファイルデータ形式の1種であり、文書への貼り付け等を考慮されている。(文法は同じ)

  29. Postscriptによる作画例 バッテンを描くEPSファイル %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 400 300 %%Orientation: Portrait %%Pages: 1 %%EndComments /mydict 120 dict def mydict begin gsave 0.0 0.0 1.0 setrgbcolor newpath 10 10 moveto 300 300 lineto 300 10 moveto 10 300 lineto stroke showpage %%Trailer %%EOF Postscriptでは 左下が原点 上の図は、  ・左の内容のテキストファイルを作成  ・「○○.eps」という名前で保存  ・Powerpointでそのファイルを読み込んで挿入  ・外枠の線は、別。(領域明示のために追加)  ・Postscriptでは、左下が原点となる。

  30. 本講義での使用について X Window System やPostscript をそのまま使うのは若干面倒 ↓ Fortranから簡単な呼び出しで描画できるようなサブルーチン群を用意した。 ただし、機能は限定している。   ・XCgraphics.c : Xlibを使って画面描画   ・PSgraphics.f90 : 作画内容のEPSファイルを作成 ▷両者で、同じ呼び出しとしているため、callする側は修正不要。        ・自作のプログラム+ XCgraphics.c→ 画面表示        ・自作のプログラム+ PSgraphics.f90→EPSファイル出力      のように、コンパイル・リンク時に取り替えればよい。     ▷座標系は、X Window Systemのもので共通(左上が原点、Y軸正は下向き)。     ▷使用マニュアルをWeb ページ上に置いてあるので、参照のこと。

  31. 本講義での使用について プログラムのコンパイル・リンク方法(ホスト計算機上)  (1) XCgraphics.cの場合 ① XCgraphics.c をコンパイルし、XCgraphics.o を作成 gcc XCgraphics.c -c ② main.f90 をコンパイルし、XCgraphics.o とともにmain.x を作成 f95 main.f90 XCgraphics.o -o main.x -lX11 (2) PSgraphics.f90の場合 main.f90 と PSgraphics.f90 をコンパイル・リンクし、main.x を作成 f95 main.f90 PSgraphics.f90 -o main.x 31

  32. XCgraphics.c, PSgraphics.f90 のサブルーチン(1/2)

  33. XCgraphics.c, PSgraphics.f90 のサブルーチン(2/2)

  34. XCgraphics.c, PSgraphics.f90 の使用例 program sample4 implicit none integer i, j, n, xpoint(10), ypoint(10), np real pi character a*1 call xcinit ( 400, 300 ) call xccolor ( 2 ) call xcline ( 10, 10, 300, 300 ) call xccolor ( 5 ) call xclinewidth ( 5 ) call xcline ( 10, 300, 300, 10 ) call xccolor ( 9 ) call xcfillrect ( 30, 100, 50, 30 ) call xcarc ( 90, 200, 60, 100, 0, 360 ) call xccolor ( 7 ) call xcfillarc ( 210, 230, 150, 150, 5, 335 ) call xccolor ( 0 ) call xcstring ( 60, 55, "Sample4.f", 9 ) pi = 4.0 * atan( 1.0 ) np = 6 do i = 1, 6 xpoint (i) = 200 + 40 * cos ((i-1)*72*pi/180.0 ) ypoint (i) = 100 + 40 * sin ((i-1)*72*pi/180.0 ) end do call xccolor ( 6 ) call xcpolygon ( xpoint, ypoint, np ) call xclinewidth ( 3 ) call xccolor ( 3 ) call xclines ( xpoint, ypoint, np ) call xccolor ( 9 ) call xcpoints( xpoint, ypoint, np ) write (6,*) "press enter" read (5,'(a)') a call xcclose end program sample4 sample4.f90

  35. XCgraphics.c, PSgraphics.f90 の使用例 sample4.f90の出力結果  XCgraphics.cによる画面表示 (画面のキャプチャ)※ PSgraphics.f90によるepsファイルを貼付 ※本資料の最終頁を参照。

  36. XCgraphics.c, PSgraphics.f90 の使用例 両者の比較 ・・・ Postscript形式は、拡大しても劣化しない。  前頁の図を拡大したもの XCgraphics.cによる画面表示 (画面のキャプチャ) PSgraphics.f90によるepsファイルを貼付

  37. 参考文献~より詳しく知りたいならば X Window Systemについての解説  ・X Window System: The Complete Refecence to Xlib, X Protocol, ICCCM, XLFD https://www.msu.edu/~huntharo/xwin/docs/xwindows/XWINSYS.pdf  ・X-Window Ver.11プログラミング-第2版、木村凌一ほか著、日刊工業新聞社 Postscript言語についての解説  ・Adobe社によるPostscript言語のリファレンスマニュアル http://www.adobe.com/products/postscript/pdfs/PLRM.pdf  ・Adobe社によるEPSファイル形式の仕様 http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf

  38. 課題 2 (1) 辺の数が3(三角形)以上の多角形を描け。また、それを時計回りに90°回転させた図を描け(座標軸を描くこと)。 (2) 不等辺三角形を描け。また、それを基に各辺の長さを2倍に拡大した不等辺三角形を描け(座標軸を描くこと)。 (3) 適当な多角形を描き、その頂点の一つ(原点を除く)を中心として元の図形を時計回りにn(i)°回転させたときの図を描け。ただし、n(i)= 2,3,5,7,11,13,17,19,23,29,37,41(i=1~12)とする(座標軸を描くこと)。 ・提出日:2009年12月4日(金)講義開始前まで ・提出物:プログラム説明書とプログラムリスト、および作図結果をMicrosoft Word文書形式で提出(※次頁参照) ・提出先: tani@aero.kyushu-u.ac.jp 宛てに電子メールにより提出のこと. ファイル名は「自分の氏名2.doc」等とすること.例えば、「谷泰寛2.doc」

  39. 出力方法 • ディスプレイ上に表示して、作図結果を見る. • eps形式でファイル出力. それを「プレビュー」で開いて確認.(PDFに変換される) Wordに貼付ける場合は、「挿入」→「図」→「ファイルから..」→「epsファイルを選択」. (古いバージョンのWordでは、貼付後に枠だけしか表示されない場合があるが、PDF形式で出力(またはプリンタで印刷)すると、きちんと表示される.)

  40. (参考) Mac OS Xで画面のキャプチャ • 「アプリケーション」→「ユーティリティ」→「グラブ」 • command+shift+3 : 画面全体 • command+shift+4を押した後、マウスで領域を選択      : 画面の一部(マウスで選択した領域) • command+shift+4を押した後、    マウスカーソルをウインドウに載せて、    スペースバーを押して、マウスでクリック      : 一つのウインドウ(マウスで選択したウインドウ)

More Related