Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Locator points not working in Manipulate calling RegionPlot, etc.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124283] Locator points not working in Manipulate calling RegionPlot, etc.
  • From: Chris Young <cy56 at comcast.net>
  • Date: Mon, 16 Jan 2012 17:03:47 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

No matter what I do, in terms of wrapping with DynamicModule, avoiding 
using variables from a module in an enclosed Dynamic or Manipulate, I 
can't get this very basic example to work. I just want to be able to 
drag around 4 points to set the quadrilateral, and then hatch all the 
subtriangles formed by drawin lines to the sides of the quadrilateral 
from the point T.  House of trying everything I could think of have 
failed to get the Locator points to work.

Any help hugely appreciated.

http://home.comcast.net/~cy56/PolyHatchFromTestPt.nb
http://home.comcast.net/~cy56/PolyHatchFromTestPt.png

Chris Young
cy56 at comcast.net


_TriHatch[P1_, P2_, P3_, mesh_, light_, plotPts_, opts___] :=
 Module[
  {
   orient,           (* orientation of the triangles *)
   interior,      (* 
   inequalities for interior of triangle *)
   Q                          (* 
   projection of first vertex onto opposite side *)
   },
  orient = Sign[Det[{P2 - P1, P3 - P1}]];
  
  interior[P_] :=
   And @@ (If[orient > 0, # > 0, # < 0] & /@ 
      {Det[{P2 - P1, P - P1}],  Det[{P3 - P2, P - P2}], 
       Det[{P1 - P3, P - P3}] });
  
  Q = Projection[P1 - P2, P3 - P2] + P2;
  
  RegionPlot[
   interior[{x, y}],  {x, -2, 2}, {y, -2, 2},
   PlotStyle -> Opacity[0.1],
   ColorFunction -> (White &),
   Mesh -> Round[mesh Norm[P3 - P2], 1],
   MeshStyle -> If[orient > 0, Lighter[Green, light], Lighter[Red, light]],
   MeshFunctions -> {{x, y} â?? Det[{Q - P1, {x, y} - P1}]},
   PlotPoints -> plotPts,
   BoundaryStyle -> None,
   Evaluate[opts]
   ]
  ]



\[HorizontalLine]Ctr[P_] := Plus @@ P/Length[P]

\[HorizontalLine]PolyHatch[P_, T_, mesh_, light_, plotPts_] :=
 Module[
  {C, n},

  C = \[HorizontalLine]Ctr[P];
  n = Length[P];

  (*Print["n == ",n];*)

  Show[
   Table[
    \[HorizontalLine]TriHatch[T, P[[j]], P[[If[j < n, j + 1, 1]]],
     mesh, light, plotPts],
    {j, 1, n}
    ],
   Graphics[
    {
     Table[
      {Hue[0.85 (j - 1)/n], Thick,
       Line[{P[[j]], P[[If[j < n, j + 1, 1]]]}]},
      {j, 1, n}
      ],
     Gray, PointSize[Large], Point[C]
     }
    ]
   ]
  ]




  • Prev by Date: Re: How to check whether an infinite set is closed under addition?
  • Next by Date: Re: how can one use mathematica get the approximate derivative of {x,y} data points?
  • Previous by thread: Works in 7.0.1, not in 8.0.4 ??
  • Next by thread: Re: Locator points not working in Manipulate calling RegionPlot, etc.