# Class: Geom::Vector2d

Inherits:
Object
• Object
show all

## Overview

The Vector2d class represents vectors in a 2 dimensional space. Vectors in LayOut have a direction and a length, but not a starting point.

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

Version:

• LayOut 2018

## Constructor Details

### ↑#initialize ⇒ Geom::Vector2d #initialize(x, y) ⇒ Geom::Vector2d #initialize(vector) ⇒ Geom::Vector2d

The new method creates a new Geom::Vector2d.

Examples:

``````# A vector that runs along the X axis.
vector = Geom::Vector2d.new(1, 0)``````

Version:

• LayOut 2018

## Instance Method Details

### ↑ #%(vector) ⇒ Object

The #% method returns the dot product between two Geom::Vector2d. This is an alias of the dot method.

Examples:

``````vector = Geom::Vector2d.new(0, 2)
vector2 = Geom::Vector2d.new(1, 0)
d2 = vector % vector2``````

Parameters:

• vector

Returns:

• The dot product of the vectors

Version:

• LayOut 2018

### ↑ #*(vector) ⇒ Geom::Vector2d

The #* method returns the cross product between two Geom::Vector2d. This is an alias of the cross method.

Examples:

``````vector = Geom::Vector2d.new(1, 0)
vector2 = Geom::Vector2d.new(0, 1)
cross = vector * vector``````

Parameters:

• vector

Returns:

Version:

• LayOut 2018

### ↑ #+(vector) ⇒ Geom::Vector2d

The #+ method adds a Geom::Vector2d to this one.

Examples:

``````vector = Geom::Vector2d.new(0, 2)
vector2 = Geom::Vector2d.new(1, 0)
new_vector = vector + vector2``````

Parameters:

• vector

Returns:

Version:

• LayOut 2018

### ↑ #-(vector) ⇒ Geom::Vector2d

The #- method subtracts a Geom::Vector2d from this one.

Examples:

``````vector = Geom::Vector2d.new(0, 2)
vector2 = Geom::Vector2d.new(1, 0)
new_vector = vector - vector2``````

Parameters:

• vector

Returns:

Version:

• LayOut 2018

### ↑ #==(vector) ⇒ Boolean

The #== method returns whether two Geom::Vector2d are equal within tolerance.

Examples:

``````vector = Geom::Vector2d.new(1, 0)
vector2 = Geom::Vector2d.new(0,1)
# Returns false
status = vector == vector2``````

Parameters:

• vector

Returns:

• (Boolean)

Version:

• LayOut 2018

### ↑ #[](index) ⇒ Numeric

The #[] method returns the value of the Geom::Vector2d at the specified index.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
# retrieves the y value of 2
yvalue = vector[1]``````

Parameters:

• index (Integer)

The index into an array of two coordinates.

Returns:

• (Numeric)

The value for the x or y coordinate.

Version:

• LayOut 2018

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

The #[]= method sets the x or y value of the Geom::Vector2d based on the specific index of the value.

Examples:

``````point = Geom::Vector2d.new(1,2)
point[1] = 4``````

Parameters:

Returns:

• (Numeric)

The new x or y value if successful

Version:

• LayOut 2018

### ↑ #angle_between(vector) ⇒ Numeric

The #angle_between method computes the angle in radians between the Geom::Vector2d and another Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 0)
vector2 = Geom::Vector2d.new(-1, 0)
# returns PI
angle = vector.angle_between(vector2)``````

Parameters:

• vector

Returns:

• (Numeric)

Version:

• LayOut 2018

### ↑ #clone ⇒ Geom::Vector2d

The #clone method makes a copy of the Geom::Vector2d. This method is equivalent to vec2 = Geom::Vector2d.new(vec).

Examples:

``````vector = Geom::Vector2d.new(1, 0)
vector2 = vector.clone``````

Returns:

Version:

• LayOut 2018

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

The #* method returns the cross product between two Geom::Vector2d. This is an alias of the cross method.

Examples:

``````vector = Geom::Vector2d.new(1, 0)
vector2 = Geom::Vector2d.new(0, 1)
cross = vector * vector``````

Parameters:

• vector

Returns:

Version:

• LayOut 2018

### ↑ #dot(vector) ⇒ Object

The #% method returns the dot product between two Geom::Vector2d. This is an alias of the dot method.

Examples:

``````vector = Geom::Vector2d.new(0, 2)
vector2 = Geom::Vector2d.new(1, 0)
d2 = vector % vector2``````

Parameters:

• vector

Returns:

• The dot product of the vectors

Version:

• LayOut 2018

### ↑ #inspect ⇒ String

The #inspect method formats the Geom::Vector2d as a string.

Examples:

``````point = Geom::Point2d.new(1, 2)
string = point.inspect``````

Returns:

Version:

• LayOut 2018

### ↑ #length ⇒ Length

The #length method returns the length of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(0, 4)
# returns 4
l = vector.length``````

Returns:

Version:

• LayOut 2018

### ↑ #length=(length) ⇒ Numeric

The #length= method sets the length of the Geom::Vector2d. The new length must not be 0.

Examples:

``````vector = Geom::Vector2d.new(0, 4)
l = vector.length
vector.length = 2``````

Parameters:

Returns:

Version:

• LayOut 2018

### ↑ #normalize ⇒ Geom::Vector2d

