Tags: article, curves, gmxnospam, higor, intersection, itgt, ltpan, matlab, point, programming, todaysummary, wrotegt

find intersection point between two curves

On Programmer » Matlab

5,372 words with 4 Comments; publish: Fri, 09 May 2008 23:57:00 GMT; (20062.50, « »)

In article <pan.2006.10.02.10.25.50.736681.matlab.todaysummary.com.gmxNOSPAM.it>,

higor.matlab.todaysummary.com.gmxNOSPAM.it wrote:

> Hi,

> i have 2 curves (in polar coordinates), the first is:

> thea=-rho*k+q

> where k and q are constant

> and the second is in parametric form:

> t=[pi/2:3/2*pi]

> rho=n/pi*cos(t).*t

> theta=-pi+3/4*sin(t).*sin(t/2).^12

> i put this on a system substituting rho of the second equation in the

> first and then theta of the second in the first so i have an equation in t

> like this:

> -n/pi*cos(t)*t*k+q+pi-3/4*sin(t)*sin(t/2)^12=0

> i created a Anonymous Function in this way:

> myfunc=.matlab.todaysummary.com.(t)(-n/pi*cos(t)*t*k+q+pi-3/4*sin(t)*sin(t/2)^12)

> and solved it with

> fzero(myfunc,temp)

> with temp between pi/2 and 3/2*pi but the value returned by fzero bigger

> then times 2*pi, and if i substitute the returned value on

> rho=n/pi*cos(t).*t i got a rho that don't match with the function plotted.

> Any ideas?

> Tanks

> Igor

--

Just entering a single scalar 'temp' which lies between pi/2 and 3/2*pi

doesn't guarantee that 'fzero' will only search there. To do that, you

must enter a two-element vector for 'temp' as [pi/2,3/2*pi].

Even so, based my observation of the plot of your parametric curve and

depending on the values of 'n', 'k', and 'q', 'fzero' could find any one

of up to four solutions or none at all for your equation. You might not

get the one you want.

Note that whatever solution you get will have a negative value for 'rho'

if 'n' is positive because cos(t) is negative in your range of 't'.

Roger Stafford

All Comments

Leave a comment...

  • 4 Comments
    • On Mon, 02 Oct 2006 19:44:39 +0000, Roger Stafford wrote:

      > In article <pan.2006.10.02.10.25.50.736681.matlab.todaysummary.com.gmxNOSPAM.it>,

      > higor.matlab.todaysummary.com.gmxNOSPAM.it wrote:

      >

      > --

      > Just entering a single scalar 'temp' which lies between pi/2 and 3/2*pi

      > doesn't guarantee that 'fzero' will only search there. To do that, you

      > must enter a two-element vector for 'temp' as [pi/2,3/2*pi].

      > Even so, based my observation of the plot of your parametric curve and

      > depending on the values of 'n', 'k', and 'q', 'fzero' could find any one

      > of up to four solutions or none at all for your equation. You might not

      > get the one you want.

      > Note that whatever solution you get will have a negative value for 'rho'

      > if 'n' is positive because cos(t) is negative in your range of 't'.

      > Roger Stafford

      Tanks for the reply,

      i also tried with [pi/2,3/2*pi] but i got this error:

      fzero(myfunc,[pi/2,3/2*pi])

      ? Error using ==> fzero

      The function values at the interval endpoints must differ in sign.

      the value for 'k', 'q' and 'n' that i used are:

      k=w/vm (where w=2.7*10^-6 and vs=5*10^-4)

      q=pi/4

      n=150

      so resulting function are:

      myfunc=.matlab.todaysummary.com.(t)(-n/pi*cos(t)*t*w/vm+pi/4+pi-3/4*sin(t)*sin(t/2)^12);

      i know that it can give me 0 ore more solution for 't', i want all 't'

      where it is between pi/2 and 3/2*pi. there are another way to do this?

      Tanks

      Igor

      #1; Fri, 09 May 2008 23:58:00 GMT
    • On Tue, 03 Oct 2006 10:12:24 +0200, higor wrote:

      > On Mon, 02 Oct 2006 19:44:39 +0000, Roger Stafford wrote:

      >

      > Tanks for the reply,

      > i also tried with [pi/2,3/2*pi] but i got this error:

      > fzero(myfunc,[pi/2,3/2*pi])

      > ? Error using ==> fzero

      > The function values at the interval endpoints must differ in sign.

      > the value for 'k', 'q' and 'n' that i used are:

      > k=w/vm (where w=2.7*10^-6 and vs=5*10^-4)

      > q=pi/4

      > n=150

      > so resulting function are:

      > myfunc=.matlab.todaysummary.com.(t)(-n/pi*cos(t)*t*w/vm+pi/4+pi-3/4*sin(t)*sin(t/2)^12);

      > i know that it can give me 0 ore more solution for 't', i want all 't'

      > where it is between pi/2 and 3/2*pi. there are another way to do this?

      > Tanks

      > Igor

      Hum... i tried to plot this function with ezplot and it result always

      positive and never equal to zero... i think there are something wrong...

      #2; Fri, 09 May 2008 23:59:00 GMT
    • On Tue, 03 Oct 2006 05:01:50 -0400, mut ante wrote:

      > take a look at

      > <http://www.geometrictools.com/Documentation.html>

      > maybe you find your answer

      I found the mismatch, it was in the curve definition, now there are:

      thea=-rho*k+q

      t=[pi/2:3/2*pi]

      rho=-n/pi*cos(t).*t

      theta=3/4*sin(t).*sin(t/2).^12

      so the intersection result:

      myfunc=.matlab.todaysummary.com.(t)(n/pi*cos(t)*t*w/vm+pi/8-3/4*sin(t)*sin(t/2)^12)

      and the fzero seams to find the right 't'.

      Tnaks .matlab.todaysummary.com. all

      Igor

      #4; Sat, 10 May 2008 00:01:00 GMT