Vectors

A

Algis Kabaila

Hi,

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?

platform - ubuntu 10.10 (Linux), Python 3.1 or higher.

Thanks for your help to avoid re-invention of the wheel.

OldAl.
 
A

Anssi Saari

Algis Kabaila said:
Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?

NumPy has array (and matrix) types with support for these basic
operations you mention. See the tutorial at http://numpy.scipy.org/
 
R

RJB

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?
NumPy has array (and matrix) types with support for these basic
operations you mention. See the tutorial athttp://numpy.scipy.org/

You might also want to considerhttp://code.google.com/p/pyeuclid/

Cheers,

Drea

Pyeuclid docs don't mention dot or cross products.
RJB
 
A

Andreas Tawn

Algis Kabaila <[email protected]> writes:
Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?
NumPy has array (and matrix) types with support for these basic
operations you mention. See the tutorial athttp://numpy.scipy.org/

You might also want to considerhttp://code.google.com/p/pyeuclid/

Cheers,

Drea

Pyeuclid docs don't mention dot or cross products.
RJB

http://partiallydisassembled.net/euclid/vector-classes.html#SECTION002220000000000000000

Bottom of the page.

Cheers,

Drea
 
A

Algis Kabaila

Are there any modules for vector algebra (three
dimensional vectors, vector addition, subtraction,
multiplication [scalar and vector]. Could you give
me a reference to such module?

NumPy has array (and matrix) types with support for
these basic operations you mention. See the tutorial
athttp://numpy.scipy.org/

You might also want to
considerhttp://code.google.com/p/pyeuclid/

Cheers,

Drea

Pyeuclid docs don't mention dot or cross products.
RJB

http://partiallydisassembled.net/euclid/vector-classes.html#S
ECTION002220000000000000000

Bottom of the page.

Cheers,

Drea

Yes, pyeuclid had "cross" and "dot" product of vectors. I am
impressed with it and curious how it works: the Vector3 class
is available without any prefix euclid:

import euclid
v = Vector3(111.., 222.2, 333.3)

works without requiring as in:
v = euclid.Vector3( etc...)

I am really intrigued by that. OTOH, I also am somewhat
aprehensive about using something that affects the program
writing after importing "euclid", without any need to explicitly
refer to euclid. Looks rather risky to me. What does that do
to the namespace?

Thanks for bringing this to my attention. I confess that I
would be hapier if euclid was accessible in a "standard" manner
with prefix of module name for classes in the module.

OldAl.
 
G

Gregory Ewing

Algis said:
the Vector3 class
is available without any prefix euclid:

import euclid
v = Vector3(111.., 222.2, 333.3)

Doesn't work that way for me:

Python 2.7 (r27:82500, Oct 15 2010, 21:14:33)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Vector3' is not defined

Are you sure you hadn't previously done 'from euclid import
Vector3' or 'from euclid import *' in that session?
 
A

Algis Kabaila

Algis said:
the Vector3 class
is available without any prefix euclid:

import euclid
v = Vector3(111.., 222.2, 333.3)

Doesn't work that way for me:

Python 2.7 (r27:82500, Oct 15 2010, 21:14:33)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more
information.

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Vector3' is not defined

Are you sure you hadn't previously done 'from euclid import
Vector3' or 'from euclid import *' in that session?

I've tested it again and it does behave in a "standard" manner.
I must have imported all as you suspected. Makes me much
happier, though I do feel sheepish. As they say, sh... happens.

BTW, I did modify the euclid very slightly to work with Python 3
- just change the syntax of messages with exception in line with
syntax changes.

Thanks for sharing your experience with that cute package!

OldAl.
 
S

sturlamolden

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?

NumPy

Or one of these libraries (ctypes or Cython):

BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
Intel VML
ACML-VM
 
A

Algis Kabaila

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication
[scalar and vector]. Could you give me a reference to such
module?

NumPy

Or one of these libraries (ctypes or Cython):

BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
Intel VML
ACML-VM

Thanks for that. Last time I looked at numpy (for Python3) it
was available in source only. I know, real men do compile, but
I am an old man... I will compile if it is unavoidable, but in
case of numpy it does not seem a simple matter. Am I badly
mistaken?

euclid has another attraction - the source is readily available,
not too burdened by backward compatibility issues and relatively
easy to follow, though I "managed" to get lost in it :)

OldAl.
 
S

sturlamolden

Thanks for that.  Last time I looked at numpy (for Python3) it
was available in source only.  I know, real men do compile, but
I am an old man...  I will compile if it is unavoidable, but in
case of numpy it does not seem  a simple matter. Am I badly
mistaken?


There is a Win32 binary for Python 3.1:

http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/

I have not tried to compile NumPy as I use Enthought to
avoid such headaches. I value my own time enough to pay
for a subscription ;-)

http://enthought.com/



Sturla
 
A

Algis Kabaila

There is a Win32 binary for Python 3.1:

http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/

I have not tried to compile NumPy as I use Enthought to
avoid such headaches. I value my own time enough to pay
for a subscription ;-)

http://enthought.com/



Sturla

Whilst I have Win32 officially paid for OS, never "fire it up".
I find nix systems much more interesting and convenient for
programming and consequently I use ubuntu for computing
activities. I do understand that many people prefer Win32 and
appreciate their right to use what they want. I just am at a
loss to understand *why* ...

