550 likes | 693 Views
TWO-DIMENSIONAL GEOMETRIC. TRANSFORMATION. Translation Rotation Scaling Shearing. ภาพ (Image) ในที่นี้แบ่งออกเป็น 2 ประเภท. Primitive drawing ภาพที่เกิดจากคำสั่งพื้นฐาน เช่น จุด เส้นตรง วงกลม สามเหลี่ยม สี่เหลี่ยม เส้นโค้ง ฯลฯ. 2. Complex
E N D
TWO-DIMENSIONAL GEOMETRIC TRANSFORMATION • Translation • Rotation • Scaling • Shearing
ภาพ (Image) ในที่นี้แบ่งออกเป็น 2 ประเภท • Primitive drawing • ภาพที่เกิดจากคำสั่งพื้นฐาน เช่น จุด เส้นตรง วงกลม • สามเหลี่ยม สี่เหลี่ยม เส้นโค้ง ฯลฯ 2. Complex ภาพที่เกิดจาก จุด (pixel) มาประกอบกันเข้า เช่น คน บ้าน วิว ภาพที่เป็น bitmap
(x’,y’) (x,y) TRANSLATION เป็นการย้ายตำแหน่งของภาพจากเดิมไปสู่ตำแหน่งใหม่หรือจากจุด (x,y) เดิม ไปเป็น (x’,y’) โดยที่ X’ = x + H Y’ = y + V V H โดยที่ H เป็นระยะทางที่เปลี่ยนแปลงในแกนนอน (แกน x) V เป็นระยะที่เปลี่ยนแปลงในแกนตั้ง (แกน y)
y x
y x
ROTATION เป็นการหมุนของวัตถุ โดยเปลี่ยนตามมุมของการหมุน (rotation angle) ในทิศทางทวนเข็มนาฬิการอบจุดหมุน (pivot point) y (x,y) r rsin x rcos ในระบบแกนโพลาร์โคออร์ดิเนต x = r cos y = r sin
y (1,1) r y = rsin 1 1 x x = rcos ในที่นี้ r = √x2+y2=√12+12 = √2 = tan-11 = 45 องศา โพลาร์โคออร์ดิเนต x = r cos = √2 cos 45 = √2 (1/√2 ) = 1 = x y = r sin = √2 sin 45 = √2 (1/√2 ) = 1 = y
y จุด (x,y) เดิมหมุนไปในทิศทาง ทวนเข็มนาฬิกาไปเป็นมุม จะได้ พิกัดจุด (x’,y’) โดยที่ x’ = r x cos (+) y’ = r x sin (+) (x’,y’) r r (x,y) x x = r cos() Y = r sin () Cos(A+B) = Cos(A)Cos(B) – Sin(A)Sin(B) Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B) โดยใช้กฎของ sine และ cosine ตามหลักตรีโกณมิติได้ x’ = r x cos() x cos() - r x sin () x sin() y’ = r x sin() x cos() + r x cos () x sin()
y y x x Pivot Point Pivot Point X’ = X x cos() - Y x sin () Y’ = Y x cos() + X x sin()
ในกรณีของการหมุนวัตถุด้วยมุมรอบจุดหมุน (pivot point) โดยมี่จุดหมุนไม่ได้อยู่ที่จุดกำเนิด (origin) ต้องคำนวณตามลำดับขั้นตอนดังนี้ • ย้ายจุดหมุน (pivot point) มาอยู่ที่จุด origin ดังนั้น • ทุกๆจุดของวัตถุต้องย้ายมาอยู่ตำแหน่งใหม่ (x’,y’) โดยที่ • X’ = X – xp • y’ = Y - yp
2. ทำการ rotate ด้วยมุม รอบจุด origin ได้จุดใหม่ (x’,y’) X’’ = X’ x cos() – Y’ x sin () Y’’ = Y’ x cos() + X’ x sin() โดยการจัดเทอมทางตรีโกณมิติ และแทนค่า x’,y’ ลงในสมการ X’’ = (X-xp) x cos() – (Y-yp) x sin () Y’’ = (Y-yp) x cos() + (X-xp) x sin()
3. ทำการย้ายจุดหมุนกลับสู่จุด pivot point เดิมได้จุด (x’’’,y’’’) X’’’ = X’’ + xp Y’’’ = Y’’ + yp แทนค่า x’’,y’’ ลงในสมการได้ X’’’ = (X-xp) x cos() – (Y-yp) x sin () + xp Y’’’ = (Y-yp) x cos() + (X-xp) x sin() + yp
1. Translate Object (xp,yp) (xp,yp) 3. Translate 2. Rotate (xp,yp) (xp,yp)
SCALING การลดหรือขยายขนาดของรูป สามารถเปลี่ยนแปลงขนาดของวัตถุ ได้โดยนำจุดใดๆ ที่ประกอบขึ้นเป็นวัตถุ คูณกับค่า Scaling Factor • Scaling factor > 1 วัตถุที่ได้ขนาดใหญ่กว่าเดิม • Scaling factor < 1 วัตถุที่ได้เล็กกว่าเดิม ในการ scaling มีจุดในการกำหนดตำแหน่งของวัตถุที่ต้องการ ลดหรือขยาย เรียกว่า fixed point ถ้ากำหนด fixed point ที่ origin(0,0) จุด (x,y) ต้องการ scale ด้วย Sx ทิศทางในแนวแกน X Sy ทิศทางในแนวแกน Y
distance distance Fixed Point Fixed Point ได้จุดใหม่ (x,y) โดยที่ X’ = X x Sx Y’ = Y x Sy y y x x
ในการกำหนดจุด (xp,yp) เป็น fixed point ซึ่งไม่ได้ อยู่ที่จุด origin มีขั้นตอนในการ scaling ดังนี้ 1. ย้ายจุด (xp,yp) ไปที่ origin X’ = X - Xp, Y’ = Y - Yp 2. Scale จุดโดยคูณกับ Sx, Sy X’’ = X’x Sx, Y’’ = Y’x Sy 3. ย้ายจุด (Xp,Yp) จาก origin สู่จุดเดิม X’’’ = X’’ + Xp, Y’’’ = Y’’ + Yp แทนค่า X’,Y’,X’’,Y’’ในสมการได้ X’’’ = (X - Xp) x Sx + Xp Y’’’ = (Y - Yp) x Sy + Yp
1. Translate Object (xp,yp) (xp,yp) 3. Translate 2. Scaling (xp,yp) (xp,yp)
SHEARING เป็นการเปลี่ยนแปลงวัตถุในลักษณะเป็นการเปลี่ยนแปลงค่า ในด้าน x หรือ y ด้านใดด้านหนึ่ง มี 2 แบบคือ x-shear และ y-shear X-shear เป็นการเปลี่ยนแปลงค่าจากจุด (x,y) เป็น (x’,y’) โดยที่ X’ = X + shx . Y , Y’ = Y , shx 0 Y-shear เป็นการเปลี่ยนแปลงค่าจากจุด (x,y) เป็น (x’,y’) โดยที่ X’ = X, Y’ = Y + shy . X , shy 0
X-shear (0,1) (1,1) (2,1) (3,1) (1,0) (0,0) (0,0) (1,0)
Y-shear (1,3) (0,1) (1,1) (0,1) (1,2) (1,0) (0,0) (0,0)
Inverse Transformation Translate : -H, -V Rotate : - Scale : 1/Sx, 1/Sy Shear : -Shx, -Shy
MATRIX REPRESENTATION OF TRANSFORMATIONS • 0 0 • 0 1 0 • 0 0 1 [ x’ y’ 1] = [ x y 1]
MATRIX REPRESENTATION OF TRANSFORMATIONS TRANSLATION • 0 0 • 0 1 0 • H V 1 [ x’ y’ 1] = [ x y 1]
MATRIX REPRESENTATION OF TRANSFORMATIONS ROTATION Cos Sin 0 -Sin Cos 0 0 0 1 [ x’ y’ 1] = [ x y 1]
MATRIX REPRESENTATION OF TRANSFORMATIONS SCALING Sx 0 0 0 Sy 0 0 0 1 [ x’ y’ 1] = [ x y 1]
MATRIX REPRESENTATION OF TRANSFORMATIONS SHEARING X-Shear 1 0 0 Shx 1 0 0 0 1 [ x’ y’ 1] = [ x y 1] Y-Shear 1 Shy 0 0 1 0 0 0 1 [ x’ y’ 1] = [ x y 1]
Scaling Relative to a Fixed Point Sx 0 0 0 Sy 0 0 0 1 1 0 0 0 1 0 -xp –yp 1 1 0 0 0 1 0 xp yp 1 Sx 0 0 0 Sy 0 (1-Sx)xp (1–Sy)yp 1 =
Rotation About a Pivot Point Cos Sin 0 -Sin Cos 0 0 0 1 1 0 0 0 1 0 xp yp 1 1 0 0 0 1 0 -xp –yp 1 Cos Sin 0 -Sin Cos 0 (1-Cos)xp+ypsin (1-Cos)xp+ypsin 1 =
Reflection Y • reflect กับแกน x X’ = x Y’ = -y x • 0 0 • 0 -1 0 • 0 0 1 [ x’ y’ 1] = [ x y 1]
Reflection y • reflect กับแกน y X’ = -x Y’ = y x -1 0 0 0 1 0 0 0 1 [ x’ y’ 1] = [ x y 1]
Reflection y • reflect กับส้นตรง y=x X’ = y Y’ = x x 0 1 0 1 0 0 0 0 1 [ x’ y’ 1] = [ x y 1]
2 D Composite Transformation • Rotation P1 1.Translate P1 to origin 2. Rotate 3. Translate Back to P1 T(x1,y1) . R() . T (-x1, -y1)
Composite Transformation 2 D Translate -> Rotate Rotate -> Translate
จากจอภาพชนิดหนึ่งมีความละเอียด (resolution) 1024 x 768 จุด • และสามารถแสดงความละเอียดของสีได้ 16.7 ล้านสี (24 bits) จะต้องใช้ • memory ของ Video Card จำนวนเท่าใดอธิบายและคำนวณพอเข้าใจ 2. รูปสี่เหลี่ยมจัตุรัสรูปหนึ่งมีค่า Coordinate ใน World Coordinates ดังแสดงข้างล่างนี้ถูกแปลงรูป (transform) ไปโดยมีขั้นตอนของการแปลงรูปตามลำดับต่อไปนี้ ก) ขยายรูป (scaling) ให้โตขึ้น 2 เท่าของรูปเดิมโดยมี fixed point อยู่ที่จุดศูนย์กลางของรูปจัตุรัส ข) หมุนรูป (rotation) ไป 90 ํทวนเข็มนาฬิกาโดยมีจุดหมุน (pivot point) อยู่ที่จุดล่างซ้าย (bottom left) ของรูปจัตุรัสที่ได้จากข้อกแล้ว อธิบายหลักการและวิธีการรวมทั้งเมตริกซ์ที่ใช้ในการ transform ดังกล่าวและคำนวณหาจุดยอดที่ได้หลังจากการแปลงรูปแล้ว
(100,200) (200,200) (100,100) (200,100) • จงแสดงวิธีการและคำนวณหา Coordinate ที่ได้หลังจากการ Mapping • รูปสามเหลี่ยมรูปหนึ่งซึ่งมีจุดยอด (100,100), (800,400), (800,100) • โดยกำหนด window (0,1000,0,500) และกำหนด viewport เป็น • NDC ทั้งหมด 5 viewport คือ (0,1,0,1) , (0,1,0,0.5), • (0,1,0.5,1), (0,0.5,0,1), (0.5,1,0,1)ให้กำหนด resolution • ที่เหมาะสมแล้วคำนวณหาจุดที่ได้ใน Screen Coordinate
(100,200) (200,200) (150,150) (200,100) (100,100)
Scaling Relative to a Fixed Point Sx 0 0 0 Sy 0 0 0 1 1 0 0 0 1 0 -xp –yp 1 1 0 0 0 1 0 xp yp 1 Sx 0 0 0 Sy 0 (1-Sx)xp (1–Sy)yp 1 =
1. Translate Object (xp,yp) (xp,yp) 3. Translate 2. Scale (xp,yp) (xp,yp)
Sx 0 0 0 Sy 0 (1-Sx)xp (1–Sy)yp 1 Sx = 2, Sy = 2,xp = 150, yp = 150 2 0 0 0 2 0 -150 –150 1
[100 100 1] [50 50 1] 2 0 0 0 2 0 -150 –150 1 = [200 100 1] [250 50 1] [250 250 1] [200 200 1] [50 250 1] [100 200 1]
(100,200) (200,200) (150,150) (200,100) (100,100) (50,250) (250,250) (50,50) (250,50)
ในการกำหนดจุด (xp,yp) เป็น fixed point ซึ่งไม่ได้ อยู่ที่จุด origin มีขั้นตอนในการ scaling ดังนี้ 1. ย้ายจุด (xp,yp) ไปที่ origin X’ = X - Xp, Y’ = Y – Yp (100,100) (-50,-50) (100,200) (-50,50) (200,200) (50,50) (200,100) (50,-50) จากจุด (x,y) เดิม ถูกย้ายไป (-150,-150)
2. Scale จุดโดยคูณกับ Sx, Sy X’’ = X’ x Sx, Y’’ = Y’ x Sy จากจุด (x,y) เดิม คูณด้วย 2 (-50,-50) (-100,-100) (50,-50) (100,-100) (50,50) (100,100) (-50,50) (-100,100)
3. ย้ายจุด (Xp,Yp) จาก origin สู่จุดเดิม X’’’ = X’’ + Xp, Y’’’ = Y’’ + Yp จากจุด (x,y) เดิม ถูกย้ายไป (150,150) (-100,-100) (50,50) (100,-100) (250,50) (100,100) (250,250) (-100,100) (50,250)
Y (50,250) (250,250) (250,50) (50,50) X
Rotation About a Pivot Point Cos Sin 0 -Sin Cos 0 0 0 1 1 0 0 0 1 0 xp yp 1 1 0 0 0 1 0 -xp –yp 1 Cos Sin 0 -Sin Cos 0 (1-Cos)xp+ypsin (1-Cos)yp-xpsin 1 =
Cos Sin 0 -Sin Cos 0 (1-Cos)xp+ypsin (1-Cos)yp-xpsin 1 Sin 90= 1, cos 90 = 0, xp = 50, yp = 50 0 1 0 -1 0 0 100 0 1
[ 50 50 1] [ 50 250 1] [ 250 250 1] [250 50 1] [ 50 50 1] [ -150 50 1] [ -150 250 1] [ 50 250 1] 0 1 0 -1 0 0 100 0 1 จุดยอดใหม่ที่ได้ คือ (50,50),(-150,50),(-150,250),(50,250)