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
>
>
>
>