図のように物理座標系Rからディスプレイ座標系Gに成分を変換する関数マクロ
gx(),gy()を作成し、R上の座標で与えられた線分を画面に表示して下さい。但
し、座標系Rは実数で、座標系Gは整数で表され、Rの原点のG上での座標を
(ORIGIN_X, ORIGIN_Y)、R上の長さ REAL_SIZE(m) はG上で DISPLAY_SIZE(dot)で表されるものとする。
-----------------------
/* "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(); /* グラフィックス環境の終了 */
}
-----------------------