|
[Date Index]
[Thread Index]
[Author Index]
Re Bezier curves mapped from 2D to 3D surface
- To: mathgroup at smc.vnet.net
- Subject: [mg124650] Re Bezier curves mapped from 2D to 3D surface
- From: Chris Young <cy56 at comcast.net>
- Date: Sat, 28 Jan 2012 06:36:52 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
I fixed it so the curves are mapped correctly to the saddle surface. I
forgot that my butterfly function was a set of 2D vectors. Changing the
"@" to a "/@" fixed everything. However, now it's impossibly slow.
http://home.comcast.net/~cy56/Mma/BezCurveToSurface2.nb
http://home.comcast.net/~cy56/Mma/BezCurveToSurface2Pic.png
DynamicModule[
{
\[ScriptCapitalP], (*
the points for each Bézier curve *)
\[ScriptCapitalC], \
(* the parametric functions for the Bézier curves *)
PM, (* the points for the morphing Bézier curves *)
CM, (*
the parametric functions for the morphing Bézier curves *)
curveStyle,
wing, butterfly, butterflyPlot
},
(* s is the number of curves *)
curveStyle[a_, b_, c_, s_, th_] := Table[
{Directive[AbsoluteThickness[th], Hue[vFnc[a, b, c, k]]]},
{k, 0, 1, 1/s}];
wing[n_, t_, s_] := Table[CM[n][k, t], {k, 0, 1, 1/s}];
butterfly[t_, s_] := Join[wing[1, t, s], wing[2, t, s]];
butterflyPlot[a_, b_, c_, s_, th_] :=
ParametricPlot[
Evaluate @ butterfly[t, s - 1], {t, 0, 1},
PlotStyle -> curveStyle[a, b, c, 2 s - 1, th]
];
Dynamic @ Manipulate[
\[ScriptCapitalP][1] = Take[P, {1, 5}];
\[ScriptCapitalP][2] = Take[P, {6, 10}];
\[ScriptCapitalP][3] = Take[P, {11, 15}];
\[ScriptCapitalC][1][
t_] := \[HorizontalLine]Bez[\[ScriptCapitalP][1],
t]; \[ScriptCapitalC][2][
t_] := \[HorizontalLine]Bez[\[ScriptCapitalP][2],
t]; \[ScriptCapitalC][3][
t_] := \[HorizontalLine]Bez[\[ScriptCapitalP][3], t];
PM[1][n_] := (1 - n) \[ScriptCapitalP][1] +
n \[ScriptCapitalP][2];
PM[2][n_] := (1 - n) \[ScriptCapitalP][2] +
n \[ScriptCapitalP][3];
CM[1][n_, t_] := \[HorizontalLine]Bez[PM[1][n], t];
CM[2][n_, t_] := \[HorizontalLine]Bez[PM[2][n], t];
Grid[
{
{
LocatorPane[
Dynamic @ P,
Dynamic @ Show[
butterflyPlot[a, b, c, nCurves, thick],
Graphics @ {Gray, Dashed, Line[\[ScriptCapitalP][1]],
Line[\[ScriptCapitalP][2]], Line[\[ScriptCapitalP][3]]},
PlotRange -> 2,
Axes -> True,
ImageSize -> 4* 72
],
{{-2, -2}, {2, 2}, {.25, .25}}
],
Dynamic @
Show[
ParametricPlot3D[
\[HorizontalLine]Saddle @ {u, v}, {u, -2, 2}, {v, -2, 2},
PlotStyle -> Opacity[opac],
Mesh -> False
],
ParametricPlot3D[
\[HorizontalLine]Saddle /@ butterfly[t, nCurves], {t, 0,
1}
] /.
Line[pts_, rest___] :> Tube[pts, 0.05, rest],
PlotRange -> 2,
ImageSize -> 4* 72
]
}
}
],
{{P,
{
{-1, -2}, {-1, -1}, {-1, 0}, {-1, 1}, {-1, 2},
{ 0, -2}, { 0, -1}, { 0, 0}, { 0, 1}, { 0, 2},
{ 1, -2}, { 1, -1}, { 1, 0}, { 1, 1}, { 1, 2}
}
}, None},
{{nCurves, 5}, 1, 20, 1}, (*
one less than the number of "morphing" curves *)
{{thick, 12},
1, 30, 1},
(* start, end, and middle hues *)
{{a, 0.1}, 0, 1},
{{b, 0.5}, 0, 1},
{{c, 0.1}, 0, 1},
{{opac, 0.75}, 0, 1}
]
]
Prev by Date:
Re: CurrentImage Command not working in MacBook Pro
Next by Date:
Bezier curves mapped from 2D to 3D surface
Previous by thread:
Re: Robust identifier for notebook objects?
Next by thread:
Bezier curves mapped from 2D to 3D surface
|