[Numpy-discussion] Creating parallel curves

Charles R Harris charlesr.harris at gmail.com
Sun Feb 12 15:27:23 EST 2012


On Sun, Feb 12, 2012 at 1:21 PM, Andrea Gavana <andrea.gavana at gmail.com>wrote:

> Jonathan,
>
> On 12 February 2012 20:53, Jonathan Hilmer wrote:
> > Andrea,
> >
> > Here is how to do it with splines.  I would be more standard to return
> > an array of normals, rather than two arrays of x and y components, but
> > it actually requires less housekeeping this way.  As an aside, I would
> > prefer to work with rotations via matrices, but it looks like there's
> > no support for that built in to Numpy or Scipy?
> >
> >        def normal_vectors(x, y, scalar=1.0):
> >                tck = scipy.interpolate.splrep(x, y)
> >
> >                y_deriv = scipy.interpolate.splev(x, tck, der=1)
> >
> >                normals_rad = np.arctan(y_deriv)+np.pi/2.
> >
> >                return np.cos(normals_rad)*scalar,
> np.sin(normals_rad)*scalar
>
>
> Thank you for this, I'll give it a go in a few minutes (hopefully I
> will also be able to correctly understand what you did). One thing
> though, at first glance, it appears to me that your approach is very
> similar to mine (meaning it will give "parallel" curves that cross
> themselves as in the example I posted). But maybe I am wrong, my
> apologies if I missed something.
>
> Thank you so much for your answer.
>
>
Crossing curves is the correct behavior for this method, think propagating
wavefronts and the appearance of light on the bottom of a swimming pool
when there are ripples on the surface. I think you need to define what you
really want from 'parallel'.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20120212/ec05a916/attachment.html>


More information about the NumPy-Discussion mailing list