# 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

## Instance Method Summary #collapse

• The #% 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, returning a new vector.

• Apply a Transformation to a 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(array3d) ⇒ Geom::Vector3d #initialize(array2d) ⇒ Geom::Vector3d #initialize(vector) ⇒ 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``````

Version:

• SketchUp 6.0

## Class Method Details

### ↑.linear_combination(weight1, vector1, weight2, vector2) ⇒ Geom::Vector3d .linear_combination(x, xaxis, y, yaxis, z, zaxis) ⇒ Geom::Vector3d

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 vector = weight1 * vector1 + weight2 * vector2.

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)``````

• .linear_combination(weight1, vector1, weight2, vector2) ⇒ Geom::Vector3d

Parameters:

• weight1 (Numeric)

A weight or percentage.

• vector1

The first vector.

• weight2 (Numeric)

A weight or percentage.

• vector2

The second vector.

Returns:

• .linear_combination(x, xaxis, y, yaxis, z, zaxis) ⇒ Geom::Vector3d

Parameters:

• x (Numeric)

A weight or percentage for the x axis.

• xaxis

The x axis vector.

• y (Numeric)

A weight or percentage for the y axis.

• yaxis

The y axis vector.

• z (Numeric)

A weight or percentage for the z axis.

• zaxis

The z axis vector.

Returns:

Version:

• SketchUp 6.0

## Instance Method Details

### ↑ #%(vector) ⇒ Float

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

This is an alias of the #dot method.

Examples:

``````vector1 = Geom::Vector3d.new(0, 0, 1)
vector2 = Geom::Vector3d.new(0, 1, 0)
dot = vector1 % vector2``````

Parameters:

• vector (Geom::Vector)

Returns:

• (Float)

Version:

• SketchUp 6.0

### ↑ #cross(vector) ⇒ Geom::Vector3d

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:

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

Parameters:

• vector

A Vector3d object.

Returns:

• the cross of vector1 and vector2

Version:

• SketchUp 6.0

### ↑ #+(vector2) ⇒ Geom::Vector3d

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``````

Parameters:

• vector2

A Vector3d object.

Returns:

• the new vector.

Version:

• SketchUp 6.0

### ↑ #-(vector2) ⇒ Geom::Vector3d

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``````

Parameters:

• vector2

A Vector3d object.

Returns:

• the new vector.

Version:

• SketchUp 6.0

### ↑ #<(vector2) ⇒ Boolean

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``````

Parameters:

• vector2

A Vector3d object.

Returns:

• (Boolean)

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

Version:

• SketchUp 6.0

### ↑ #==(vector2) ⇒ Boolean

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``````

Parameters:

• vector2

A Vector3d object.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### ↑ #[](i) ⇒ Length

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[0]``````
``````vector = Geom::Vector3d.new(1,0,0)
value = vector[0]
if (value)
UI.messagebox value
else
UI.messagebox "Failure"
end``````

Parameters:

• i (Integer)

An index into an array of three coordinates.

Returns:

• (Length)

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

Version:

• SketchUp 6.0

### ↑ #[]=(index, value) ⇒ Numeric

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:

``vector[i] = coordinate``

Parameters:

• index (Integer)

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

• value (Numeric)

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

Returns:

• (Numeric)

the newly set coordinate value

Version:

• SketchUp 6.0

### ↑ #angle_between(vector2) ⇒ Float

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``````

Parameters:

• vector2

A Vector3d object.

Returns:

• (Float)

Version:

• SketchUp 6.0

### ↑ #axes ⇒ Array(Geom::Vector3d, Geom::Vector3d, Geom::Vector3d)

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:

• an Array object containing three Vector3d objects

Version:

• SketchUp 6.0

### ↑ #clone ⇒ Geom::Vector3d

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:

• a Vector3d object which is the clone of vector

Version:

• SketchUp 6.0

### ↑ #cross(vector) ⇒ Geom::Vector3d

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:

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

Parameters:

• vector

A Vector3d object.

Returns:

• the cross of vector1 and vector2

Version:

• SketchUp 6.0

### ↑ #dot(vector) ⇒ Float

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

Examples:

