Re: hatched regions, shading, and fills
- To: mathgroup at smc.vnet.net
- Subject: [mg124317] Re: hatched regions, shading, and fills
- From: Chris Young <cy56 at comcast.net>
- Date: Mon, 16 Jan 2012 17:15:44 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j0trq5$d2s$1@smc.vnet.net>
On 2011-07-29 08:42:45 +0000, Sam McDermott said: > Hi, > > After looking over some old threads, it looks like there is no elegant > way to add hatch marked regions in the interior of a graphic. This is > regrettable, because it would really simplify things for my particular > task right now. > > However, are there other easily accessed directives that might give a > similar result? For instance, filling in a region with polka dots? > Adding diagonal lines? Filling with a very simple texture? > > Any help is much appreciated, > Thanks, > Sam The following will at least fill a triangle with hatch lines, green if the orientation is positive, red if negative. The mesh lines are plotted parallel to the first side. A better way might be to plot them perpendicular to an angle bisector of the triangle. It's a little slow, and it needs to have the hatch lines have the same spacings no matter how the vertices of the triangle are moved around. A notebook and screen shots are at: http://home.comcast.net/~cy56/HatchLines.nb http://home.comcast.net/~cy56/HatchLines1.png http://home.comcast.net/~cy56/HatchLines2.png Module[ { x1, y1, x2, y2, x3, y3, orient }, Manipulate[ x1 = P[[1, 1]]; y1 = P[[1, 2]]; x2 = P[[2, 1]]; y2 = P[[2, 2]]; x3 = P[[3, 1]]; y3 = P[[3, 2]]; orient = Sign[Chop[Det[\!\(\* TagBox[ RowBox[{"(", "", GridBox[{ {"x1", "y1", "1"}, {"x2", "y2", "1"}, {"x3", "y3", "1"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]\)]]]; Show[ Graphics[ { FaceForm[], EdgeForm[], Polygon[P], Blue, Line[{P[[1]], P[[2]]}], Red, Line[{P[[2]], P[[3]]}], Darker[Yellow, 0.3], Line[{P[[3]], P[[1]]}] } ], RegionPlot[ And @@ (If[orient > 0, Positive, Negative] /@ {Det[( { {x1, x2, x}, {y1, y2, y}, {1, 1, 1} } )], Det[( { {x2, x3, x}, {y2, y3, y}, {1, 1, 1} } )], Det[( { {x3, x1, x}, {y3, y1, y}, {1, 1, 1} } )] }), {x, -2, 2}, {y, -2, 2}, ColorFunction -> (White &), BoundaryStyle -> None, Mesh -> Round[20 Norm[P[[2]] - P[[1]]], 1], MeshStyle -> (Green // If[orient > 0, #, Red] &), MeshFunctions -> {{x, y} \[Function] Det[( { {x2, x3, x}, {y2, y3, y}, {1, 1, 1} } )]}, PlotPoints -> 50 ], PlotRange -> 2, Axes -> True, GridLines -> Automatic ], {{P, {{0, 0}, {1, 0}, {1, 1}}}, Locator} ] ]