Re: Colorfunction + parametricplot3d + plotrange = ?
- To: mathgroup at smc.vnet.net
- Subject: [mg103932] Re: [mg103774] Colorfunction + parametricplot3d + plotrange = ?
- From: Chris Hill <chill at wolfram.com>
- Date: Tue, 13 Oct 2009 07:19:28 -0400 (EDT)
- References: <200910051716.NAA10565@smc.vnet.net>
This is a bug. It affects a Line with VertexColors that goes outside
the PlotRange of a Graphics3D object, such as the one produced by a
ParametricPlot3D of one parameter with a ColorFunction where the
curve is outside the PlotRange. The issue has been corrected in the
internal development build and the fix will appear in a future release.
A workaround is to prevent the curve from leaving the
PlotRange. Here I do this by using RegionFunction to clip the curve
to the desired range, change the PlotRange to All, and add 8 dummy
polygons to make the PlotRange at least as big as the desired range.
With[{plotRange = {{-6, 6}, {-6, 6}, {-6, 6}}},
ParametricPlot3D[{5*Cos[fi], 5*Sin[fi], fi}, {fi, 0, 2 Pi},
ColorFunction -> Function[{xx, yy, zz}, If[zz < 2, Red, Blue]],
PlotStyle -> {Thickness[0.01]}, ColorFunctionScaling -> False,
PlotRange -> All,
RegionFunction ->
With[{plotRangeRegion =
And @@ MapIndexed[And[Slot @@ #2 >= First[#], Slot @@ #2 <= Last[#]] &,
plotRange]}, plotRangeRegion &]] /.
Graphics3D[prims_, opts___] :>
Graphics3D[{Polygon[Table[#, {3}] & /@ Tuples[plotRange]], prims}, opts]]
Sorry for the inconvenience and I hope the workaround is helpful.
Chris Hill
Wolfram Research
- References:
- Colorfunction + parametricplot3d + plotrange = ?
- From: koringkriek <astronerma@gmail.com>
- Colorfunction + parametricplot3d + plotrange = ?