Non-Linear Graphics Scaling
- To: mathgroup at smc.vnet.net
- Subject: [mg86475] Non-Linear Graphics Scaling
- From: Januk <ggroup at sarj.ca>
- Date: Wed, 12 Mar 2008 00:12:28 -0500 (EST)
Is there a way to have mathematica display a graphic using a non- linear scaling function? I want to scale any point on a 2D graphic by some non-linear function of the distance away from the origin. For a list of points, it is trivial to force the issue: pl3 = Graphics[{Point[ RandomReal[{-20, 20}, {1000, 2}] ] }, Frame -> True, PlotRange -> All]; GraphicsRow@{pl3, pl3 /. (xy : {x_?NumericQ, y_?NumericQ} :> Module[{r, \[Theta]}, r = If[Norm[xy] == 0., 0, Log[1+Norm[xy]]]; \[Theta] = If[Norm[xy] == 0., 0, ArcTan @@ xy]; r {Cos[\[Theta]], Sin[\[Theta]]} ] )} Is there a way to do this for more complecated graphics (e.g. graphics with primitives)? For example: pl2 = Graphics[{ Red, Point[RandomReal[{-2,2},{100,2}]], Orange, Line[{{-2, .75}, {2, .75}}], Green, Thick , Circle[{0, 0}, 2], Black, Point[{0, 0}] }] So far the technique of using a ReplaceAll simply transforms the end points of the line, not the line shape. Any thoughts of how to do this for an arbitrary Cartesian 2D graphic would be much appreciated. Thanks, Januk