Re: Hatched shading?
- To: mathgroup at smc.vnet.net
- Subject: [mg111136] Re: Hatched shading?
- From: "David Park" <djmpark at comcast.net>
- Date: Wed, 21 Jul 2010 07:14:49 -0400 (EDT)
The problem with RegionFunction is how many points does Mathematica use, especially with a straight line, and how does the algorithm determine where the boundary should be. Suppose one point is well within the region and the next point is well without. I'm sure that Mathematica doesn't calculate the exact intersections with boundaries. So I think the only reliable method is to use some brute force and trim the lines if they extend outside the region. Again, here is a Presentations solution where it is convenient to treat the hatching and the curve separately. Needs["Presentations`Master`"] f[x_] := Sin[x]; Draw2D[ {(* Draw hatch lines first *) Table[ Draw[(x - k)/3, {x, -1.5, 3}, RegionFunction -> Function[{x, y}, 0 < x < 3 \[And] 0 <= y <= f[3 x]], PlotRange -> {{1, 3}, {0, 1}}, PlotPoints -> 200, PlotStyle -> Directive[AbsoluteThickness[2], Red]] /. {x_?NumberQ, y_?NumberQ} :> If[0 < x < 3 \[And] 0 <= y <= f[3 x], {x, y}, Unevaluated[Sequence[]]], {k, -3, 3, .1}], (* Draw the curve without a fill *) Blue, AbsoluteThickness[2], Draw[f[3 x], {x, 0, 3}, PlotRange -> {0, 1}] }, AspectRatio -> .6, PlotRange -> {{0, 3}, {0, 1}}, PlotRangePadding -> {.1, .05}, Axes -> True, ImageSize -> 400] If you do the same graphic with say 25 points you will see that Mathematica did not always use points very close to the boundary. David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: ADL [mailto:alberto.dilullo at tiscali.it] Following what Bob brilliantly suggested, I found a possible bug in Mathematica 7.0.1 for Windows. If you type the following, you will get a couple of red lines getting out of their boundary: f[x_] := Sin[x]; Plot[ {Table[(x - k)/3, {k, -3, 3, .10}], f[3x]}, {x, 0, 3}, PlotRange -> {0, 1}, RegionFunction -> Function[{x, y}, 0 < y <= f[3x]], PlotStyle -> { Directive[ AbsoluteThickness[4], Red], Directive[ Thick, Blue] } ] Does anybody else confirms this? ADL On 18 Lug, 07:06, Bob Hanlon <hanl... at cox.net> wrote: > I forget to copy the definition of f[x] that I was using as an example > > f[x_] = Exp[-x] > > Bob Hanlon