1. 已知三角形各顶点坐标为(10,10),(10,30)和(30,20),作下列变换,写出变换的矩阵,画出变换后的图形。先绕原点逆时针旋转90度, 再沿X 正向平移10,沿Y 负向平移20。
⎡1
平移变换矩阵为:⎢0
⎢⎢⎣10
1-20
⎡00⎤
,旋转变换矩阵为:⎢-10⎥⎢⎥
⎢⎥1⎦⎣00⎤⎡1
⎥0⎥×⎢0
⎢⎢1⎥⎦⎣10
1-20
0⎤⎡0=⎢-10⎥⎥⎢⎢1⎥⎦⎣10
1
00
10-20
0⎤ 0⎥⎥1⎥⎦
0⎤
0⎥⎥1⎥⎦
⎡0
总的变换矩阵为:T =⎢-1
⎢⎢⎣0
1
00
2. 已知三角形ABC 各顶点的坐标A (1,2)、B (5,2)、C (3,5),相对直线P 1P 2(线段的坐标分别为:P 1 (-1,-1) 、P 2 (8,3)做对称变换后到达A ' ,B ' , C ' 。试计算A ' ,B ' , C ' 的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果)
⎡100⎤⎢⎥
解: (1) 将坐标平移至P1 (-1,-1)点: Ta =⎢010⎥
⎢⎣111⎥⎦
(2) 线段P 1P 2与X 轴夹角为θ=arctg
4
9
⎡cos θ
(3) 顺时针方向旋转θ角: Tb =⎢⎢sin θ
⎢⎣0⎡100⎤
⎢⎥
(4) 关于X 轴对称: Tc =⎢0-10⎥
⎢⎣001⎥⎦
-sin θcos θ
0⎤0⎥⎥ 1⎥⎦
⎡cos θ
⎢
(5)逆时针转回: Td =⎢-sin θ
⎢⎣0
sin θcos θ
0⎤0⎥⎥ 1⎥⎦
⎡100⎤⎢⎥
(6) 将坐标系平移回原处 Te =⎢010⎥
⎢⎣-1-11⎥⎦
(7)变换矩阵: T=Ta ⨯Tb ⨯Tc ⨯Td ⨯Te
(8) 求变换后的三角形ABC 各顶点的坐标A ’、B ’、C ’
[ B’: [X C’: [X
/
A ’: X A
/B /C
Y A Y B Y C
//
/
1=[121]⨯T
21]⨯T 51]⨯T
]1]=[51]=[3
4. 如右图所示,裁剪窗口为正方形(2,2)—(6,6),采用逐边裁剪算法,依次按左上右下的顺序,
用四条窗口边界裁剪多边形ABCDE ,试写出每条窗口边界裁剪后输出的新的多边形的顶点序列。
解:初始顶点集合为:V0={A,B,C,D,E} 按照左上右下的裁剪顺序,则有:
左裁剪:由于顶点A,B,C,D 均在左边界内,E 在左边界外,仅讨论边界DE 和EA :
对于线段DE,D 在左边界内,E 在左边界外,且与左边界交点为1,故V1={A,B,C,D,1} 对于线段EA ,E 在左边界外,A 在左边界内,且与左边界交点为2,故V1={1,2,A,B,C,D } 上裁剪:对于顶点集合V1={A,B,C,D,1,2}中,1,2,A,B,C 均在上边界内,D 在上边界外,
对于线段CD,C 在上边界内,D 在上边界外,且与上边界交点为10,故V2={1,2,A,B,C,10 } 对于线段D1,D 在上边界外,1在上边界内,且与上边界交点为9,故V2={1,2,A,B,C,10,9 } 右裁剪:对于顶点集合V2={1,2,A,B,C,10,9}中,9,1,2,A,B 均在右边界内,C,10均在右边界外, 对于线段BC ,B 在右边界内,C 在右边界外,且与右边界交点为7,故V3={10,9,1,2,A,B, 7} 对于线段C10,完全处于右边界之外,直接完全裁剪 对于线段109,9在右边界内,10在右边界外,且与右边界交点为8,故V3={9,1,2,A,B, 7,8} 下裁剪:对于顶点集合V3={9,1,2,A,B, 7,8}中,B, 7,8,9,1,2,均在下边界内,A 在下边界外, 对于线段2A ,2在下边界内,A 在下边界外,且与下边界交点为3,故V4={ B, 7,8,9,1,2,3} 对于线段AB ,B 在下边界内,A 在下边界外,且与下边界交点为4,故V4={ B, 7,8,9,1,2,3,4} 所以,裁剪后剩余的多边形为B 7891234
5. 在用户坐标系中,定义了一个窗口(左下角坐标为:-20,-20;右上角的坐标为60,60),给定线段的端点坐标为P (-70,-30),Q (200,80),求出线段与窗口的所有交点坐标(考虑窗口的四条边,结果保留整数),并根据编码法,确定裁剪后的线段端点坐标。
线段方程为:y+30=11/27(x+70),端点编码:P (0101),Q (1010) 左边界交点:L (-20,-10),编码:0001 上边界交点:T (151,60),编码:1010 右边界交点:R (60,23),编码:0010 下边界交点:B (-46,-20),编码:0101 根据x 排序得:P ,B ,L ,R ,T ,Q P ,B 按位与为:0101非零,丢弃。 B ,L 按位与为:0001非零,丢弃。 L ,R 按位与为:0000,保留。
R ,T 按位与为:0010非零,丢弃。
T ,Q 按位与为:1010非零,丢弃。 裁剪后的端点坐标为L (-20,-10),R (60,23)。
6. 已知线段P 1P 2的两个端点坐标为:P 1 (-5,10) 、P 2 (10,-5),裁剪窗口为(0,0) —(10,10) 。请使用Liang —Barskey 线段裁剪算法计算出裁剪以后剩余的线段。
解:Δx =10-(-5)=15 Δy =(-5) -10=-15
p1=-Δx =-15 q1=(-5) -0=-5 p2=Δx =15 q2=10-(-5)=15 p3=-Δy =15 q3=10-0=10 p4=Δy =-15 q4=10-10=0 根据公式:uk=qk/pk,则有:
u1=1/3 u2=1 u3=2/3 u4=0
由于p1,p40,所以ue=min{1,u2,u3}=2/3
⎧x =x 1+∆x ⋅μ
根据线段参数方程:⎨,则有:
⎩y =y 1+∆y ⋅μ
当us=1/3时,xs =(-5)+15. (1/3)=0, ys=10+(-15) . (1/3)=5 当ue=2/3时,xe =(-5)+15. (2/3)=5, ye=10+(-15) . (2/3)=0 因此,裁剪后剩余的线段为 :起点为(0, 5),终点为(5,0)
4. 试分析下图中,当选取S 为种子时,基于4-连通区域按右-上-左-下顺序实现区域填充的过程。要求写出区域内所有像素点被填色的顺序。
1. 已知三角形各顶点坐标为(10,10),(10,30)和(30,20),作下列变换,写出变换的矩阵,画出变换后的图形。先绕原点逆时针旋转90度, 再沿X 正向平移10,沿Y 负向平移20。
⎡1
平移变换矩阵为:⎢0
⎢⎢⎣10
1-20
⎡00⎤
,旋转变换矩阵为:⎢-10⎥⎢⎥
⎢⎥1⎦⎣00⎤⎡1
⎥0⎥×⎢0
⎢⎢1⎥⎦⎣10
1-20
0⎤⎡0=⎢-10⎥⎥⎢⎢1⎥⎦⎣10
1
00
10-20
0⎤ 0⎥⎥1⎥⎦
0⎤
0⎥⎥1⎥⎦
⎡0
总的变换矩阵为:T =⎢-1
⎢⎢⎣0
1
00
2. 已知三角形ABC 各顶点的坐标A (1,2)、B (5,2)、C (3,5),相对直线P 1P 2(线段的坐标分别为:P 1 (-1,-1) 、P 2 (8,3)做对称变换后到达A ' ,B ' , C ' 。试计算A ' ,B ' , C ' 的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果)
⎡100⎤⎢⎥
解: (1) 将坐标平移至P1 (-1,-1)点: Ta =⎢010⎥
⎢⎣111⎥⎦
(2) 线段P 1P 2与X 轴夹角为θ=arctg
4
9
⎡cos θ
(3) 顺时针方向旋转θ角: Tb =⎢⎢sin θ
⎢⎣0⎡100⎤
⎢⎥
(4) 关于X 轴对称: Tc =⎢0-10⎥
⎢⎣001⎥⎦
-sin θcos θ
0⎤0⎥⎥ 1⎥⎦
⎡cos θ
⎢
(5)逆时针转回: Td =⎢-sin θ
⎢⎣0
sin θcos θ
0⎤0⎥⎥ 1⎥⎦
⎡100⎤⎢⎥
(6) 将坐标系平移回原处 Te =⎢010⎥
⎢⎣-1-11⎥⎦
(7)变换矩阵: T=Ta ⨯Tb ⨯Tc ⨯Td ⨯Te
(8) 求变换后的三角形ABC 各顶点的坐标A ’、B ’、C ’
[ B’: [X C’: [X
/
A ’: X A
/B /C
Y A Y B Y C
//
/
1=[121]⨯T
21]⨯T 51]⨯T
]1]=[51]=[3
4. 如右图所示,裁剪窗口为正方形(2,2)—(6,6),采用逐边裁剪算法,依次按左上右下的顺序,
用四条窗口边界裁剪多边形ABCDE ,试写出每条窗口边界裁剪后输出的新的多边形的顶点序列。
解:初始顶点集合为:V0={A,B,C,D,E} 按照左上右下的裁剪顺序,则有:
左裁剪:由于顶点A,B,C,D 均在左边界内,E 在左边界外,仅讨论边界DE 和EA :
对于线段DE,D 在左边界内,E 在左边界外,且与左边界交点为1,故V1={A,B,C,D,1} 对于线段EA ,E 在左边界外,A 在左边界内,且与左边界交点为2,故V1={1,2,A,B,C,D } 上裁剪:对于顶点集合V1={A,B,C,D,1,2}中,1,2,A,B,C 均在上边界内,D 在上边界外,
对于线段CD,C 在上边界内,D 在上边界外,且与上边界交点为10,故V2={1,2,A,B,C,10 } 对于线段D1,D 在上边界外,1在上边界内,且与上边界交点为9,故V2={1,2,A,B,C,10,9 } 右裁剪:对于顶点集合V2={1,2,A,B,C,10,9}中,9,1,2,A,B 均在右边界内,C,10均在右边界外, 对于线段BC ,B 在右边界内,C 在右边界外,且与右边界交点为7,故V3={10,9,1,2,A,B, 7} 对于线段C10,完全处于右边界之外,直接完全裁剪 对于线段109,9在右边界内,10在右边界外,且与右边界交点为8,故V3={9,1,2,A,B, 7,8} 下裁剪:对于顶点集合V3={9,1,2,A,B, 7,8}中,B, 7,8,9,1,2,均在下边界内,A 在下边界外, 对于线段2A ,2在下边界内,A 在下边界外,且与下边界交点为3,故V4={ B, 7,8,9,1,2,3} 对于线段AB ,B 在下边界内,A 在下边界外,且与下边界交点为4,故V4={ B, 7,8,9,1,2,3,4} 所以,裁剪后剩余的多边形为B 7891234
5. 在用户坐标系中,定义了一个窗口(左下角坐标为:-20,-20;右上角的坐标为60,60),给定线段的端点坐标为P (-70,-30),Q (200,80),求出线段与窗口的所有交点坐标(考虑窗口的四条边,结果保留整数),并根据编码法,确定裁剪后的线段端点坐标。
线段方程为:y+30=11/27(x+70),端点编码:P (0101),Q (1010) 左边界交点:L (-20,-10),编码:0001 上边界交点:T (151,60),编码:1010 右边界交点:R (60,23),编码:0010 下边界交点:B (-46,-20),编码:0101 根据x 排序得:P ,B ,L ,R ,T ,Q P ,B 按位与为:0101非零,丢弃。 B ,L 按位与为:0001非零,丢弃。 L ,R 按位与为:0000,保留。
R ,T 按位与为:0010非零,丢弃。
T ,Q 按位与为:1010非零,丢弃。 裁剪后的端点坐标为L (-20,-10),R (60,23)。
6. 已知线段P 1P 2的两个端点坐标为:P 1 (-5,10) 、P 2 (10,-5),裁剪窗口为(0,0) —(10,10) 。请使用Liang —Barskey 线段裁剪算法计算出裁剪以后剩余的线段。
解:Δx =10-(-5)=15 Δy =(-5) -10=-15
p1=-Δx =-15 q1=(-5) -0=-5 p2=Δx =15 q2=10-(-5)=15 p3=-Δy =15 q3=10-0=10 p4=Δy =-15 q4=10-10=0 根据公式:uk=qk/pk,则有:
u1=1/3 u2=1 u3=2/3 u4=0
由于p1,p40,所以ue=min{1,u2,u3}=2/3
⎧x =x 1+∆x ⋅μ
根据线段参数方程:⎨,则有:
⎩y =y 1+∆y ⋅μ
当us=1/3时,xs =(-5)+15. (1/3)=0, ys=10+(-15) . (1/3)=5 当ue=2/3时,xe =(-5)+15. (2/3)=5, ye=10+(-15) . (2/3)=0 因此,裁剪后剩余的线段为 :起点为(0, 5),终点为(5,0)
4. 试分析下图中,当选取S 为种子时,基于4-连通区域按右-上-左-下顺序实现区域填充的过程。要求写出区域内所有像素点被填色的顺序。