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
>
> 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}
]
]

```

• Prev by Date: Re: How to check whether an infinite set is closed under addition?
• Next by Date: Re: How to check whether an infinite set is closed under addition?