Transformation

class Transformation

Parent: Object | Class Index
Methods: axes, interpolate, new, rotation, scaling, translation, *, clone, identity?, inverse, invert!, origin, set!, to_a, xaxis, yaxis, zaxis |
Sample Code: transformationtests.rb |

The transformation class serves two purposes. First, the transformation class allows you to initially place geometry in a 3d space, such as when placing a component instance within the draw area. Second, and foremost, the transformation class can be used to apply transformations on geometry, such as a move (called a translation), rotate, or scale of geometry (just as you might move, rotate, and scale geometry within the SketchUp user interface). Use of the transformation class require a knowledge of geometrical transformations in 3 dimensions which is covered extensively on the Internet.

Class Methods

axes
The axes method is used to create a Transformation that goes from world coordinates to an arbitrary coordinate system defined by an origin and three axis vectors.
Syntax:
transformation = Geom::Transformation.axes origin, xaxis, yaxis, zaxis
Arguments:
origin - a Point3d object representing the origin (0,0,0 point of the arbitrary coordinate system) xaxis - a Vector3d object representing the direction of the x axis. yaxis - a Vector3d object representing the direction of the y axis. zaxis - a Vector3d object representing the direction of the z axis.
Return Value:
transformation - a new Transformation object
Comments:
Example:

interpolate
The interpolate method is used to create a new transformation that is the result of interpolating between two other transformations.
Syntax:
transformation3 = Geom::Transformation.interpolate transformation1, transformation2, parameter
Arguments:
transformation1 - a Transformation object transformation2 - a Transformation object parameter - a value between 0 and 1 (see comments)
Return Value:
transformation3 - the new Transformation object
Comments:
Parameter is a percent (between 0 and 1) that identifies whether to favor transformation1 or transformation2.
Example:

new
The new method is used to create a new transformation.
Syntax:

transformation = Geom::Transformation.new

transformation = Geom::Transformation.new point

transformation = Geom::Transformation.new vector

transformation = Geom::Transformation.new transformation

transformation = Geom::Transformation.new array

transformation = Geom::Transformation.new scale

transformation = Geom::Transformation.new origin, zaxis

transformation = Geom::Transformation.new point, xaxis, yaxis

transformation = Geom::Transformation.newpoint, axis, angle

transformation = Geom::Transformation.new xaxis, yaxis, zaxis, origin

Arguments:

point - a Point3d object

vector - a Vector3d object

transformation - a Transformation object

array - an Array object

scale - a single numeric values used to set a global scale factor for the transform

origin - a Point3d object representing the origin (0,0,0 point of the arbitrary coordinate system)

xaxis - a Vector3d object representing the direction of the x axis.

yaxis - a Vector3d object representing the direction of the y axis.

zaxis - a Vector3d object representing the direction of the z axis.

Return Value:
tranformation - a new Transformation object
Comments:

You can use this method or one of the more specific methods for creating specific kinds of Transformations.

Geom::Transformation.new with no arguments creates a new identify Transformation.

Geom::Transformation.new(pt) creates a Transformation that translates the origin to pt.

Geom::Transformation.new(vec) creates a Transformation that translates by vector vec.

Geom::Transformation.new(transform) creates a Transformation that is a copy of another Transformation. This is equivalent to transform.clone.

Geom::Transformation.new(array) creates a Transformation from a 16 element Array.

Geom::Transformation.new(scale) creates a Transformation that does uniform scaling.

Geom::Transformation.new(origin, zaxis) creates a Transformation where origin is the new origin, and zaxis is the z axis. The x and y axes are determined using an arbitrary axis rule.

Geom::Transformation.new(pt, xaxis, yaxis) create a Transformation given a new origin, x axis and y axis.

Geom::Transformation.new(pt, axis, angle) creates a Transformation that rotates by angle (given in radians) about a line defined by pt and axis.

Example:

point = Geom::Point3d.new 10,20,30
t = Geom::Transformation point
if (t)
UI.messagebox
else
UI.messagebox "Failure"|
end

rotation
The rotation method is used to create a Transformation that does rotation about an axis.
Syntax:
transformation = Geom::Transformation.rotation point, vector, angle
Arguments:
point - a Point3d object vector - a Vector3d object angle - a numeric value, expressed in radians, that specifies the angle to rotate about the axis set by the second parameter
Return Value:
transformation - a new Transformation object
Comments:
The axis is defined by a point and a vector. The angle is given in radians.
Example:

scaling
The scaling method is used to create a Transformation that does scaling.
Syntax:
transformation = Geom::Transformation.scaling scale transformation = Geom::Transformation.scaling point, scale transformation = Geom::Transformation.scaling xscale, yscale, zscale transformation = Geom::Transformation.scaling point, xscale, yscale, zscale
Arguments:

scale - a single numeric values used to set a global scale factor for the transform

xscale - a numeric value specifying the scale factor in the x direction for the transform

yscale - a numeric value specifying the scale factor in the y direction for the transform

zscale - a numeric value specifying the scale factor in the z direction for the transform

point - a Point3d object

Return Value:
transformation - a new Transformation object
Comments:
Create a Transformation that does scaling. With one argument, it does a uniform scale about the origin. With two arguments, it does a uniform scale about an arbitrary point. With three arguments, it does a non-uniform scale about the origin. With four arguments it does a non-uniform scale about an arbitrary point
Example:

translation
The translation method is used to create a transformation that does translation.
Syntax:
transformation = Geom::Transformation.translation vector
Arguments:
vector - a Vector3d object
Return Value:
transformation - a new Transformation object
Comments:
Example:

Instance Methods

*
The * method is used to do matrix multiplication using the Transform.
Syntax:
point2 = transformation * point1 vector2 = transformation * vector1 transformation2 = transformation * transformation1
Arguments:
point1 - a Point3d object vector1 - a Vector3d object transformation1 - a Transformation object
Return Value:
point2 - a new Point3d object vector2 - a new Vector3d object transformation2 - a new Transformation object
Comments:
Example:

clone
The clone method is used to create a copy of a transformation.
Syntax:
transformation2 = transformation1.clone
Arguments:
Return Value:
transformation2 - a new Transformation object (clone of transformation1)
Comments:
Example:

identity?
The identity? method is used to determine if a transformation is the identity transform.
Syntax:
status = transformation.identify?
Arguments:
Return Value:
status - true if the transformation is the identity transform, false if it is not the identity transform.
Comments:
Example:

inverse
The inverse method is used to retrieve the inverse of a transformation.
Syntax:
transformation2 = transformation1.inverse
Arguments:
Return Value:
transformation2 - the Transformation object at its inverse
Comments:
Example:

invert!
The invert! method sets the transformation to its inverse.
Syntax:
transformation = transformation.invert!
Arguments:
Return Value:
transformation - the Transformation object at its inverse.
Comments:
Example:

origin
The origin method retrieves the origin of a rigid transformation.
Syntax:
point = transformation.origin
Arguments:
Return Value:
point - a Point3d object representing the origin of the transformation
Comments:
Example:

set!
The set! method is used to set this transformation to match another one
Syntax:
transformation1 = transformation1.set! transformation2
Arguments:
transformation2 - a Transformation object to match
Return Value:
transformation1 - a Transformation object matching transformation2
Comments:
The argument is anything that can be converted into a Transformation.
Example:

to_a
The to_a method retrieves a 16 element array which contains the values that define the Transformation.
Syntax:
array = transformation.to_a
Arguments:
Return Value:
array - an Array element containing the values that define the transformation
Comments:
Example:

xaxis
The xaxis method retrieves the x axis of a rigid transformation.
Syntax:
point = transformation.xaxis
Arguments:
Return Value:
point - a Point3d object containing the xaxis value
Comments:
Example:

yaxis
The yaxis method retrieves the y axis of a rigid transformation.
Syntax:
point = transformation.yaxis.
Arguments:
Return Value:
point - a Point3d object containing the yaxis value
Comments:
Example:

zaxis
The zaxis method retrieves the z axis of a rigid transformation.
Syntax:
point = transformation.zaxis
Arguments:
Return Value:
point - a Point3d object containing the zaxis value
Comments:
Example: