ddx=(int)((double)dy*tmp); ddy=-(int)((double)dx*tmp); x11=x1-ddx/2; x12=x1+ddx/2; y11=y1-ddy/2; y12=y1+ddy/2; lx=abs(ddx); ly=abs(ddy);
deltax= (ddx==0)?0:(ddx>0?1:-1); deltay= (ddy==0)?0:(ddy>0?1:-1); x=x11; y=y11; if(lx>ly) { p=2*ddy-ddx; for(;x!=x12+deltax;x+=deltax) { DotBresenhamLine(x, y, x+(x2-x1), y+(y2-y1),mask); if(p>=0) { y+=deltay; p+=2*(ly-lx); } else { p+=2*ly; } } } else { p=2*ddx-ddy; for(;y!=y12+deltay;y+=deltay) { DotBresenhamLine(x, y, x+(x2-x1), y+(y2-y1),mask); if(p>=0) { x+=deltax; p+=2*(lx-ly); } else
{ p+=2*lx; } } } }
13.如何将多边形扫描转换方法用于产生用斜影线填充的多边形图形。 void Polygonfill(PointArray& ptArray,COLORREF color) { int len; CEdgeTable ET; CActiveEdgeTable AET; ET.Init(ptArray); AET.AETlist .RemoveAll (); int y=ET.ETlist [0]->ymin ; while(ET.ETlist .GetSize ()>0||AET.AETlist .GetSize ()>0){ if((ET.ETlist .GetSize ()>0)&&(y==ET.ETlist [0]->ymin)){ AET.ymin=y; AET.AETlist .Append(ET.ETlist [0]->AETlist ); ET.ETlist.RemoveAt(0); } AET.Sort (); int i; len=AET.AETlist .GetSize (); for(i=0;i
#define INTERVAL 5
void DrawLine(int y,int x1,int x2,COLORREF color) { for(int i=x1;i<=x2;i++) { if((i+y)%INTERVAL==0) SetPixel (i,y,color); } }
第3章
1.平面图形可以对两个坐标轴或原点做反射,这称为对称变换。平面内任意点(x,y)对x轴反射变到(?x,y),对原点反射变到(?x,?y),写出实现上述三种变换的变换矩阵,并说明这三种反射变换是否可以看作是比例变换或者旋转变换。 对x轴反射S(1,-1)是比例变换
p??(x?y?1)?(x?100???p?S(1,?1)
y1)?0?10????001????100???p?S(?1,1)
y1)?010????001????100???p?S(?1,?1)或者
y1)?0?10????001???cos180?sin180?0???p?R(180?)
y1)??sin180?cos180?0???001???对y轴反射S(-1,1)是比例变换
p??(x?y?1)?(x对原点反射S(-1,-1)是比例变换也是旋转变换
p??(x?y?1)?(xp??(x?y?1)?(x
2.写出完成如下平面图形变换的变换矩阵;
(1) 保持点(5,10)固定,x方向放大3倍,y方向放大2倍。
(2) 绕坐标原点顺时针旋转90?。 (3) 对直线y?x成轴对称。 (4) 对直线y??x成轴对称。
(5) 沿与水平方向成?角的方向扩大S1倍,沿与水平方向成90???角的方向扩大S2倍。
(6) 对于平面上任意一点(x0,y0)成为中心对称。
(7) 对平面上任意一条方程为Ax?By?C?0的直线成轴对称。 (1)
00??3?
T(?5,?10)?S(3,2)?T(?5,?10)??020?????10?101??(2)
?cos(?90?)sin(?90?)0??0?10????100?
R(?90?)???sin(?90?)cos(?90?)0?????001?????001??(3)
?2??2?2R(45?)?S(?1,1)?R(?45?)????2?0???(4)
22220??20?????100??2????20???010???2??001????01??????????20????100??2????20???0?10???2??001????01?????????22220?0???010???0???100????001??1??????0???0?10???0????100????001??1??????2??2?2R(45?)?S(1,?1)?R(?45?)????2?0???
(5)
22220?22220?cos(??)sin(??)R(??)?S(S1,S2)?R(?)????sin(??)cos(??)?00??S1?cos2??S2?sin2????(S1?S2)cos?sin??0??S1当S1=S2时,R(??)?S(S1,S1)?R(?)??0???00S100??S1?00????1????00??cos(?)sin(?)0???sin(?)cos(?)0?S20?????01?01????0?
(S1?S2)cos?sin?0??S1?sin2??S2?cos2?0??01?00? 0??1???cos(?)sin(?)0??S1???0R(?)?S(S1,S2)????sin(?)cos(?)0????01??0???0?S1?cos?S2?sin?0?????S?sin?S?cos?012???001???0S200?0??1??
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库计算机图形学课后题答案--许长青、许志闻(5)在线全文阅读。
相关推荐: