150 likes | 318 Views
This document outlines the process of defining an arbitrary 3-D view using two coordinate systems: the World Reference Coordinate System (WRC) and the Viewing Reference Coordinate System (VRC). Key elements include setting the view reference point (VRP), view plane normal (VPN), and the view up vector (VUP). Steps encompass translating and rotating the VRC, scaling to fit the canonical view volume, and applying various transformations to achieve front and back clipping planes. The detailed methodology enables efficient visualization of 3-D spaces.
E N D
Two coordinate systems •World reference coordinate system (WRC) •Viewing reference coordinate system (VRC) First specify a viewplane and coordinate system (WRC) •View Reference Point (VRP) •View Plane Normal (VPN) •View Up Vector (VUP) Specify a window on the view plane (VRC) •Max and min u,v values ( Center of the window (CW)) •Projection Reference Point (PRP) •Front (F) and back (B) clipping planes (hither and yon) Specifying An Arbitrary 3-D View
1. Translate VRP to origin 2. Rotate the VRC system such that the VPN (n-axis) becomes the z-axis, the u-axis becomes the x-axis and the v-axis becomes the y-axis 3. Translate so that the CoP given by the PRP is at the origin 4. Shear such that the center line of the view volume becomes the z-axis 5. Scale so that the view volume becomes the canonical view volume: y = z, y = -z, x=z, x = -z, z = zmin, z = zmax Normalizing Transformation
1 0 0 -VRPx ) 0 1 0 -VRPy ) 0 0 1 -VRPz ) 0 0 0 1 ) 1. Translate VRP to origin
We want to take u into (1, 0, 0) v into (0, 1, 0) n into (0, 0, 1) First derive n, u, and v from user input: n = VPN / ||VPN|| u = (Vup x n) / ||Vup x n|| v = n x u 2. Rotate VRC
ux uy uz 0 ) vx vy vz 0 ) nx ny nz 0 ) 0 0 0 1 ) 2. Rotate VRC (cont.)
3. Translate so that the CoP given by the PRP is at the origin • 1 0 0 -PRPu ) • 0 1 0 -PRPv ) • 0 0 1 -PRPn ) • 0 0 0 1 )
Center line of window lies along the vector [CW - PRP], this is the direction of projection, DoP. 4. Shear such that the center line of the view volume becomes the z-axis PRP
( (umax + umin)/2 ) ( PRPu ) CW = ( (vmax + vmin)/2 ) PRP= ( PRPv ) ( 0 ) ( PRPn ) ( 1 ) ( 1 ) ( (umax + umin)/2 - PRPu ) DoP = [CW-PRP] = ( (vmax + vmin)/2 - PRPv ) ( 0 - PRPn ) ( 1 ) The shear matrix must take this direction of projection and shear it to the z-axis , DoP' = [0, 0, DoPz]. Shear (cont.)
( 1 0 SHx 0 ) We want SH*DoP = DoP' SH = ( 0 1 SHy 0 ) ( 0 0 1 0 ) ( 0 0 0 1 ) ( 1 0 SHx 0 ) ( (umax + umin)/2 - PRPu ) (0) ( 0 1 SHy 0 ) ( (vmax + vmin)/2 - PRPv ) = (0) ( 0 0 1 0 ) ( 0 - PRPn ) (DoPz) ( 0 0 0 1 ) ( 1 ) (1) SHx = -DoPx/DoPz, SHy = -DoPy/DoPz Shear (cont.)
y = v - v 5. Scale max min 2 z=-PRPn + F z= -PRPn + B z=-PRPn Y axis +1 y = -v + v max min Before Scale y= -z 2 Front Back Clipping Plane Clipping z=-1 Plane -Z -1 View plane y= z After Scale -1
Scale is done in two steps: 1. First scale in x and y xscale = -2PRPn/(umax - umin) yscale = -2PRPn/(vmax - vmin) 2. Scale everything uniformly such that the back clipping plane becomes z = -1 xscale = -1 / (-PRPn + B) yscale = -1 / (-PRPn + B) zscale = -1 / (-PRPn + B) 5. Scale (cont.)
(Sx 0 0 0 ) (0 Sy 0 0 ) (0 0 Sz 0 ) (0 0 0 1 ) 5. Scale (cont.) Sx = 2PRPn / [(umax - umin) (-PRPn + B)] Sy = 2PRPn / [(vmax - vmin) (-PRPn + B)] Sz = -1 / [(vmax - vmin) (-PRPn + B)]
Nper = [Sper ][SHper ][T(-PRP) ][R ][T(-VRP)] Total Composite Transformation