C言語でグラフィックス 目次へ 
 前へ 課題1 直線の線種 次へ 

▼課題1 〔gr219.c〕

 直線の線種1から5までのサンプルを描画する。仕様は次図の通りとする。

◎線種の号が1から5まで連続しているので、for文の繰り返し処理で直線を描画していく。変数にint型のnを使うとするとfor文は次のようになる。

for(n = ; n < ; )

◎直線を描画する前にペンを設定する GWsetpen 関数で線種を設定する。線種の番号はfor文で使った変数 n で指定する。色番号と混合モードは変更しないので-1、線の幅は1(1以外では線種が無効になる)とする。まとめて書くと次のようになる。

;  引数 → (色番号, 線種, 幅, 混合モード)

◎直線を描画するには GWline 関数を使う。直線の始点の座標(x1,y1)と終点の座標(x2,y2)を指定して描画する。x1の座標は 50 、x2の座標は 200 である。
 y1(y2も同じ)の座標は380, 360, 340,・・・と20ずつ減っているので、次のような式で計算することができる。

1本目 y1 = 400 - 20 * 1 = 20   このとき、変数nは n=1 である。
2本目 y1 = 400 - 20 * 2 = 40   このとき、変数nは n=2 である。
3本目 y1 = 400 - 20 * 3 = 60   このとき、変数nは n=3 である。

 したがって、変数nを使った一般的な式にすると次のようになる。

y1 =   → 座標は実数で指定するので400.0-20.0*(float)nとなる。
#include <GrWin.h>
 
int main(void)
{
    int    width = 640, height = 400;
    int    n;
 
    GWopen(0);
    GWsize(-5, &width, &height);
    GWsize(-3, NULL, NULL);
    GWvport(0.0, 0.0, (float)width / (float)height, 1.0);
    GWindow(0.0, 0.0, (float)width - 1.0, (float)height - 1.0);
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWclear(-1);
    for(n = 1; ; ++n){
        GWsetpen ;    /* n番の線種設定 */
        ;
    }
    /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
    GWquit();
    return 0;
}

 

 前へ 次へ 
 Copyright © 2005 Hiroshi Masuda 

 

 

inserted by FC2 system