       RE: Illumination or obfuscation?

• To: mathgroup at smc.vnet.net
• Subject: [mg43986] RE: [mg43943] Illumination or obfuscation?
• From: "David Park" <djmp at earthlink.net>
• Date: Thu, 16 Oct 2003 04:16:45 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```Steven,

It is not meant to illuminate but to be compact and efficient. The trouble
with one-liners is that they are difficult to follow. But all you have to do
is unravel them.

Needs["Graphics`Arrow`"]
Needs["Graphics`Colors`"]

px = {1, 0};
py = {0, 1};
m[th_] := {{Cos[th], Sin[th]}, {-Sin[th], Cos[th]}}

We can experiment and see what the routine does. It clearly draws two
arrows.

crossPoint[{1, 1}]
{Arrow[{0.5, 1.}, {1.5, 1.}, HeadLength -> 0.015],
Arrow[{1., 0.5}, {1., 1.5}, HeadLength -> 0.015]}

Play around with the parameters in the following plot to see what it does

Show[Graphics[
{crossPoint[pt = {1, 3}, 45°, 6],
Red, AbsolutePointSize, Point[pt]}],
AspectRatio -> Automatic,
PlotRange -> All,
Frame -> True];

Now we can unravel it...

p = {1, 3};
th = \[Pi]/4;
L = 6;
Print["Initial vectors"]
{px, py}
Print["Stretching them"]
L%%
Print["Forming two symmetrical points for Arrow"]
{-#, #} & /@ %%
Print["Rotating and shifting the coordinates"]
p + #.m[th] & /@ %%
Print["Inserting each row into the Arrow command"]
Arrow[##, HeadLength -> 0.015] & @@ # & /@ %%

Only the last instruction is a little difficult. It is inserting two
arguments into the Arrow primitive by apply the function to each row of the
preceding matrix.

David Park

From: Steven T. Hatton [mailto:hattons at globalsymmetry.com]
To: mathgroup at smc.vnet.net

To an experienced Mathematica user, is the following snippet clear, and easy
to understand, or simply an exercise in obfuscation? Assume I already have
px,py and m[] lying around.

px = {1, 0};
py = {0, 1};

m[th_] := {{Cos[th], Sin[th]}, {-Sin[th], Cos[th]}}

crossPoint[p_, th_:0, L_:0.5] :=