# Vector Struct

## Definition

Represents a displacement in 2-D space.

`public value class Vector : IFormattable`

```
[System.ComponentModel.TypeConverter(typeof(System.Windows.VectorConverter))]
[System.Serializable]
public struct Vector : IFormattable
```

```
type Vector = struct
interface IFormattable
```

```
Public Structure Vector
Implements IFormattable
```

- Inheritance

- Attributes

- Implements

## Examples

The following example shows how to add two Vector structures.

```
// Adds a Vector to a Vector using the overloaded + operator.
Vector vector1 = new Vector(20, 30);
Vector vector2 = new Vector(45, 70);
Vector vectorResult = new Vector();
// vectorResult is equal to (65,100)
vectorResult = vector1 + vector2;
```

```
' Adds a Vector to a Vector using the overloaded + operator.
Dim vector1 As New Vector(20, 30)
Dim vector2 As New Vector(45, 70)
Dim vectorResult As New Vector()
' vectorResult is equal to (65,100)
vectorResult = vector1 + vector2
```

## Remarks

A Point represents a fixed position, but a Vector represents a direction and a magnitude (for example, velocity or acceleration). Thus, the endpoints of a line segment are points but their difference is a vector; that is, the direction and length of that line segment.

In XAML, the delimiter between the X and Y values of a Vector can be either a comma or a space.

Some cultures might use the comma character as the decimal delimiter instead of the period character. XAML processing for invariant culture defaults to en-US in most XAML processor implementations, and expects the period to be the decimal delimiter. You should avoid using the comma character as the decimal delimiter if specifying a Vector in XAML, because that will clash with the string type conversion of a Vector attribute value into the X and Y components.

### XAML Attribute Usage

```
<object property="x,y"/>
-or-
<object property="x y"/>
```

### XAML Values

*x*

The vector's X component. For more information, see the X property.

*y*

The vector's Y component. For more information, see the Y property.

## Constructors

Vector(Double, Double) |
Initializes a new instance of the Vector structure. |

## Properties

Length |
Gets the length of this vector. |

LengthSquared |
Gets the square of the length of this vector. |

X |
Gets or sets the X component of this vector. |

Y |
Gets or sets the Y component of this vector. |

## Methods

Add(Vector, Point) |
Translates the specified point by the specified vector and returns the resulting point. |

Add(Vector, Vector) |
Adds two vectors and returns the result as a Vector structure. |

AngleBetween(Vector, Vector) |
Retrieves the angle, expressed in degrees, between the two specified vectors. |

CrossProduct(Vector, Vector) |
Calculates the cross product of two vectors. |

Determinant(Vector, Vector) |
Calculates the determinant of two vectors. |

Divide(Vector, Double) |
Divides the specified vector by the specified scalar and returns the result as a Vector. |

Equals(Object) |
Determines whether the specified Object is a Vector structure and, if it is, whether it has the same X and Y values as this vector. |

Equals(Vector) |
Compares two vectors for equality. |

Equals(Vector, Vector) |
Compares the two specified vectors for equality. |

GetHashCode() |
Returns the hash code for this vector. |

Multiply(Double, Vector) |
Multiplies the specified scalar by the specified vector and returns the resulting Vector. |

Multiply(Vector, Double) |
Multiplies the specified vector by the specified scalar and returns the resulting Vector. |

Multiply(Vector, Matrix) |
Transforms the coordinate space of the specified vector using the specified Matrix. |

Multiply(Vector, Vector) |
Calculates the dot product of the two specified vectors and returns the result as a Double. |

Negate() |
Negates this vector. The vector has the same magnitude as before, but its direction is now opposite. |

Normalize() |
Normalizes this vector. |

Parse(String) |
Converts a string representation of a vector into the equivalent Vector structure. |

Subtract(Vector, Vector) |
Subtracts the specified vector from another specified vector. |

ToString() |
Returns the string representation of this Vector structure. |

ToString(IFormatProvider) |
Returns the string representation of this Vector structure with the specified formatting information. |

## Operators

Addition(Vector, Point) |
Translates a point by the specified vector and returns the resulting point. |

Addition(Vector, Vector) |
Adds two vectors and returns the result as a vector. |

Division(Vector, Double) |
Divides the specified vector by the specified scalar and returns the resulting vector. |

Equality(Vector, Vector) |
Compares two vectors for equality. |

Explicit(Vector to Point) | |

Explicit(Vector to Size) |
Creates a Size from the offsets of this vector. |

Inequality(Vector, Vector) |
Compares two vectors for inequality. |

Multiply(Double, Vector) |
Multiplies the specified scalar by the specified vector and returns the resulting vector. |

Multiply(Vector, Double) |
Multiplies the specified vector by the specified scalar and returns the resulting vector. |

Multiply(Vector, Matrix) |
Transforms the coordinate space of the specified vector using the specified Matrix. |

Multiply(Vector, Vector) |
Calculates the dot product of the two specified vector structures and returns the result as a Double. |

Subtraction(Vector, Vector) |
Subtracts one specified vector from another. |

UnaryNegation(Vector) |
Negates the specified vector. |

## Explicit Interface Implementations

IFormattable.ToString(String, IFormatProvider) |
This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code. For a description of this member, see ToString(String, IFormatProvider). |