Re: Elasticity functions for Bezier and rectangular forms
- To: mathgroup at smc.vnet.net
- Subject: [mg132177] Re: Elasticity functions for Bezier and rectangular forms
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Fri, 10 Jan 2014 02:48:32 -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: <20140109065010.D66676A08@smc.vnet.net>
pts = {p[0], p[1], p[2], p[3]} =
Rationalize[{{0, .65}, {1.8, 2.6}, {4, 2.5}, {4, 5}}];
n = Length[pts] - 1;
bcurve = Sum[Binomial[n, k]*(1 - t)^(n - k)*t^k p[k],
{k, 0, n}] // Simplify;
Solving for solution expressed as Root objects
y1[x_] = Select[
First /@ (bcurve[[2]] /.
Solve[{x == bcurve[[1]], 0 <= x <= 4}, t]),
Chop[N[# /. x -> p[0][[1]]]] == p[0][[2]] &&
Chop[N[# /. x -> p[3][[1]]]] == p[3][[2]] &][[1]]
(1/20)*(13 + 117*Root[5*x - 27*#1 - 6*#1^2 + 13*#1^3 & ,
2] - 123*Root[5*x - 27*#1 - 6*#1^2 + 13*#1^3 & , 2]^2 +
93*Root[5*x - 27*#1 - 6*#1^2 + 13*#1^3 & , 2]^3)
Solving for solution expressed with radicals
y2[x_] = Select[(First /@ (bcurve[[2]] /.
Solve[{x == bcurve[[1]], 0 <= x <= 4}, t])) //
ToRadicals //
FullSimplify,
Chop[N[# /. x -> p[0][[1]]]] == p[0][[2]] &&
Chop[N[# /. x -> p[3][[1]]]] == p[3][[2]] &][[1]]
(1/20)*(-((465*x)/13) + (1/4394)*(-245386 +
(30482562*(-1)^(1/3)*2^(2/3))/
(718 - 845*x + 13*Sqrt[5]*Sqrt[(-4 + x)*
(1944 + 845*x)])^(2/3) +
(11676984*(-1)^(2/3)*2^(1/3))/
(718 - 845*x + 13*Sqrt[5]*Sqrt[(-4 + x)*
(1944 + 845*x)])^(1/3) - 48252*(-1)^(1/3)*2^(2/3)*
(718 - 845*x + 13*Sqrt[5]*Sqrt[(-4 + x)*
(1944 + 845*x)])^(1/3) - 1041*(-1)^(2/3)*2^(1/3)*
(718 - 845*x + 13*Sqrt[5]*Sqrt[(-4 + x)*
(1944 + 845*x)])^(2/3)))
Note that y2 is a different branch than that obtained by converting y1 to
radicals (see also plot below)
y1r[x_] = y1[x] // ToRadicals // FullSimplify
(1/20)*(-((465*x)/13) + (1/4394)*(-245386 -
(30482562*(-2)^(2/3))/(718 - 845*x +
13*Sqrt[5]*Sqrt[(-4 + x)*(1944 + 845*x)])^(2/3) -
(11676984*(-2)^(1/3))/(718 - 845*x +
13*Sqrt[5]*Sqrt[(-4 + x)*(1944 + 845*x)])^(1/3) +
48252*(-2)^(2/3)*(718 - 845*x + 13*Sqrt[5]*
Sqrt[(-4 + x)*(1944 + 845*x)])^(1/3) +
1041*(-2)^(1/3)*(718 - 845*x + 13*Sqrt[5]*
Sqrt[(-4 + x)*(1944 + 845*x)])^(2/3)))
Expressed as an interpolation function
y3 = Interpolation[Table[bcurve, {t, 0, 1, .01}]];
Note that y1r is not the proper branch:
Grid[
{{Graphics[{BezierCurve[pts], Red,
AbsolutePointSize[4], Point[pts]},
AspectRatio -> 1, Frame -> True, Axes -> False,
PlotLabel -> "Bezier Curve"],
pp = ParametricPlot[BezierFunction[pts][x],
{x, 0, 4}, AspectRatio -> 1, Frame -> True, Axes -> False,
PlotLabel -> "BezierFunction",
Epilog -> {Red, AbsolutePointSize[4], Point[pts]}],
ParametricPlot[bcurve, {t, 0, 1},
AspectRatio -> 1, Frame -> True, Axes -> False,
PlotLabel -> "bcurve",
Epilog -> {Red, AbsolutePointSize[4], Point[pts]}]},
{Plot[y1[x], {x, 0, 4}, AspectRatio -> 1,
Frame -> True, Axes -> False,
PlotLabel -> "Root Object (y1)",
Epilog -> {Red, AbsolutePointSize[4], Point[pts]}],
Plot[y2[x], {x, 0, 4}, AspectRatio -> 1,
Frame -> True, Axes -> False,
PlotLabel -> "Radicals (y2)",
Epilog -> {Red, AbsolutePointSize[4], Point[pts]}],
Plot[y3[x], {x, 0, 4}, AspectRatio -> 1,
Frame -> True, Axes -> False,
PlotLabel -> "Interpolation of bcurve (y3)",
Epilog -> {Red, AbsolutePointSize[4], Point[pts]}]},
{Plot[y1r[x], {x, 0, 4}, AspectRatio -> 1,
PlotStyle -> Red, Frame -> True, Axes -> False,
PlotLabel -> "Root converted to Radicals (y1r)"],
"", ""}}]
Bob Hanlon
On Thu, Jan 9, 2014 at 1:50 AM, E. Martin-Serrano <
eMartinSerrano at telefonica.net> wrote:
>
> Hi,
>
>
>
> (*I have the Bezier curve*)
>
>
>
> pts = {p[0], p[1], p[2], p[3]} = {{0, .65}, {1.8, 2.6}, {4, 2.5}, {4, 5}};
>
>
>
> n = Length[pts] - 1;
>
>
>
> bcurve = Sum[Binomial[n, i]* (1 - t)^(n - i) *t ^i p[i] , {i, 0, n}];
>
>
>
> (* the plot range for the resulting Bezier curve is obviously {p[0][[1]],
> p[3][[1]} -> {0,4} *)
>
>
>
> (*Then, I want to transform the above parametric Bezier curve into a
> rectangular {x,y} curve one by solving curve[[1]] x= x(t) for t and
> plugging the result t-> x(t) into curve[[2]] or y = y(t).*)
>
>
>
> sols= Solve[x == bcurve[[1]], t, Reals],
>
>
>
> bcurve[[2]]/.%
>
>
>
> yvalues = (% /. x -> #) & /@ Range[0, 4]
>
>
>
> (*For testing purposes, by visual inspection I discard directly the
> resulting yvalues which overflow the plot range interval {0,4} and select
> only those values of y which are members of the interval.*)
>
>
>
> #[[2]]&/@yvalues
>
>
>
> (*But that done, none of these selected {x,y} points belong to the actual
> Bezier curve bcurve yet.*)
>
>
>
> (*In other words the apparent direct procedure to convert a parametric
> curve
> into rectangular one does not seem to work here.*)
>
>
>
> (*Remark: I need the basic Bezier curve bcurve to be reshapable (dynamic)
> and be able to calculate the elasticity point function of each new
> resulting function as the Bezier curve bcurve gets reshaped, and for some
> reason I am not being able of getting directly the elasticity point
> function of bcurve = Sum[Binomial[n, i]* (1 - t)^(n - i) *t ^i p[i] , {i,
> 0, n}]; no problem for any other similar (or approximate) function given in
> rectangular form*) ;
>
>
>
> Any help will be welcome.
>
>
>
> E. Martin-Serrano
>
>
>
> P.S. For the sake of clarity I have enclosed the text in as in (*text*)
> and
> symbols or experssions within text as in symbol (when necessary).
>
>
>
> __________________________________________
>
> This e-mail and the documents attached are confidential and intended solely
> for the addressee; it may also be privileged. If you receive this e-mail in
> error, please notify the sender immediately and destroy it. As its
> integrity
> cannot be secured on the Internet, no sender's liability can be triggered
> for the message content. Although the sender endeavors to maintain a
> computer virus-free network, he/she does not warrant that this
> transmission
> is virus-free and will not be liable for any damages resulting from any
> virus transmitted.
>
> Este mensaje y los ficheros adjuntos pueden contener informaci=F3n
> confidencial destinada solamente a la(s) persona(s) mencionadas
> anteriormente y su contenido puede estar protegido por secreto profesional
> y
> en cualquier caso el mensaje en su totalidad est=E1 amparado y protegido
> por
> la legislaci=F3n vigente que preserva el secreto de las comunicaciones, y
> por
> la legislaci=F3n de protecci=F3n de datos de car=E1cter personal. Si usted
> recibe
> este correo electr=F3nico por error, gracias por informar inmediatamente
> al
> remitente y destruir el mensaje. Al no estar asegurada la integridad de
> este
> mensaje sobre la red, el remitente no se hace responsable por su contenido.
> Su contenido no constituye ning=FAn compromiso para el remitente, salvo
> ratificaci=F3n escrita por ambas partes. Aunque se esfuerza al m=E1ximo
> por
> mantener su red libre de virus, el emisor no puede garantizar nada al
> respecto y no ser=E1 responsable de cualesquiera da=F1os que puedan
> resultar de
> una transmisi=F3n de virus.
>
>
- Follow-Ups:
- Re: Elasticity functions for Bezier and rectangular forms
- From: "E. Martin-Serrano" <eMartinSerrano@telefonica.net>
- Re: Elasticity functions for Bezier and rectangular forms
- References:
- Elasticity functions for Bezier and rectangular forms
- From: "E. Martin-Serrano" <eMartinSerrano@telefonica.net>
- Elasticity functions for Bezier and rectangular forms