I guess each to own taste,

OldAl.
 
S

sturlamolden

I do understand that many people prefer Win32 and
appreciate their right to use what they want.  I just am at a
loss to understand *why* ...

For the same reason some people prefered OS/2 or
DEC to SunOS or BSD.

For the same reason some people prefer Perl or Java
to Python.

Sturla
 
R

Robert Kern

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication
[scalar and vector]. Could you give me a reference to such
module?

NumPy

Or one of these libraries (ctypes or Cython):

BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
Intel VML
ACML-VM

Thanks for that. Last time I looked at numpy (for Python3) it
was available in source only. I know, real men do compile, but
I am an old man... I will compile if it is unavoidable, but in
case of numpy it does not seem a simple matter. Am I badly
mistaken?

On UNIX machines with compilers and headers properly installed, it's really
pretty straightforward.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
 
R

rusi

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication
[scalar and vector]. Could you give me a reference to such
module?
NumPy
Or one of these libraries (ctypes or Cython):
BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
Intel VML
ACML-VM
Thanks for that.  Last time I looked at numpy (for Python3) it
was available in source only.  I know, real men do compile, but
I am an old man...  I will compile if it is unavoidable, but in
case of numpy it does not seem  a simple matter. Am I badly
mistaken?

On UNIX machines with compilers and headers properly installed, it's really
pretty straightforward.

Mostly (on ubuntu/debian) that means do this [Untested]
$ aptitude build-dep python-numpy
Then you should be ready to build/compile numpy from source
 
A

Algis Kabaila

47 am, Algis Kabaila<[email protected]>

wrote:
Are there any modules for vector algebra (three
dimensional vectors, vector addition, subtraction,
multiplication [scalar and vector]. Could you give me
a reference to such module?

NumPy

Or one of these libraries (ctypes or Cython):

BLAS (Intel MKL, ACML, ACML-GPU, GotoBLAS2, or ATLAS)
Intel VML
ACML-VM

Thanks for that. Last time I looked at numpy (for
Python3) it was available in source only. I know, real
men do compile, but I am an old man... I will compile
if it is unavoidable, but in case of numpy it does not
seem a simple matter. Am I badly mistaken?

On UNIX machines with compilers and headers properly
installed, it's really pretty straightforward.

Mostly (on ubuntu/debian) that means do this [Untested]
$ aptitude build-dep python-numpy
Then you should be ready to build/compile numpy from source

Thank you, Robert and Rusi,

I will try it RSN, but first the latest version of ubuntu that
should become available this week (including today?!).

OldAl.
 
J

Jonathan Hartley

Are there any modules for vector algebra (three dimensional
vectors, vector addition, subtraction, multiplication [scalar
and vector]. Could you give me a reference to such module?
NumPy has array (and matrix) types with support for these basic
operations you mention. See the tutorial athttp://numpy.scipy.org/

You might also want to considerhttp://code.google.com/p/pyeuclid/

Cheers,

Drea


Stealing this from Casey Duncan's recent post to the Grease users
list:


- (ab)use complex numbers for 2D vectors (only). Very fast arithmetic
and built-in to Python. Downside is lack of abstraction.

- Use pyeuclid (pure python) if ultimate speed isn't an issue, or if
compiled extensions are. It supports 3D and has a nice api

- vectypes is a more recent project from the same author as pyeuclid.
It offers a more consistent 'GLSL' like interface, including
swizzling, and internally seems to have more maintainable code because
it generates various sizes of vector and matrix from a single
template. This is done without performance penalty because the
generation is done at design time, not runtime.

- Use pyeigen if you want fast vectors, and don't mind compiling some
C/C++. I don't know how the Python api looks though

- Use numpy if you want fast batch operations
 
A

Algis Kabaila

Are there any modules for vector algebra (three
dimensional vectors, vector addition, subtraction,
multiplication [scalar and vector]. Could you give me
a reference to such module?

NumPy has array (and matrix) types with support for these
basic operations you mention. See the tutorial
athttp://numpy.scipy.org/

You might also want to
considerhttp://code.google.com/p/pyeuclid/

Cheers,

Drea

Stealing this from Casey Duncan's recent post to the Grease
users list:


- (ab)use complex numbers for 2D vectors (only). Very fast
arithmetic and built-in to Python. Downside is lack of
abstraction.

- Use pyeuclid (pure python) if ultimate speed isn't an
issue, or if compiled extensions are. It supports 3D and has
a nice api

- vectypes is a more recent project from the same author as
pyeuclid. It offers a more consistent 'GLSL' like interface,
including swizzling, and internally seems to have more
maintainable code because it generates various sizes of
vector and matrix from a single template. This is done
without performance penalty because the generation is done
at design time, not runtime.

- Use pyeigen if you want fast vectors, and don't mind
compiling some C/C++. I don't know how the Python api looks
though

- Use numpy if you want fast batch operations
Jonathan,

Thank you for a nice and extensive list of references. To
clarify my position - surprisingly, speed is not an issue- I've
programmed a matrix in pure python (3, but mainly iwth python 2
syntax) and found that inversion was quite fast enough for my
requirements.

Good vector algebra is necessary for 3 D frame analysis, so a
vector package is indicated. numpy is great, but it is a tool
like a sledge to drive a nail...

OldAl.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top