# Difference between revisions of "FreeCAD vector math library/tr"

Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎română • ‎svenska • ‎čeština • ‎русский

## Introduction

This is a Python module containing a couple of useful functions to manipulate vectors. This library is included in the Draft_Workbench and can be accessed like this from the Python interpreter:

```import DraftVecUtils
```

Please note that this module was created a long time ago, when the `Vector` class didn't have many of its methods. Now these operations can be done by the Vector class itself.

Although the `DraftVecUtils` module still exists, and it is still used inside the Draft Workbench, it is probably better to use the `Vector` methods directly for new developments.

## Functions

Vectors are the building bricks of almost all 3D geometric operations, so it is useful to know a bit about them to understand how these functions can be useful to you. A couple of good pages to learn the basics of vector math:

```"""Vector math library for FreeCAD"""

import math

def sub(first, other):
"""sub(Vector,Vector) - subtracts second vector from first one"""

def scale(first,scalar):
"""scale(Vector,Float) - scales (multiplies) a vector by a factor"""

def length(first):
"""lengh(Vector) - gives vector length"""
return math.sqrt(first.x*first.x + first.y*first.y + first.z*first.z)

def dist(first, other):
"""dist(Vector,Vector) - returns the distance between both points/vectors"""
return length(sub(first,other))

def normalized(first):
"""normalized(Vector) - returns a unit vector"""
l=length(first)

def dotproduct(first, other):
"""dotproduct(Vector,Vector) - returns the dot product of both vectors"""
return (first.x*other.x + first.y*other.y + first.z*other.z)

"""crossproduct(Vector,Vector) - returns the cross product of both vectors.
If only one is specified, cross product is made with vertical axis, thus returning its perpendicular in XY plane"""