Is there a Vector3 type in Python?

Question:

I quickly checked numPy but it looks like it’s using arrays as vectors? I am looking for a proper Vector3 type that I can instance and work on.

Asked By: Joan Venge

||

Answers:

I don’t believe there is anything standard (but I could be wrong, I don’t keep up with python that closely).

It’s very easy to implement though, and you may want to build on top of the numpy array as a container for it anyway, which gives you lots of good (and efficient) bits and pieces.

Answered By: simon

ScientificPython has a Vector class. for example:

In [1]: from Scientific.Geometry import Vector
In [2]: v1 = Vector(1, 2, 3)
In [3]: v2 = Vector(0, 8, 2)               
In [4]: v1.cross(v2)
Out[4]: Vector(-20.000000,-2.000000,8.000000)
In [5]: v1.normal()
Out[5]: Vector(0.267261,0.534522,0.801784)
In [6]: v2.cross(v1)
Out[6]: Vector(20.000000,2.000000,-8.000000)
In [7]: v1*v2 # dot product
Out[7]: 22.0
Answered By: Autoplectic

I know the above answer was already accepted. However, if someone already has numpy installed, you can use the array class like so. It overloads the arithmetic operators allowing calculations across all values of the array sort of like a Vector.

from numpy import array

vector3a = array([1,2,3])
vector3b = array([3,2,1])
print(vector3a + vector3b)
>>> array([4, 4, 4])
Answered By: Jake Morfe
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.