coordinate spaces and transformations
DESCRIPTION
Coordinate Spaces and Transformations. Jihoon.Yim 22/04/2008. Contents. Transformation of Coordinate Spaces World-space to Page-space Transformations Page-space to Device-space Transformations Device-Space to Physical-Device Transformation Default Transformations - PowerPoint PPT PresentationTRANSCRIPT
Coordinate Spaces and Transformations
Jihoon.Yim
22/04/2008
2
Contents
Transformation of Coordinate SpacesWorld-space to Page-space TransformationsPage-space to Device-space TransformationsDevice-Space to Physical-Device TransformationDefault TransformationsUsing Coordinate Spaces and Transformations
3
Transformation of Coordinate Spaces Cartesian coordinate system
Four coordinate spaces the system supports :
Coordinate space Description
World Used optionally as the starting coordinate space for graphics transformations.It allows scaling, translation, rotation, shearing, and reflection.2^32 units high by 2^32 units wide.
Page Used either as the next space after world space or as the starting space for graphics transformations.It sets the mapping mode.2^32 units high by 2^32 units wide
Device It only allows translation, which ensures the origin of the device space maps to the proper location in physical device space.2^27 units high by 2^27 units wide.
Physical device The final space for graphics transformations.
Terms• Cartesian coordinate system : 데카르트 좌표계• Coordinate space : 좌표공간• scaling : 축척• translation : 변환• rotation : 회전• shearing : 자르기 , 전단변형• reflection : 투영• origin : 원점
4
Transformation of Coordinate Spaces To depict output on a physical device :
– The system copies (or maps) a rectangular region from one coordinate space into the next using a transformation until the output appears in its entirety on the physical device.
– Mapping begins in the application’s world space if the application has called the SetWorldTransform function;
– Otherwise, mapping occurs in page space.
– As the system copies each point within the rectangular region from one space into another, it applies an algorithm called a transformation.
Terms• depict : 그리다 , 묘사하다• entirety : 전체
5
World-space to Page-space TransformationsWorld-space to page-space transformations support
translation and scaling. In addition, they support rotation, shear, and reflection capabilities.
Following topics will be shown in this section :
Translation Scaling Rotation Shear Reflection
6
World-space to Page-space Transformations Translation
– By calling the SetWorldTransform function– The SetWorldTransform function receives a pointer to an XFORM structure containi
ng the appropriate values.– The eDx and eDy member of XFORM specify the horizontal and vertical translation
components, respectively.
Ex) a 20- by 20-unit rectangle that was translated to the right by 10
|1 0 0||x` y` 1| = |x y 1| * |0 1 0|
|Dx Dy 1|x` = x + Dxy` = y + Dy
|1 0 0| |10 10| * |0 1 0| = (20, 10)
|10 0 1| Terms• respectively : 각각
7
World-space to Page-space Transformations Scaling
– By calling the SetWorldTransform function– The eM11 and eM22 members of XFORM specify the horizontal and vertical scalin
g components, respectively.
Ex) a 20- by 20-unit rectangle scaled vertically to twice its original height:
x` = x * Dxy` = y + Dy
|x` y`| = |x y|* |Dx 0||0 Dy|
|10 5| = |10 5| * |1 0| = (10, 10) |0 2|
8
World-space to Page-space Transformations Rotation
– By calling the SetWorldTransform function– The eM11, eM12, eM21, and eM22 members of XFORM specify respectively, the
cosine, sine, negative sine, and cosine of the angle of rotation
Ex) a 20- by 20-unit rectangle rotated 30 degrees :
x` = (x * cos A) – (y * sin A)y` = (x * sin A) + (y * con A)
|x` y`| == |x y| * | cos A sin A||-sin A cos A|
Terms• angle : 각
9
World-space to Page-space Transformations Rotation Algorithm Derivation
– Trigonometry’s addition
– Derivation
x = h * cosA1y = h * sinA1x` = h * cos(A1 + A2)y` = h * sin(A1 + A2)x` = (h * cosA1 * cosA2) – (h * sinA1 * sinA2)y` = (h * cosA1 * sinA2) + (h * sinA1 * cosA2)x` = (x * cosA2) – (y * sinA2)y` = (x * sinA2) + (y * cosA2)
sin(A1 + A2) = (sinA1 * cosA2) + (cosA1 * sinA2)cos(A1 + A2) = (cosA1 * cosA2) – (sinA1 * sinA2)
Terms• derivation : 전개• Trigonometry’s addition : 삼각법 덧셈
10
World-space to Page-space Transformations Shear
– By calling the SetWorldTransform function– The eM12 and eM21 members of XFORM specify the horizontal and vertical propo
rtionality constants,
Ex) a 20- by 20-unit rectangle sheared horizontally
x` = x + (Sx * y)y` = y + (Sy * x)|x` y`| == |x y| * |1 Sy|
|Sx 1|
|20 5| * |1 0| = (25, 5)|1 1|
Terms• proportionality : 비례
11
World-space to Page-space Transformations Reflection
– By calling the SetWorldTransform function– The eM11 and eM22 members of XFORM specify the horizontal and vertical reflec
tion components, respectively.– The reflection transformation creates a mirror image of an object with respect to e
ither the x- or y-axis.– In short, reflection is just negative scaling.– To produce a horizontal reflection, x-coordinates are multiplied by -1.– To produce a vertical reflection, y-coordinates are multiplied by -1.
|-1 0| The 2-by-2 matrix that produced horizontal reflection|0 1|
|1 0| The 2-by-2 matrix that produced vertical reflection|0 -1|
12
World-space to Page-space Transformations Combined World-to-page Space Transformations
– The five world-to-page transformations can be combined into a single 3-by-3 matrix.
– CombineTransform function• Can be used to combine two world-space to page-space transformations.
– When an application calls SetWorldTransform, it stores the elements of the 3-by-3 matrix in an XFORM structure.
• The members of this structure correspond to the first two columns of a 3-by-3 matrix;• The last column of the matrix is not required because it values are constant.
| x11 x12 0|| x21 x22 0|| eDx eDy 1|
– GetWorldTransform function• to revive the elements of the current world transformation.
typedef struct _XFROM { FLOAT eM11; FLOAT eM12; FLOAT eM21; FLOAT eM22; FLOAT eDx; FLOAT eDy;} XFORM, *PXFORM;
13
Page-space to Device-space TransformationsThe page-space to device-space transformation determines
the mapping mode for all graphic output associated with a particular DC. A mapping mode is a scaling transformation.
Following topics will be shown in this section :
Mapping Modes and Translations Predefined Mapping Modes Application-Defined Mapping Modes
14
Page-space to Device-space Transformations Mapping Modes and Translations
Mapping Mode Unit Axes Device Independent Coordinate
MM_ANISOTROPIC App-specific Any The axis may or may not be equally scaled.
App-specific
MM_ISOTROPIC App-specific MustEqual
The axis are always equally scaled.
App-specific
MM_HIENGLISH 0.001 inch Fixed Independent
MM_LOENGLISH 0.01 inch Fixed Independent
MM_HIMETRIC 0,01 millimeter Fixed Independent
MM_LOMETRIC 0.1 millimeter Fixed Independent
MM_TWIPS 1/12 of a printer point(1/1440 inch)
Fixed Independent
MM_TEXT (Default) One pixel Fixed Dependent
Terms• Unit : 단위• Axis : 축• Anisotropic : 이방성의• Isotropic : 등방성의
15
Page-space to Device-space Transformations SetMapMode & GetMapMode
– To set a mapping mode and To retrieve the current mapping mode for a DC Window & Viewport
– The page space to device-space transformations consist of values calculated from the points given by the window and viewport.
– Window• the logical coordinate system of the page space
– Viewport• the device coordinate system of the device space (pixel)
– The window and viewport each consist of an origin, a horizontal (x) extent, and a vertical (y) extent.
– The system combines the origins and extents from both the window and viewport to create the transformation.
Terms• origin : 좌표의 원점• extent : 크기 , 범위
16
Page-space to Device-space Transformations Maps the window to the viewport
– The window and viewport extents establish a ratio or scaling factor used in the page-space to device-space transformations.
17
Page-space to Device-space Transformations Maps the window to the viewport
Predefined mapping modes – MM_HIENGLISH, MM_LOENGLISH, MM_HIMETRIC, MM_LOMETRIC, MM_TEXT, an
d MM_TWIPS– the extents are set by the system when SetMapMode is called.– They cannot be changed.
The other two mapping modes – MM_ISOTROPIC, MM_ANISOTROPIC– the extents must be specified.– After calling SetMapMode, call the SetWindowExtEx and SetViewportExtEx fu
nctions to specify the extents.– In the MM_ISOTROPIC mapping mode, it’s important to call SetWindowExtEx befor
e calling SetViewportExtEx.
18
Page-space to Device-space Transformations Maps the window to the viewport
– The window and viewport origins establish the translation used in the page-space to device-space transformations.
– Set the window and viewport origins by using the SetWindowOrgEx and SetViewportOrgEx functions.
– The origins are independent of the extents, and an application can set them regardless of the current mapping mode.
– Changing a mapping mode does not affect the currently set origins (although it can affect the extents).
– Origins are specified in absolute units that the current mapping mode does not affect.
– To alter the origins, use the OffsetWindowOrgEx and OffsetViewportOrgEx functions.
Terms• regardless of : ~ 에 관계없이• affect : 영향을 미치다
19
Page-space to Device-space Transformations Maps the window to the viewport
– The following formula shows the math involved in converting a point from page space to device space.
• Dx : x value in device units• Lx : x value in logical units (also known as page space units)• WOx : window x origin• VOx : viewport x origin• WEx : window x-extent• VEx : viewport x-extent
– The same equation with y replacing x transforms the y component of a point.
– The LPtoDP and DPtoLP functions may be used to convert from logical points to device points and from device points to logical points, respectively.
Dx = ((Lx – WOx) * VEx / WEx) + VOx)
Terms• formula : 식• equation : 방정식
20
Page-space to Device-space Transformations Predefined Mapping Modes
– Device dependent• MM_TEXT
– Device independent• MM_HIENGLISH, MM_LOENGLISH, MM_HIMETRIC, MM_LOMETRIC, and
MM_TWIPS
– The default mapping mode is MM_TEXT• One logical unit equals one pixel.• Positive x is to the right, and positive y is down.• This mode maps directly to the device’s coordinate system.• The logical-to-physical mapping involves only an offset in x and y that is
defined by the application-controlled window and viewport origins.• The viewport and window extents are all set to 1, creating a one-to-one
mapping.
– Applications that display geometric shapes make use of one of the device-independent mapping modes.
Terms• geometric : 기하의
21
Page-space to Device-space Transformations Application-Defined Mapping Modes
– MM_ISOTROPIC and MM_ANISOTROPIC) are provided for application-specific mapping modes.
• MM_ISOTROPIC guarantees that logical units in the x-direction and in the y-direction are equal
• MM_ANISOTROPIC mode allows the units to differ.
– a CAD or drawing application can benefit from the MM_SIOTROPIC mapping mode (or MM_ANISOTROIPIC)
• may need to specify logical units that correspond to the increments on an engineer’s scale(1/64 inch)
• These units would be difficult to obtain with the predefined mapping modes.
– The following examples shows how to set logical units to 1/64 inch :
SetMapMode(hDC, MM_ISOTROPIC);SetWindowExtEx(hDC, 64, 64, NULL);SetViewportExtEx(hDC, GetDeviceCaps(hDC, LOGPIXELSX), GetDevcieCaps(hDC, LOGPIXELSY), NULL);
22
Device-Space to Physical-Device Transformation Unique in several respects
– It is limited to translation and is controlled by the system.– The sole purpose of this transformation is to ensure that the origin of
device space is mapped to the proper point on the physical device.– There are no functions to set this transformation, nor are there any
functions to retrieve related data.
23
Default Transformations Default transformations
– Whenever an application creates a DC and immediately begins calling GDI drawing or output functions, it takes advantage of the default page-space to device-space, and device-space to client-area transformations.
– A world-to-page space transformation cannot happen until the application first calls the SetGraphicsMode function to set the mode to GM_ADVANCED and then calls the SetWorldTransform function.
– Use of MM_TEXT (the default page-space to device space transformation) results in a one-to-one mapping;
• That is, a given point in page space maps to the same point in device space.– The one unique aspect of MM_TEXT is the orientation of the y-axis in page space.
In MM_TEXT, the positive y-axis extends downward and the negative y-axis extends upward.
24
Using Coordinate Spaces and Transformations The example contains the following tasks:
– Drawing graphics with predefined units.– Centering graphics in the application’s client area– Scaling graphics output to half its original size.– Translating graphics output ¾ of an inch to the right.– Rotating graphics 30 degrees.– Shearing graphics output along the x-axis.– Reflecting graphics output about an imaginary horizontal axis drawn
through its midpoint.
ExampleSource
25
References MSDN 2003