In [1]:
import geomalgo as ga
%load_ext Cython
%load_ext wurlitzer
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u
    
u.x = 1
u.y = 2

printf('u: (%.1f, %.1f)\n', u.x, u.y)


u: (1.0, 2.0)

In [5]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D* u
    
u = ga.new_vector2d()

u.x = 1
u.y = 2

printf('u: (%.1f, %.1f)\n', u.x, u.y)

ga.del_vector2d(u)


u: (1.0, 2.0)

In [6]:
u = ga.Vector2D(1, 2)
print(u)


<Vector2D(1.0,2.0>

In [8]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.Vector2D u
    ga.CVector2D* ptr
    
u = ga.Vector2D(1, 2)

ptr = u.cvector2d
printf("(%.1f, %.1f)\n", ptr.x, ptr.y)


(1.0, 2.0)

In [9]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u
    
u.x, u.y = 1, 2
printf("u: (%.1f, %.1f)\n", u.x, u.y)
    
u.x, u.y = 4, -5
printf("u: (%.1f, %.1f)\n", u.x, u.y)


u: (1.0, 2.0)
u: (4.0, -5.0)

In [10]:
u = ga.Vector2D(1, 2)
print(u)

u.x, u.y = 4, -5
print(u)


<Vector2D(1.0,2.0>
<Vector2D(4.0,-5.0>

In [16]:
AB = ga.Vector2D(0, 1)
BC = ga.Vector2D(1, 1)

AC = AB + BC
print(AC)


<Vector2D(1.0,2.0>

In [18]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D AB, BC, AC
    
AB.x, AB.y = 0, 1
BC.x, BC.y = 1, 1

ga.add_vector2d(&AC, &AB, &BC)
printf("(%.1f, %.1f)\n", AC.x, AC.y)


(1.0, 2.0)

In [21]:
AC = ga.Vector2D(1, 2)
BC = ga.Vector2D(1, 1)

AB = AC - BC
print(AB)


<Vector2D(0.0,1.0>

In [22]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D AB, BC, AC
    
AC.x, AC.y = 1, 2
BC.x, BC.y = 1, 1

ga.subtract_vector2d(&AB, &AC, &BC)
printf("(%.1f, %.1f)\n", AB.x, AB.y)


(0.0, 1.0)

In [24]:
u = ga.Vector2D(1, 2)
t = u*2
print(t)


<Vector2D(2.0,4.0>

In [26]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u, t
    
u.x, u.y = 1, 2
ga.vector2d_times_scalar(&t, 2., &u)
printf("(%.1f, %.1f)", t.x, t.y)


(2.0, 4.0)

In [29]:
u = ga.Vector2D(1, 2)
v = ga.Vector2D(3, 4)
u.dot(v)


Out[29]:
11.0

In [32]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u, v
    
u.x, u.y = 1, 2
v.x, v.y = 3, 4

printf("%.1f\n", ga.dot_product2d(&u, &v))


11.0

In [33]:
u = ga.Vector2D(1, 2)
v = ga.Vector2D(3, 4)
u^v


Out[33]:
-2.0

In [34]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u, v
    
u.x, u.y = 1, 2
v.x, v.y = 3, 4

printf("%.1f\n", ga.cross_product2d(&u, &v))


-2.0

In [11]:
u = ga.Vector2D(3, 4)
u.norm


Out[11]:
5.0

In [13]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u
    
u.x, u.y = 3, 4
printf("%.1f\n", ga.compute_norm2d(&u))


5.0

In [14]:
u = ga.Vector2D(3, 4)
u.normalize()
print(u)
print(u.norm)


<Vector2D(0.6,0.8>
1.0

In [15]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u
    
u.x, u.y = 3, 4
ga.normalize_vector2d(&u)
printf("(%.1f, %.1f)\n", u.x, u.y)
printf("%.1f\n", ga.compute_norm2d(&u))


(0.6, 0.8)
1.0

In [42]:
u = ga.Vector2D(0, 1)
print(u.normal)


<Vector2D(1.0,-0.0>

In [48]:
%%cython

from libc.stdio cimport printf
cimport geomalgo as ga

cdef:
    ga.CVector2D u, n
    double norm
    
u.x, u.y = 0, 1
    
norm = ga.compute_norm2d(&u)
ga.compute_normal2d(&n, &u, norm)
printf("(%.1f, %.1f)\n", n.x, n.y)


(1.0, -0.0)

In [ ]: