Re: Cubic Bezier Curves Intersection
- To: mathgroup at smc.vnet.net
- Subject: [mg132088] Re: Cubic Bezier Curves Intersection
- From: "E. Martin-Serrano" <eMartinSerrano at telefonica.net>
- Date: Mon, 2 Dec 2013 02:00:02 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20131129084954.6B8E46A1D@smc.vnet.net> <20131130072525.202F86A27@smc.vnet.net>
Hi Bob, With the following minor additions your construct works smoothly in a dynamic context; by dragging the control points {pts1, pts2} as locators, the Bezier curves get reshaped and move synchronically with the intersection point *xip* xip = Quiet@ NMinimize[{Norm[f1[x1] - f2[x2]], 0 <= x1 <= 1, 0 <= x2 <= 1}, {x1, x2}, Method -> "RandomSearch", AccuracyGoal -> 8, WorkingPrecision -> 8][[2]]; Thank you. E. Martin-Serrano -----Mensaje original----- De: Bob Hanlon [mailto:hanlonr357 at gmail.com] Enviado el: s=E1bado, 30 de noviembre de 2013 8:25 Para: mathgroup at smc.vnet.net Asunto: Re: Cubic Bezier Curves Intersection pts1 = {{0, 0}, {1, 1}, {2, 0}, {3, 2}}; pts2 = {{1, 1}, {0, 0}, {3, 2}, {2, 0}}; Clear[f1, f2] f1[x_] := BezierFunction[pts1][x]; f2[x_] := BezierFunction[pts2][x]; xip = NMinimize[{ Norm[f1[x1] - f2[x2]], 0 <= x1 <= 1, 0 <= x2 <= 1}, {x1, x2}][[2]] {x1 -> 0.700846, x2 -> 0.735816} f1[x1] /. xip {2.10254, 0.876654} f2[x2] /. xip {2.10254, 0.876654} Show[ Graphics[ {Green, AbsolutePointSize[4], Point[pts1], Darker[Red], Point[f1[x1] /. xip]}, Frame -> True], ParametricPlot[ {f1[x], f2[x]}, {x, 0, 1}]] Bob Hanlon On Fri, Nov 29, 2013 at 3:49 AM, E. Martin-Serrano < eMartinSerrano at telefonica.net> wrote: > Hi, > > I would appreciate a piece of Mathematica code implementing Cubic > Bezier Curves Intersection. > > Any help either on the forum or a notebook sent to the my e-mail > address will be welcome. > > Regards. > > E. Martin-Serrano > > > >