練習問題



next up previous contents

Next: 練習問題 Up: 4 絵を表示させる Previous: 一般的な注意


練習問題

図のように物理座標系Rからディスプレイ座標系Gに成分を変換する関数マクロ gx(),gy()を作成し、R上の座標で与えられた線分を画面に表示して下さい。但 し、座標系Rは実数で、座標系Gは整数で表され、Rの原点のG上での座標を (ORIGIN_X, ORIGIN_Y)、R上の長さ REAL_SIZE(m) はG上で
DISPLAY_SIZE(dot)で表されるものとする。


 

Figure 1: 物理座標系とディスプレイ座標系

-----------------------
/* "ex4-1.c" --- */

#include <stdio.h>
#include <Xtc.h>

#define ORIGIN_X      320
#define ORIGIN_Y      200
#define REAL_SIZE     1.0
#define DISPLAY_SIZE  150

/* 座標変換 */
#define gx(x) ((int)(ORIGIN_X+(x)*DISPLAY_SIZE/REAL_SIZE))
#define gy(y) ((int)(ORIGIN_Y-(y)*DISPLAY_SIZE/REAL_SIZE))

int main(void)
{
    int  x,y;

    initgraph();                           /* グラフィックス環境の初期化 */

    setcolor( WHITE );                            /* 座標軸の表示色設定 */
    line( gx(0.0), gy(0.0), gx(1.0), gy(0.0) );   /* x軸の描画 */
    line( gx(0.0), gy(0.0), gx(0.0), gy(1.0) );   /* y軸の描画 */
    outtextxy( gx(0.0) - 20, gy(0.0) + 20, "0" ); /* 原点表示  */

    setcolor( RED );
    line( gx(0.0), gy(0.0), gx(0.2), gy(0.5) );   /* 線分の描画 */
    xtcmainloop( 3 );                             /* 終了入力待ち */
    closegraph();                          /* グラフィックス環境の終了 */
}
-----------------------



next up previous contents

Next: 練習問題 Up: 4 絵を表示させる Previous: 一般的な注意




機械・知能系 コンピュータ実習担当教官