``````vector1 = Geom::Vector3d.new(0, 0, 1)
vector2 = Geom::Vector3d.new(0, 1, 0)
dot = vector1.dot(vector2)``````

Parameters:

• vector (Geom::Vector)

Returns:

• (Float)

Version:

• SketchUp 6.0

### ↑ #inspect ⇒ Geom::Vector3d

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:

• the Vector3d object

Version:

• SketchUp 6.0

### ↑ #length ⇒ Length

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) ⇒ Numeric

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``````

Parameters:

• length (Numeric)

A length for the vector.

Returns:

Version:

• SketchUp 6.0

### ↑ #normalize ⇒ Geom::Vector3d

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:

• a new normalized Vector3d object

Version:

• SketchUp 6.0

### ↑ #normalize! ⇒ Geom::Vector3d

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:

• a normalized Vector3d object

Version:

• SketchUp 6.0

### ↑ #parallel?(vector2) ⇒ Boolean

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

Examples:

``status = vector.parallel?(vector2)``

Parameters:

• vector2

A Vector3d object.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### ↑ #perpendicular?(vector2) ⇒ Boolean

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)``````

Parameters:

• vector2

A Vector3d object.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### ↑ #reverse ⇒ Geom::Vector3d

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:

• a Vector3d object that is the reverse of vector

Version:

• SketchUp 6.0

### ↑ #reverse! ⇒ Geom::Vector3d

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

Examples:

``vector.reverse!``

Returns:

• a Vector3d object that is the reverse of vector

Version:

• SketchUp 6.0

### ↑ #samedirection?(vector2) ⇒ Boolean

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)``````

Parameters:

• vector2

A Vector3d object.

Returns:

• (Boolean)

Version:

• SketchUp 6.0

### ↑#set!(array3d) ⇒ Geom::Vector3d #set!(vector) ⇒ Geom::Vector3d #set!(x, y, z) ⇒ Geom::Vector3d

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``````

Version:

• SketchUp 6.0

### ↑ #to_a ⇒ Array(Length, Length, Length)

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

Examples:

``a = vector.to_a``

Returns:

Version:

• SketchUp 6.0

### ↑ #to_s ⇒ String

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:

• (String)

a string representation of vector

Version:

• SketchUp 6.0

### ↑ #transform(transform) ⇒ Geom::Vector3d

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

Examples:

``vector2 = vector.transform(transformation)``

Parameters:

• transform

A Transformation object to apply to the vector.

Returns:

• the newly transformed vector

Version:

• SketchUp 6.0

### ↑ #transform!(transform) ⇒ Geom::Vector3d

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

Examples:

``vector.transform!(transformation)``

Parameters:

• transform

A Transformation object to apply to the vector.

Returns:

• the transformed vector

Version:

• SketchUp 6.0

### ↑ #unitvector? ⇒ Boolean

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:

• (Boolean)

Version:

• SketchUp 6.0

### ↑ #valid? ⇒ Boolean

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:

• (Boolean)

Version:

• SketchUp 6.0

### ↑ #x ⇒ Length

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

Examples:

``x = vector.x``

Returns:

• (Length)

the x coordinate of the vector

Version:

• SketchUp 6.0

### ↑ #x=(x) ⇒ Numeric

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``````

Parameters:

• x (Numeric)

The x coordinate for the vector.

Returns:

• (Numeric)

the newly set x coordinate for the vector

Version:

• SketchUp 6.0

### ↑ #y ⇒ Length

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:

• (Length)

the y coordinate of the vector

Version:

• SketchUp 6.0

### ↑ #y=(y) ⇒ Numeric

Set the y coordinate of the vector.

Examples:

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

Parameters:

• y (Numeric)

The y coordinate for the vector.

Returns:

• (Numeric)

the newly set y coordinate for the vector

Version:

• SketchUp 6.0

### ↑ #z ⇒ Length

Get the z coordinate of the vector.

Examples:

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

Returns:

• (Length)

the z coordinate of the vector

Version:

• SketchUp 6.0

### ↑ #z=(z) ⇒ Numeric

Set the z coordinate of the vector.

Examples:

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

Parameters:

• z (Numeric)

The z coordinate for the vector.

Returns:

• (Numeric)

the newly set z coordinate for the vector

Version:

• SketchUp 6.0