四、三种坐标系间的关系用户坐标系中的一点(xHwy)转变为规格化坐标系(ry.)(I..)中的点(xn,y,)(Iw,w)(fw.Jw)1Ww[n =(xw-Xw)W设备垒标规格化设备坐标用户坐标三种坐标系的关系[yn =(yw -ybwYH,图2-2W.H为用户绘图空间的范围:Xwybw为用户原点坐标(xn =(xw)W.当(0,0)为用户坐标系原点时,规格化坐标为(y,- (yw)/H.[=639×x,=[639×xW]变换到屏幕坐标系时[y。=199×y, -[199×y./H]]、原点平移到(0,199)由于屏幕的坐标原点在左上角,须经x,=[639xx/W]2、绕x轴旋转1800变换,才能以习惯的形式显示(yb=[199×(1-yw/Hw)]
四、三种坐标系间的关系 ( ) ( ) = = n w w n w w y y /H x x /W ( ) ( ) = − = − n w bw w n w lw w y y y /H x x x /W = = = = a n w w a n w w y 199 y 199 y /H x 639 x 639 x /W 用户坐标系中的一点(xw, yw)转变为规格化坐标系 中的点(xn , yn) Ww,Hw为用户绘图空间的范围;Xlw,ybw 为用户原点坐标 当(0,0)为用户坐标系原点时,规格化坐标为 变换到屏幕坐标系时 由于屏幕的坐标原点在左上角,须经 变换,才能以习惯的形式显示 = − = y 199 (1 y /H ) x 639 x /W b w w b w w 1、原点平移到(0,199) 2、绕x轴旋转1800
第三节基本图形的生成方法点平面上的一点P(r,y)1、由一对坐标P(X,Y)定义2、用矢量表示:P=(x,y)3、p到原点的距离和op与x轴的夹角xP|=Vx+ y图2-3直角坐标cosα = x/ /x2+1
第三节 基本图形的生成方法 一、点 平面上的一点 1、由一对坐标P(X,Y)定义 2、用矢量表示:P=(x, y) 3、p到原点的距离和op与x轴的夹角 2 2 2 2 cos x / x y P x y = + = +
画点程序#include<dosh>Point(x,y,color)int X, Y, color;UnionREGSregsiif(×<011x>19911y<011y>319)returnregs.h.ah=12;/*drawingpoint*regs.h.al=colori:/*colornumber*regs.x.dx=x;regs.x.cx=yint86(0x10,®s,®s)
画点程序 #include <dos.h> Point (x,y,color) int x, y, color; Union REGS regs; if(x<0 || x>199 || y<0 || y>319) return; regs.h.ah=12; /*drawing point*/ regs.h.al=color;/*color number*/ regs.x.dx=x; regs.x.cx=y; int86(0x10, ®s, ®s);
直线段直线段的象素点的集合分布得越均匀,且象素点靠近直线段越近,画出的直线就越图2-4直线段的点生成平滑、精确。a-理想像素分布b-实际像素分布
二、直线段 直线段的象素点 的集合分布得越 均匀,且象素点 靠近直线段越近, 画出的直线就越 平滑、精确
逐点计算法假定直线的起点、终点分别为:PO(x0,yO)P1(xl,y1),且都为整数则直线的方程为(y-y0)/(x-x0)=(y1-y0)/(x1-x0)写成参数方程为X=x0+(x1-x0)t每画一个点就要(0≤t≤1)Y=y0+(y1-yo)t作一次加法和乘令t=ti-i/nn=0,1...n,可得到i点的方程法,存在工作量大的问题!!Xi=x0+(x1-x0)tiYi=y0+(y1-yo)ti (i=0, 1,...n)像素点为mi=(xiyi)(round(xi), round(yi)
假定直线的起点、终点分别为:P0(x0,y0), P1(x1,y1),且都为整数。 则直线的方程为 (y-y0)/(x-x0)=(y1-y0)/(x1-x0) 写成参数方程为 逐点计算法 X=x0+(x1-x0)t Y=y0+(y1-y0)t (0 ≤ t ≤ 1) 令t=ti=i/n n=0,1.n, 可得到i点的方程: Xi=x0+(x1-x0)ti {Yi=y0+(y1-y0)ti (i=0, 1,.n) 像素点为mi=(xi,yi) (round(xi), round(yi))! 每画一个点就要 作一次加法和乘 法,存在工作量 大的问题!!