The #normalize method returns a Geom::Vector2d that is a unit vector of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(0, 4)
# returns a new Vector2d(0, 1)
vector2 = vector.normalize``````

Returns:

Version:

• LayOut 2018

### ↑ #normalize! ⇒ Object

The #normalize! method converts a Geom::Vector2d vector into a unit vector. Another way to do this is vector.length = 1

Examples:

``````vector = Geom::Vector2d.new(0, 4)
# modifies vector to be the Vector2d(0, 1)
vector.normalize!``````

Version:

• LayOut 2018

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

The #parallel? method determines if the Geom::Vector2d is parallel to another Geom::Vector2d to within tolerance.

Examples:

``````vector = Geom::Vector2d.new(0, 1)
vector2 = Geom::Vector2d.new(1, 2)
# returns true
status = vector.parallel?(vector2)``````

Parameters:

• vector

Returns:

• (Boolean)
• (Boolean)

Version:

• LayOut 2018

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

The #perpendicular? method determines if the Geom::Vector2d is perpendicular to another Geom::Vector2d to within tolerance.

Examples:

``````vector = Geom::Vector2d.new(0, 1)
vector2 = Geom::Vector2d.new(1, 2)
# returns false
status = vector.perpendicular?(vector2)``````

Parameters:

• vector

Returns:

• (Boolean)
• (Boolean)

Version:

• LayOut 2018

### ↑ #reverse ⇒ Geom::Vector2d

The #reverse method returns a new Geom::Vector2d that is the reverse of the Geom::Vector2d, leaving the original unchanged.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
# returns the Vector2d(-1, -2)
vector2 = vector.reverse``````

Returns:

Version:

• LayOut 2018

### ↑ #reverse! ⇒ Object

The #reverse! method reverses the Geom::Vector2d in place.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
# modifies vector to be the Vector2d(-1, -2)
vector.reverse!``````

Version:

• LayOut 2018

### ↑ #same_direction?(vector) ⇒ Boolean

The #same_direction? method determines if the Geom::Vector2d is parallel to and in the same direction as another Geom::Vector2d within tolerance.

Examples:

``````vector = Geom::Vector2d.new(0, 1)
vector2 = Geom::Vector2d.new(1, 2)
# returns true
status = vector.sime_direction?(vector2)``````

Parameters:

• vector

Returns:

• (Boolean)
• (Boolean)

Version:

• LayOut 2018

### ↑#set!(vector) ⇒ Geom::Vector2d #set!(x, y) ⇒ Geom::Vector2d

The #set! method sets the values of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
vector = vector.set!([4, 5])``````

Version:

• LayOut 2018

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

The #to_a method retrieves the coordinates of the Geom::Vector2d in an Array.

Examples:

``a = vector.to_a``

Returns:

Version:

• LayOut 2018

### ↑ #to_s ⇒ String

The #to_s method returns a string representation of the Geom::Vector2d.

Examples:

``````point = Geom::Vector2d.new(1, 2)
str = point.to_s``````

Returns:

Version:

• LayOut 2018

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

The #transform method applies a transformation to a vector, returning a new vector. The original vector is unchanged by this method.

Examples:

``````vector = Geom::Vector2d.new(4, 5)
transformation = Geom::Transformation2d.new([1, 0, 0, 1, 2, 3])
# vector2 will be (6, 8)
vector2 = vector.transform(transformation)``````

Parameters:

• transform

A transformation object to apply to the vector.

Returns:

• the newly transformed vector

Version:

• LayOut 2019

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

The #transform! method applies a transformation to a vector. The vector itself is modified.

Examples:

``````vector = Geom::Vector2d.new(4, 5)
transformation = Geom::Transformation2d.new([1, 0, 0, 1, 2, 3])
# vector will be (6, 8)
vector.transform!(transformation)``````

Parameters:

• transform

A Transformation object to apply to the vector.

Returns:

• the transformed vector

Version:

• LayOut 2019

### ↑ #unit_vector? ⇒ Boolean

The #unit_vector? method returns whether the Geom::Vector2d is a unit vector. This is equivalent to vector.length == 1.0

Examples:

``````vector = Geom::Vector2d.new(1, 0)
# returns true
status = vector.unit_vector``````

Returns:

• (Boolean)
• (Boolean)

Version:

• LayOut 2018

### ↑ #valid? ⇒ Boolean

The #valid? method verifies if a Geom::Vector2d is valid. A Geom::Vector2d is valid if its length is not zero.

Examples:

``````vector = Geom::Vector2d.new(0, 4)
status = vector.valid``````

Returns:

• (Boolean)
• (Boolean)

Version:

• LayOut 2018

### ↑ #x ⇒ Numeric

The #x method retrieves the x value of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
x = vector.x``````

Returns:

Version:

• LayOut 2018

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

The #x= method sets the x coordinate of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
vector.x = 7``````

Parameters:

Returns:

Version:

• LayOut 2018

### ↑ #y ⇒ Numeric

The #y method retrieves the y value of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
y = vector.y``````

Returns:

Version:

• LayOut 2018

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

The #y= method sets the y coordinate of the Geom::Vector2d.

Examples:

``````vector = Geom::Vector2d.new(1, 2)
vector.y = 7``````

Parameters:

Returns:

Version:

• LayOut 2018