加治/CG論
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[加治/授業関係]]
*第1回 [#y533fc2e]
**環境設定 [#l3356ca3]
***コマンドによるコンパイル方法 [#v9dacd50]
% gcc -I/usr/local/include -I/usr/openwin/include -L/usr/local/lib -R/usr/local/lib -L/usr/openwin/lib
-R/usr/openwin/lib SOURCE-FILENAME -o EXEC-FILENAME -lglut -lGLU -lGL -lXext -lXmu -lX11 -ldga -lm
***シェルスクリプトによるコンパイル方法 [#aed1c529]
+以下のようなシェルスクリプトファイルを作成(ファイル名:glgcc)
#!/bin/sh
gcc -I/usr/local/include -I/usr/openwin/include -L/usr/local/lib -R/usr/local/lib -L/usr/openwin/lib
-R/usr/openwin/lib $1.c -o $1 -lglut -lGLU -lGL -lXext -lXmu -lX11 -ldga -lm
+.cshrcファイルのaliasに以下の記述を追加し、
% source ~/.cshrc
+% glgcc ****でコンパイル
***俺的変更 [#w6618f46]
この状態だと、''AAA.c''というファイルをコンパイル&実行するときに
glgcc AAA
% ./AAA
でいけるが、''AAA.c'',''AAA.h''など、拡張子以外の部分が同じファイルが複数あったときに不便だし、ファイル一つだけであってもTab補完すると''.c''の部分まで補完されてしまうので消すのが面倒。更にもし''AAA.c''でコンパイルしてしまうとこのファイルに上書きされて実行ファイルが出来てしまうため上のスクリプトの部分を変更。
$1.c -o $1
の部分を
$1 -o $1.out
にした。これで''AAA.c''でコンパイルすると''AAA.c.out''というファイルが出来るためわかりやすい。
**演習 [#leb58b34]
***1.テンプレに追記して三角形を書く [#vadb57ac]
-XDrawLine()を用いて3つ線を引いて書く。
***2. 1.の三角形を塗りつぶす [#za14d69d]
-調べた結果XFillPolygon()を使うのが良さそう。座標をNPoint型の構造体として指定することに注意。
**線を引く [#r194d218]
***XDrawLine() [#y3971ad3]
-XDrawLine(display, d, gc, x1, y1, x2, y2)
--Display *display;
--Drawable d;
--GC gc;
--int x1, y1, x2, y2;
**塗りつぶす [#dac1f8f9]
***XFillPolygon() [#fd0b3bd1]
-XFillPolygon(display, d, gc, points, npoints, shape, mode)
--Display* display, /* ディスプレイ変数 */
--Drawable d, /* 描画対象 */
--GC gc, /* グラフィックスコンテキスト */
--XPoint* points, /* 頂点配列 */
--int npoints, /* 頂点の個数 */
--int shape, /* ポリゴンの形 */
--int mode /* 描画モード */
-shape にはポリゴンの形を指定します。凸型の場合は Convex、凸型ではなく辺が交差して ない場合は Nonconvex、辺が交差している場合は Complex を指定します。
-座標モードを指定。 CoordModeOriginあるいは CoordModePrevious を渡すことができる。
***頂点配列 XPoint*について [#l0ed184f]
-XPoint型で宣言すると、
typedef struct {
short x, y;
} XPoint;
で定義される。
-多角形の座標を代入するには、(とりあえず今回は)関数内に
XPoint points[3]
と宣言し
points[0].x = 0; points[0].y = 0;
points[1].x = 30; points[1].y = 0;
points[2].x = 15; points[2].y = 30;
と、多角形の座標をそれぞれ入力することにより塗りつぶしできる。
**引数 [#n7b4506b]
-d
--ドロウアブル(drawable)を指定。
-display
--X サーバへの接続を指定。
-gc
--GC を指定。
-mode
--座標モードを指定。 CoordModeOrigin か CoordModePrevious のいずれかを指定する。
-npoints
--配列中の点の数を指定。
-nsegments
--配列中の線分の数を指定。
-points
--点の配列を指定。
-segments
--線分の配列を指定。
-x1,y1,x2,y2
--線で結ばれる点 (x1, y1) と (x2, y2) を指定。
終了行:
[[加治/授業関係]]
*第1回 [#y533fc2e]
**環境設定 [#l3356ca3]
***コマンドによるコンパイル方法 [#v9dacd50]
% gcc -I/usr/local/include -I/usr/openwin/include -L/usr/local/lib -R/usr/local/lib -L/usr/openwin/lib
-R/usr/openwin/lib SOURCE-FILENAME -o EXEC-FILENAME -lglut -lGLU -lGL -lXext -lXmu -lX11 -ldga -lm
***シェルスクリプトによるコンパイル方法 [#aed1c529]
+以下のようなシェルスクリプトファイルを作成(ファイル名:glgcc)
#!/bin/sh
gcc -I/usr/local/include -I/usr/openwin/include -L/usr/local/lib -R/usr/local/lib -L/usr/openwin/lib
-R/usr/openwin/lib $1.c -o $1 -lglut -lGLU -lGL -lXext -lXmu -lX11 -ldga -lm
+.cshrcファイルのaliasに以下の記述を追加し、
% source ~/.cshrc
+% glgcc ****でコンパイル
***俺的変更 [#w6618f46]
この状態だと、''AAA.c''というファイルをコンパイル&実行するときに
glgcc AAA
% ./AAA
でいけるが、''AAA.c'',''AAA.h''など、拡張子以外の部分が同じファイルが複数あったときに不便だし、ファイル一つだけであってもTab補完すると''.c''の部分まで補完されてしまうので消すのが面倒。更にもし''AAA.c''でコンパイルしてしまうとこのファイルに上書きされて実行ファイルが出来てしまうため上のスクリプトの部分を変更。
$1.c -o $1
の部分を
$1 -o $1.out
にした。これで''AAA.c''でコンパイルすると''AAA.c.out''というファイルが出来るためわかりやすい。
**演習 [#leb58b34]
***1.テンプレに追記して三角形を書く [#vadb57ac]
-XDrawLine()を用いて3つ線を引いて書く。
***2. 1.の三角形を塗りつぶす [#za14d69d]
-調べた結果XFillPolygon()を使うのが良さそう。座標をNPoint型の構造体として指定することに注意。
**線を引く [#r194d218]
***XDrawLine() [#y3971ad3]
-XDrawLine(display, d, gc, x1, y1, x2, y2)
--Display *display;
--Drawable d;
--GC gc;
--int x1, y1, x2, y2;
**塗りつぶす [#dac1f8f9]
***XFillPolygon() [#fd0b3bd1]
-XFillPolygon(display, d, gc, points, npoints, shape, mode)
--Display* display, /* ディスプレイ変数 */
--Drawable d, /* 描画対象 */
--GC gc, /* グラフィックスコンテキスト */
--XPoint* points, /* 頂点配列 */
--int npoints, /* 頂点の個数 */
--int shape, /* ポリゴンの形 */
--int mode /* 描画モード */
-shape にはポリゴンの形を指定します。凸型の場合は Convex、凸型ではなく辺が交差して ない場合は Nonconvex、辺が交差している場合は Complex を指定します。
-座標モードを指定。 CoordModeOriginあるいは CoordModePrevious を渡すことができる。
***頂点配列 XPoint*について [#l0ed184f]
-XPoint型で宣言すると、
typedef struct {
short x, y;
} XPoint;
で定義される。
-多角形の座標を代入するには、(とりあえず今回は)関数内に
XPoint points[3]
と宣言し
points[0].x = 0; points[0].y = 0;
points[1].x = 30; points[1].y = 0;
points[2].x = 15; points[2].y = 30;
と、多角形の座標をそれぞれ入力することにより塗りつぶしできる。
**引数 [#n7b4506b]
-d
--ドロウアブル(drawable)を指定。
-display
--X サーバへの接続を指定。
-gc
--GC を指定。
-mode
--座標モードを指定。 CoordModeOrigin か CoordModePrevious のいずれかを指定する。
-npoints
--配列中の点の数を指定。
-nsegments
--配列中の線分の数を指定。
-points
--点の配列を指定。
-segments
--線分の配列を指定。
-x1,y1,x2,y2
--線で結ばれる点 (x1, y1) と (x2, y2) を指定。
ページ名: