# Class: Geom::Vector3d

Inherits:
Object
• Object
show all

## Overview

The Vector3d class is used to represent vectors in a 3 dimensional space. Vectors in SketchUp have a direction and a length, but not a starting point.

There are numerous tutorials on 3D vectors available on the internet.

Version:

• SketchUp 6.0

## Class Method Summary collapse

• The linear_combination method is used to create a new vector as a linear combination of other vectors.

## Instance Method Summary collapse

• The dot method is used to compute the dot product between two vectors.

• The cross method is used to compute the cross product between two vectors.

• The - method is used to add a vector to this one.

• The - method is used to subtract a vector from this one.

• The < method is used to determine if a vector's x, y or z value is less than another vector's x, y or z value.

• The == method is used to determine if two vectors are equal to within tolerance.

• The [] method is used to access the coordinates of a vector as if it was an Array.

• The []= method is used to set the coordinates of a vector as if it was an Array.

• The angle_between method is used to compute the angle (in radians) between this vector and another vector.

• The axes method is used to compute an arbitrary set of axes with the given vector as the z-axis direction.

• The clone method is used to make a copy of a vector.

• The cross method is used to compute the cross product between two vectors.

• The dot method is used to compute the dot product between two vectors.

• constructor

The new method is used to create a new vector.

• The inspect method is used to inspect the contents of a vector as a friendly string.

• The length method is used to retrieve the length of the vector.

• The length= method is used to set the length of the vector.

• The normalize method is used to return a vector that is a unit vector of another.

• The normalize! method is used to convert a vector into a unit vector, in place.

• The parallel method is used to determine if this vector is parallel to another vector to within tolerance.

• The perpendicular? method is used to determine if this vector is perpendicular to another vector to within tolerance.

• The reverse method is used to return a new vector that is the reverse of this vector, while leaving the original unchanged.

• The reverse! method is used to reverse the vector in place.

• The samedirection? method is used to determine if this vector is parallel to and in the same direction as another vector to within tolerance.

• The set! method is used to set the coordinates of the vector.

• The to_a method retrieves the coordinates of the vector in an Array [x, y, z].

• The to_s method is used to format the vector as a String.

• Apply a Transformation to a vector.

• Apply a Transformation to a vector, returning a new vector.

• The unitvector? method is used to see if the vector is a unit vector.

• The valid? method is used to verify if a vector is valid.

• The x method is used to retrieve the x coordinate of the vector.

• The x= method is used to set the x coordinate of the vector.

• The y method is used to retrieve the y coordinate of the vector.

• Set the y coordinate of the vector.

• Get the z coordinate of the vector.

• Set the z coordinate of the vector.

## Constructor Details

### #initialize ⇒ Geom::Vector3d #initialize(x, y, z) ⇒ Geom::Vector3d #initialize(vector2) ⇒ Geom::Vector3d

The new method is used to create a new vector.

Examples:

``````# A vector that runs up the Z axis.
vector = Geom::Vector3d.new 0,0,1
if (vector)
UI.messagebox vector
else
UI.messagebox "Failure"
end``````

• #initializeGeom::Vector3d
• #initialize(x, y, z) ⇒ Geom::Vector3d

Parameters:

• x

A X value.

• y

A Y value.

• z

A Z value.

• #initialize(vector2) ⇒ Geom::Vector3d

Parameters:

• vector2

A Vector3d object.

Version:

• SketchUp 6.0

## Class Method Details

### .linear_combination(weight1, vector1, weight2, vector2) ⇒ Object

The linear_combination method is used to create a new vector as a linear combination of other vectors. This method is generally used to get a vector at some percentage between two vectors.

A linear combination is a standard term for vector math. It is defined as point = weight1 * point1 + weight2 * point2.

In addition to the 4-argument form detailed here, you may also call this method with 6 parameters in the form of:

``````- vec = Geom::Vector3d.linear_combination(x, xaxis, y, yaxis, z, zaxis)
``````

Examples:

``````# Create a vector that is a 50%/50% linear combination of two others.
vec1 = Geom::Vector3d.new 3,0,0
vec2 = Geom::Vector3d.new 0,3,0
new_vector = Geom::Vector3d.linear_combination(0.5, vec1, 0.5, vec2)
# new_vector will now contain a Vector3d(1.5, 1.5, 0)``````

Returns vector - a Vector3d object

Parameters:

• weight1

A weight or percentage.

• vector1

The first vector.

• weight2

A weight or percentage.

• vector2

The end point of the line.

Returns:

• vector - a Vector3d object

Version:

• SketchUp 6.0

## Instance Method Details

### #dot(vector2) ⇒ Object

The dot method is used to compute the dot product between two vectors.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
vector2 = Geom::Vector3d.new 0,1,0
d = vector.dot vector2``````

Returns d - the dot product of vector1 and vector2

Parameters:

• vector2

A Vector3d object.

Returns:

• d - the dot product of vector1 and vector2

Version:

• SketchUp 6.0

### #cross(vector) ⇒ Object

The cross method is used to compute the cross product between two vectors.

The cross product, also called the vector product, is an operation on two vectors. The cross product of two vectors produces a third vector which is perpendicular to the plane in which the first two lie.

Examples:

``````vector = Geom::Vector3d.new(1,0,0)
vector2 = Geom::Vector3d.new(0,1,0)
vector3 = vector.cross(vector2)``````
``````vector1 = Geom::Vector3d.new(1,0,0)
vector2 = Geom::Vector3d.new(0,1,0)
vector3 = vector1 * vector2``````

Returns vector - the cross of vector1 and vector2

Parameters:

• vector2

A Vector3d object.

Returns:

• vector - the cross of vector1 and vector2

Version:

• SketchUp 6.0

### #+(vector2) ⇒ Object

The - method is used to add a vector to this one.

Examples:

``````vector = Geom::Vector3d.new 0,0,2
vector2 = Geom::Vector3d.new 0,1,0
new_vector = vector + vector2``````

Returns vector - the new vector.

Parameters:

• vector2

A Vector3d object.

Returns:

• vector - the new vector.

Version:

• SketchUp 6.0

### #-(vector2) ⇒ Object

The - method is used to subtract a vector from this one.

Examples:

``````vector = Geom::Vector3d.new 0,0,2
vector2 = Geom::Vector3d.new 0,1,0
new_vector = vector - vector2``````

Returns vector - the new vector.

Parameters:

• vector2

A Vector3d object.

Returns:

• vector - the new vector.

Version:

• SketchUp 6.0

### #<(vector2) ⇒ Object

The < method is used to determine if a vector's x, y or z value is less than another vector's x, y or z value.

Examples:

``````vector = Geom::Vector3d.new 0,0,2
vector2 = Geom::Vector3d.new 0,1,0
lt = vector < vector2``````

Returns true if the vector's x, y or z component is less

Parameters:

• vector2

A Vector3d object.

Returns:

• true if the vector's x, y or z component is less

Version:

• SketchUp 6.0

### #==(vector2) ⇒ Object

The == method is used to determine if two vectors are equal to within tolerance.

Examples:

``````vector = Geom::Vector3d.new 1,0,0
vector2 = Geom::Vector3d.new 0,1,0
status = vector == vector2
# Returns false
UI.messagebox status``````

Returns status - true if vector1 is equal to vector 2. False if they are not equal.

Parameters:

• vector2

A Vector3d object.

Returns:

• status - true if vector1 is equal to vector 2. False if they are not equal.

Version:

• SketchUp 6.0

### #[](i) ⇒ Object

The [] method is used to access the coordinates of a vector as if it was an Array. The index must be 0, 1 or 2.

The following are equivalent:

Examples:

``````x = vector.x
x = vector``````
``````vector = Geom::Vector3d.new 1,0,0
value = vector
if (value)
UI.messagebox value
else
UI.messagebox "Failure"
end``````

Returns coordinate - the value for the x, y, or z coordinate.

Parameters:

• i

An index into an array of three coordinates.

Returns:

• coordinate - the value for the x, y, or z coordinate.

Version:

• SketchUp 6.0

### #[]=(arguments) ⇒ Object

The []= method is used to set the coordinates of a vector as if it was an Array. The value of i must be 0, 1 or 2.

Examples:

``value = vector[i] = coordinate``

Returns value - the newly set coordinate value

Parameters:

• coordinate

The value for the x, y, or z coordinate.

Returns:

• value - the newly set coordinate value

Version:

• SketchUp 6.0

### #angle_between(vector2) ⇒ Object

The angle_between method is used to compute the angle (in radians) between this vector and another vector.

Examples:

``````vector1 = Geom::Vector3d.new 1,0,0
vector2 = Geom::Vector3d.new 0,1,0
angle = vector1.angle_between vector2``````

Returns angle - an angle (in radians)

Parameters:

• vector2

A Vector3d object.

Returns:

• angle - an angle (in radians)

Version:

• SketchUp 6.0

### #axes ⇒ Object

The axes method is used to compute an arbitrary set of axes with the given vector as the z-axis direction.

Returns an Array of three vectors [xaxis, yaxis, zaxis]

Examples:

``````vector = Geom::Vector3d.new 1,0,0
a = vector.axes``````

Returns:

• a - an Array object containing three Vector3d objects

Version:

• SketchUp 6.0

### #clone ⇒ Object

The clone method is used to make a copy of a vector.

This method is equivalent to vec2 = Geom::Vector3d.new(vec)

Examples:

``````vector = Geom::Vector3d.new 1,0,0
vector2 = vector.clone``````

Returns:

• vector2 - a Vector3d object which is the clone of vector

Version:

• SketchUp 6.0

### #cross(vector) ⇒ Object

The cross method is used to compute the cross product between two vectors.

The cross product, also called the vector product, is an operation on two vectors. The cross product of two vectors produces a third vector which is perpendicular to the plane in which the first two lie.

Examples:

``````vector = Geom::Vector3d.new(1,0,0)
vector2 = Geom::Vector3d.new(0,1,0)
vector3 = vector.cross(vector2)``````
``````vector1 = Geom::Vector3d.new(1,0,0)
vector2 = Geom::Vector3d.new(0,1,0)
vector3 = vector1 * vector2``````

Returns vector - the cross of vector1 and vector2

Parameters:

• vector2

A Vector3d object.

Returns:

• vector - the cross of vector1 and vector2

Version:

• SketchUp 6.0

### #dot(vector2) ⇒ Object

The dot method is used to compute the dot product between two vectors.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
vector2 = Geom::Vector3d.new 0,1,0
d = vector.dot vector2``````

Returns d - the dot product of vector1 and vector2

Parameters:

• vector2

A Vector3d object.

Returns:

• d - the dot product of vector1 and vector2

Version:

• SketchUp 6.0

### #inspect ⇒ Object

The inspect method is used to inspect the contents of a vector as a friendly string.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
out_string = vector.inspect
puts out_string``````

Returns:

• vector - the Vector3d object

Version:

• SketchUp 6.0

### #length ⇒ Object

The length method is used to retrieve the length of the vector.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
l = vector.length``````

Returns:

• length - the length of the vector

Version:

• SketchUp 6.0

### #length=(length) ⇒ Object

The length= method is used to set the length of the vector. The length must be greater than 0.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
l = vector.length
UI.messagebox l
newl = vector.length = 2``````

Returns length - a newly set length

Parameters:

• length

A length for the vector.

Returns:

• length - a newly set length

Version:

• SketchUp 6.0

### #normalize ⇒ Object

The normalize method is used to return a vector that is a unit vector of another.

Examples:

``````vector = Geom::Vector3d.new 0,0,2
vector2 = vector.normalize``````

Returns:

• vector2 - a normalized Vector3d object

Version:

• SketchUp 6.0

### #normalize! ⇒ Object

The normalize! method is used to convert a vector into a unit vector, in place.

Another way to do this is vec.length = 1

Examples:

``````vector = Geom::Vector3d.new 0,0,2
vector.normalize!``````

Returns:

• vector2 - a normalized Vector3d object

Version:

• SketchUp 6.0

### #parallel?(vector2) ⇒ Object

The parallel method is used to determine if this vector is parallel to another vector to within tolerance.

Examples:

``status = vector.parallel? vector2``

Returns status - true if vector and vector2 are parallel. False if they are not parallel.

Parameters:

• vector2

A Vector3d object.

Returns:

• status - true if vector and vector2 are parallel. False if they are not parallel.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### #perpendicular?(vector2) ⇒ Object

The perpendicular? method is used to determine if this vector is perpendicular to another vector to within tolerance.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
vector2 = Geom::Vector3d.new 0,1,0
status = vector.perpendicular? vector2``````

Returns status - true if vector and vector2 are parallel. False if they are not parallel.

Parameters:

• vector2

A Vector3d object.

Returns:

• status - true if vector and vector2 are parallel. False if they are not parallel.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### #reverse ⇒ Object

The reverse method is used to return a new vector that is the reverse of this vector, while leaving the original unchanged.

Examples:

``vector2 = vector.reverse``

Returns:

• vector2 - a Vector3d object that is the reverse of vector

Version:

• SketchUp 6.0

### #reverse! ⇒ Object

The reverse! method is used to reverse the vector in place.

Examples:

``vector.reverse!``

Returns:

• vector2 - a Vector3d object that is the reverse of vector

Version:

• SketchUp 6.0

### #samedirection(vector2) ⇒ Object

The samedirection? method is used to determine if this vector is parallel to and in the same direction as another vector to within tolerance.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
vector2 = Geom::Vector3d.new 0,1,0
status = vector.samedirection? vector2``````

Returns status - true if vector and vector2 are in the same direction. False if they are not in the same direction.

Parameters:

• vector2

A Vector3d object.

Returns:

• status - true if vector and vector2 are in the same direction. False if they are not in the same direction.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### #set!(x, y, z) ⇒ Object #set!(vector2) ⇒ Object

The set! method is used to set the coordinates of the vector.

Examples:

This is a shortcut for writing:

``````vec.x = x
vec.y = y
vec.z = z``````

You may also call this method with an array or another vector:

``````vec.set!(x, y, z)
vec.set!([x, y, z])
vec.set!(vec2)``````
``````vector = Geom::Vector3d.new 0,0,1
vector.set! 1,0,0``````

• #set!(x, y, z) ⇒ Object

Returns vector - The newly set Vector3d object

Parameters:

• x

The x value for the vector.

• y

The y value for the vector.

• z

The z value for the vector.

Returns:

• vector - The newly set Vector3d object

• #set!(vector2) ⇒ Object

Returns vector - The newly set Vector3d object

Parameters:

• vector2

A Vector3d object.

Returns:

• vector - The newly set Vector3d object

Version:

• SketchUp 6.0

### #to_a ⇒ Object

The to_a method retrieves the coordinates of the vector in an Array [x, y, z].

Examples:

``a = vector.to_a``

Returns:

• a - the coordinates of the vector in an array

Version:

• SketchUp 6.0

### #to_s ⇒ Object

The to_s method is used to format the vector as a String.

Examples:

``````vector = Geom::Vector3d.new 0,0,1
out_string = vector.to_s
puts out_string``````

Returns:

• s - a string representation of vector

Version:

• SketchUp 6.0

### #transform!(transform) ⇒ Object

Apply a Transformation to a vector. The vector itself is modified.

Examples:

``vector.transform! transformation``

Returns vector - the vector

Parameters:

• transform

A Transformation object to apply to the vector.

Returns:

• vector - the vector

Version:

• SketchUp 6.0

### #transform(transform) ⇒ Object

Apply a Transformation to a vector, returning a new vector. The original vector is unchanged by this method.

Examples:

``vector2 = vector.transform! transformation``

Returns vector2 - the newly transformed vector

Parameters:

• transform

A Transformation object to apply to the vector.

Returns:

• vector2 - the newly transformed vector

Version:

• SketchUp 6.0

### #unitvector? ⇒ Object

The unitvector? method is used to see if the vector is a unit vector.

This is equivalent to vec.length == 1.0

Examples:

``````vector = Geom::Vector3d.new 0,0,1
status = vector.unitvector?``````

Returns:

• status - true if the vector is a unit vector. False if the vector is not a unit vector.

• (Boolean)

Version:

• SketchUp 6.0

### #valid? ⇒ Object

The valid? method is used to verify if a vector is valid. A vector is valid if its length is not zero.

Examples:

``````# A zero length vector will be invalid
vector = Geom::Vector3d.new 0,0,0
status = vector.valid?
# A non-zero length vector is valid
vector = Geom::Vector3d.new 0,0,1
status = vector.valid?``````

Returns:

• status - true if the vector is valid. false if the vector is not valid.

• (Boolean)

Version:

• SketchUp 6.0

### #x ⇒ Object

The x method is used to retrieve the x coordinate of the vector.

Examples:

``x = vector.x``

Returns:

• x - the x coordinate of the vector

Version:

• SketchUp 6.0

### #x=(x) ⇒ Object

The x= method is used to set the x coordinate of the vector.

Examples:

``````vector = Geom::Vector3d.new 1,2,3
x = vector.x = 10``````

Returns x - the newly set x coordinate for the vector

Parameters:

• x

The x coordinate for the vector.

Returns:

• x - the newly set x coordinate for the vector

Version:

• SketchUp 6.0

### #y ⇒ Object

The y method is used to retrieve the y coordinate of the vector.

Examples:

``````vector = Geom::Vector3d.new 1,2,3
y = vector.y``````

Returns:

• y - the y coordinate of the vector

Version:

• SketchUp 6.0

### #y=(y) ⇒ Object

Set the y coordinate of the vector.

Examples:

``````vector = Geom::Vector3d.new 1,2,3
y = vector.y = 10``````

Returns y - the newly set y coordinate for the vector

Parameters:

• y

The y coordinate for the vector.

Returns:

• y - the newly set y coordinate for the vector

Version:

• SketchUp 6.0

### #z ⇒ Object

Get the z coordinate of the vector.

Examples:

``````vector = Geom::Vector3d.new 1,2,3
z = vector.z``````

Returns:

• z - the z coordinate of the vector

Version:

• SketchUp 6.0

### #z=(z) ⇒ Object

Set the z coordinate of the vector.

Examples:

``````vector = Geom::Vector3d.new 1,2,3
z = vector.z = 10``````

Returns z - the newly set z coordinate for the vector

Parameters:

• z

The z coordinate for the vector.

Returns:

• z - the newly set z coordinate for the vector

Version:

• SketchUp 6.0