THREE-DIMENSIONAL GEOMETRIC
VUP z y x
การสร้าง Eye Coordinate System ได้จากการใช้คุณสมบัติของ Vector VUP V z U VPN VRP y x COP การสร้าง Eye Coordinate System ได้จากการใช้คุณสมบัติของ Vector V = VUP – (VUP.VPN)VPN ได้ vector v ตั้งฉากกับ vpn U = VPN x V ได้ vector u ตั้งฉากกับ vpn และ v
Vector แกน y’ = [2 2], Unit Vector = [ 1 1] 2 2 การ Rotate แกน ใช้ Unit Vector โดยแทนใน column ของ x และ y Y’ (3,3) (1,1) x x (1,-1) (2,-2) x’ Cos 45 sin 45 0 -sin 45 cos 45 0 0 0 1 Vector แกน y’ = [2 2], Unit Vector = [ 1 1] 2 2 Vector แกน x’ = [1 -1], Unit Vector = [ 1 -1] 2 2 1 1 0 2 2 -1 1 0 0 0 1 1 1 0 2 2 -1 1 0 0 0 1
u[x] v[x] -vpn[x] 0 u[y] v[y] -vpn[y] 0 u[z] v[z] -vpn[z] 0 0 0 0 1 VRP y x COP การ transform จาก Right hand -> Left hand ใช้ unit vector ของ u, v , vpn u[x] v[x] -vpn[x] 0 u[y] v[y] -vpn[y] 0 u[z] v[z] -vpn[z] 0 0 0 0 1
การ transform จาก Left-hand coordinate ไปสู่ Right-hand coordinate มีอยู่ 3 ขั้นตอน 1.จุดกำเนิดของ eye coordinate system, the cop translate มาที่จุด (0,0,0) ของ World coordinate system 1 0 0 1 0 1 0 0 0 0 1 0 -(vrp(x)+cop(x) -(vrp(y)+cop(y) -(vrp(z)+cop(z)) 1 T = V z U y VPN COP VRP x
a. ให้แกน u ขนานกับแกน x ใน World Coordinate 2. ทำการ Rotate โดย a. ให้แกน u ขนานกับแกน x ใน World Coordinate b. ให้แกน v ขนานกับแกน y ใน World Coordinate c. ให้แกน vpn ขนานกับแกน –z ใน World Coordinate u[x] v[x] -vpn[x] 0 u[y] v[y] -vpn[y] 0 u[z] v[z] -vpn[z] 0 0 0 0 1 y V z U x VPN
y z x
3. นำค่าลบในแกน vpn ทิศทางของ z ที่เป็นบวกใน screen โดย reflection กับแกน z VRP = View reference point VPN = View Plane Normal VUP = View Up COP = Center of Projection 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 VUP z VPN y VRP COP x
กำหนด VRP จากนั้นกำหนด direction ของหน้าต่างคือ VPN และกำหนด direction VUP V z U VPN VRP y x COP กำหนด VRP จากนั้นกำหนด direction ของหน้าต่างคือ VPN และกำหนด direction ของศีรษะคนคือ VUP จาก VPN & VUP ได้ Vector V จาก VPN & V ได้ Vector U ซึ่ง VPN เปรียบเสมือน axis Z ใน eye coordinate V Y U X
Ex จากจุดยอดสี่เหลี่ยมใน World Coordinate มีจุด A(10,10,10),B(50,10,10),C(10,50,10) และ D(50,50,10) จงคำนวณหาจุดยอดใหม่ใน left-hand coordinate V VUP กำหนด COP = (0,0,1), VRP = (0,0,5) VPN = [0 0 5], VUP = [0 1 0] y VPN z COP VRP U V = VUP – (VUP.VPN)VPN = [0 1 0] – [0 0 0] = [0 1 0] x U = VPN x V= i j k 0 0 1 0 1 0 = [ -1 0 0 ]
V = [0 1 0], U = [-1 0 0], VPN = [0 0 1] 1 0 0 1 0 1 0 0 0 0 1 0 -(vrp(x)+cop(x) -(vrp(y)+cop(y) -(vrp(z)+cop(z)) 1 T = 0 0 0 0 1 0 0 0 0 1 0 0 0 -6 1 u[x] v[x] -vpn[x] 0 u[y] v[y] -vpn[y] 0 u[z] v[z] -vpn[z] 0 0 0 0 1 T = R = -1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 R = Ch =
-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Rot = R x Ch = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -6 1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 -6 1 T x Rot = = -1 0 0 0 0 1 0 0 0 0 1 0 0 0 -6 1 = [-10 10 4 1] A’ = AxTxRot = [10 10 10 1] = [-50 10 4 1] B’ = BxTxRot = [50 10 10 1] C’ = CxTxRot = [50 50 10 1] = [-50 50 4 1] D’ = DxTxRot = [10 50 10 1] = [-10 50 4 1]
Projection 3D -> 2D A’, xp = 4 x –10 = -10, yp = 4 x 10 = 10 A’(-10,10) 4 4 B’, xp = 4 x –50 = -50, yp = 4 x 10 = 10 A’(-50,10) 4 4 C’, xp = 4 x –50 = -50, yp = 4 x 50 = 50 A’(-50,50) 4 4 D’, xp = 4 x –10 = -10, yp = 4 x 50 = 50 A’(-10,50) 4 4
กำหนด COP = (40,200,30), VRP = (40,150,30) VPN = [0 –1 0], VUP = [0 0 1] z V x y VPN VRP COP U V = VUP – (VUP.VPN)VPN = [0 0 1] – [0 0 0] = [0 0 1] U = VPN x V= i j k 0 -1 0 0 0 1 = [ -1 0 0 ]
V = [0 0 1], U = [-1 0 0], VPN = [0 -1 0] 1 0 0 1 0 1 0 0 0 0 1 0 -(vrp(x)+cop(x) -(vrp(y)+cop(y) -(vrp(z)+cop(z)) 1 T = 0 0 0 0 1 0 0 0 0 1 0 -80 -350 -60 1 u[x] v[x] -vpn[x] 0 u[y] v[y] -vpn[y] 0 u[z] v[z] -vpn[z] 0 0 0 0 1 T = R = -1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 R = Ch =
-1 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 1 Rot = R x Ch = 1 0 0 0 0 1 0 0 0 0 1 0 -80 –350 -60 1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 1 0 0 0 0 1 0 80 -350 -60 1 T x Rot = = = [ 80 -350 -60 1] A’ = AxTxRot = [0 0 0 1] -1 0 0 0 0 1 0 0 0 0 1 0 80 -350 -60 1 = [80 -250 -60 1] B’ = BxTxRot = [0 100 0 1] C’ = CxTxRot = [80 100 0 1] = [ 0 -250 -60 1] D’ = DxTxRot = [80 0 0 1] = [ 0 -350 -60 1] E’ = ExTxRot = [40 50 80 1] = [ 40 -300 20 1]
Projection 3D -> 2D