DrawExRotaGraph

DXライブラリ用描画関数ラッパー。
基本的にはDrawRotaGraphと同じだが、縦と横の拡大率を別々に指定可能。

typedef struct VECTOR2D{
	double x,y;
} VECTOR2D;

/* DrawExRotaGraph */
void DrawExRotaGraph(double ex, double ey, double xScale, double yScale, double Angle, int GrHandle, int TransFlag, int TurnFlag) {
	int gx,gy;
	double ix,iy,ca=cos(Angle),sa=sin(Angle);
	GetGraphSize(GrHandle,&gx,&gy);
	gx*=xScale/2; gy*=yScale/2;
	VECTOR2D pos[4] = { { -gx, -gy}, { +gx, -gy}, { +gx, +gy}, { -gx, +gy} };
	for (int i=0;i<4;i++) {
		ix = pos[i].x*ca - pos[i].y*sa;
		iy = pos[i].x*sa + pos[i].y*ca;
		pos[i].x=ix+ex; pos[i].y=iy+ey;
	}
	if (!TurnFlag)	DrawModiGraph((int)pos[0].x, (int)pos[0].y, (int)pos[1].x, (int)pos[1].y,
								  (int)pos[2].x, (int)pos[2].y, (int)pos[3].x, (int)pos[3].y, GrHandle, TransFlag);
	else			DrawModiGraph((int)pos[1].x, (int)pos[1].y, (int)pos[0].x, (int)pos[0].y,
								  (int)pos[3].x, (int)pos[3].y, (int)pos[2].x, (int)pos[2].y, GrHandle, TransFlag);
}


まず、グラフィックのサイズを取得。
グラフィックの左上、右上、右下、左下の点を取得し、拡大縮小を適応した後、なんとか定理で傾ける。
後はDrawModiGraphで描画。TurnFlagがONの時は描画する点の左右をさかさまにする。以上。