Change variable names and split allocation
parent
fc79f5e9df
commit
14a62efb9a
|
@ -28,7 +28,7 @@ def pygjk(bod1, bod2):
|
||||||
simplex s
|
simplex s
|
||||||
bd bd1
|
bd bd1
|
||||||
bd bd2
|
bd bd2
|
||||||
double answer
|
double dist2
|
||||||
|
|
||||||
# Convert 1D array to 2D, if any
|
# Convert 1D array to 2D, if any
|
||||||
if bod1.ndim < 2:
|
if bod1.ndim < 2:
|
||||||
|
@ -45,14 +45,22 @@ def pygjk(bod1, bod2):
|
||||||
bd2.numpoints = np.size(bod2,0)
|
bd2.numpoints = np.size(bod2,0)
|
||||||
|
|
||||||
|
|
||||||
# Allocate memory for pointer (not working)
|
# Allocate memory for bodies
|
||||||
bd1.coord = <double **> malloc(bd1.numpoints * sizeof(double *))
|
bd1.coord = <double **> malloc(bd1.numpoints * sizeof(double *))
|
||||||
if not bd1.coord:
|
if not bd1.coord:
|
||||||
raise NameError('Not enough memory for bd1.coord')
|
raise NameError('Not enough memory for bd1.coord')
|
||||||
|
for i in range(0, bd1.numpoints):
|
||||||
|
bd1.coord[i] = <double *> malloc(3 * sizeof(double))
|
||||||
|
if not bd1.coord[i]:
|
||||||
|
raise NameError('Not enough memory for bd1.coord[]')
|
||||||
|
|
||||||
bd2.coord = <double **> malloc(bd2.numpoints * sizeof(double *))
|
bd2.coord = <double **> malloc(bd2.numpoints * sizeof(double *))
|
||||||
if not bd2.coord:
|
if not bd2.coord:
|
||||||
raise NameError('Not enough memory for bd2.coord')
|
raise NameError('Not enough memory for bd2.coord')
|
||||||
|
for j in range(0, bd2.numpoints):
|
||||||
|
bd2.coord[j] = <double *> malloc(3 * sizeof(double))
|
||||||
|
if not bd2.coord[j]:
|
||||||
|
raise NameError('Not enough memory for bd2.coord[]')
|
||||||
|
|
||||||
# Create numpy-array MemoryView
|
# Create numpy-array MemoryView
|
||||||
cdef:
|
cdef:
|
||||||
|
@ -61,25 +69,15 @@ def pygjk(bod1, bod2):
|
||||||
|
|
||||||
# Assign coordinate values
|
# Assign coordinate values
|
||||||
for i in range(0, bd1.numpoints):
|
for i in range(0, bd1.numpoints):
|
||||||
bd1.coord[i] = <double *> malloc(3 * sizeof(double))
|
for j in range(0,3):
|
||||||
if not bd1.coord[i]:
|
bd1.coord[i][j] = narr1[i,j]
|
||||||
raise NameError('Not enough memory for bd1.coord[]')
|
|
||||||
bd1.coord[i][0] = narr1[i,0]
|
|
||||||
bd1.coord[i][1] = narr1[i,1]
|
|
||||||
bd1.coord[i][2] = narr1[i,2]
|
|
||||||
|
|
||||||
|
|
||||||
for j in range(0, bd2.numpoints):
|
|
||||||
bd2.coord[j] = <double *> malloc(3 * sizeof(double))
|
|
||||||
if not bd2.coord[j]:
|
|
||||||
raise NameError('Not enough memory for bd2.coord[]')
|
|
||||||
bd2.coord[j][0] = narr2[j,0]
|
|
||||||
bd2.coord[j][1] = narr2[j,1]
|
|
||||||
bd2.coord[j][2] = narr2[j,2]
|
|
||||||
|
|
||||||
|
for i in range(0, bd2.numpoints):
|
||||||
|
for j in range(0,3):
|
||||||
|
bd2.coord[i][j] = narr2[i,j]
|
||||||
|
|
||||||
# Call C function
|
# Call C function
|
||||||
answer = gjk(bd1, bd2, &s)
|
dist2 = gjk(bd1, bd2, &s)
|
||||||
|
|
||||||
# Free the memory
|
# Free the memory
|
||||||
for ii in range(0, bd1.numpoints):
|
for ii in range(0, bd1.numpoints):
|
||||||
|
@ -90,6 +88,5 @@ def pygjk(bod1, bod2):
|
||||||
free(bd2.coord[jj])
|
free(bd2.coord[jj])
|
||||||
free(bd2.coord)
|
free(bd2.coord)
|
||||||
|
|
||||||
|
return dist2
|
||||||
return answer
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue