[SciPy-user] scipy.odeint question
Jelle Feringa / EZCT Architecture & Design Research
jelle.feringa at ezct.net
Fri Aug 18 10:24:47 CDT 2006
I have a question on how/if I could use scipy.odeint for the following; I
have a function that approximates a given distance on a nurbs curve. The
algorithm is rather crude, so I'd like to generalize and make it more
efficient. Scipy.odeint could be a suitable function to do so, but I'm
having a hard time implementing it.
The function I'd like to integrate with scip.odeint is the following:
while 1:
print 'approxLengthPLUS',approxLength
if abs(distance-approxLength) < tolerance:
break
if approxLength < distance:
tangent = vec3(RS.PointCoordinates(pointIdPLUS)) +
vec3(crv.tangent(pointIdPLUS)[2]).normalize() * (1.5*vectorScale)
closestPointIdPLUS = crv.closestPoint(tangent)
closestCoord = crv.evaluateCrv(closestPointIdPLUS)
RS.PointCoordinates(pointIdPLUS, closestCoord)
else :
tangent = vec3(RS.PointCoordinates(pointIdPLUS)) +
vec3(crv.tangent(pointIdMIN)[2]).normalize() * (-0.75*vectorScale)
closestPointIdPLUS = crv.closestPoint(tangent)
closestCoord = crv.evaluateCrv(closestPointIdPLUS)
RS.PointCoordinates(pointIdPLUS, closestCoord)
n+=1
approxLength = crv.length(subDomain=[crvParameter,
closestPointIdPLUS])
vectorScale = approxLength*(tolerance/n)
Which basically scans a nurbs curve back & forth until a point is located
within the tolerance.
The method crv.closestPoint(tangent) returns the closest parameter of the
current point
The method crv.length(subDomain=[crvParameter, closestPointIdPLUS]) returns
the distance from the starting point, to the point currently evaluated. Any
pointers in how I could integrate such a function with scipy are greatly
appreciated!
Cheers,
-jelle
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/scipy-user/attachments/20060818/fae2f2ea/attachment.html
More information about the SciPy-user
mailing list