Re: Re: planar polygon plot
- To: mathgroup at smc.vnet.net
- Subject: [mg16619] Re: [mg16442] Re: planar polygon plot
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Fri, 19 Mar 1999 12:53:47 -0500
- References: <7cngie$4tp$8@dragonfly.wolfram.com>
- Sender: owner-wri-mathgroup at wolfram.com
Richard S Hsu wrote in message <7cngie$4tp$8 at dragonfly.wolfram.com>...
>Dear Allan,
>Thank you for help.
>I tried
>
> Show[ Graphics3D[ Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0},
> {2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:>
> {Line[#],EdgeForm[], Polygon[ Prepend[#,
> Plus@@lst/Length[lst]]]}&[Append[lst,First[lst]] ] ] ];
>
>It works, but get a error message:
>
>First::normal: Nonatomic expression expected at position 1 in
>First[lst].
>Append::normal:
> Nonatomic expression expected at position 1 in Append[lst, First[lst]].
>
>I want to know why.
>
>Richard Hsu
>
Dear Richard,
Thanks for pointing this out.
I should have use some parentheses:
Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0},
{2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:>
(
{Line[#],EdgeForm[], Polygon[ Prepend[#,
Plus@@lst/Length[lst]]]}&[Append[lst,First[lst]]
]
)
The first step with this is the following (where {..} stands for the list of
points)
Polygon[{Line[#],EdgeForm[], Polygon[ Prepend[#,
Plus at {..}/Length[{..}]]]}
)&[Append[{..},First[{..}]] ]]
But the code as posted
Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0},
{2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:>
{Line[#],EdgeForm[], Polygon[ Prepend[#,
Plus@@lst/Length[lst]]]}&[Append[lst,First[lst]] ]
Parses as
(
Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0},
{2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:>
{Line[#],EdgeForm[], Polygon[ Prepend[#,
Plus@@lst/Length[lst]]]}
)&[Append[lst,First[lst]] ]
Append[lst,First[lst]] is evaluated and gives the messages.
Then the unaltered expression is taken insde the function.
(
Polygon[ { {0,0,0}, {1,0.5,0}, {2,0,0},
{2,2,0}, {1,1.5,0}, {0,2,0} } ] /.Polygon[lst_]:>
{Line[Append[lst,First[lst]],EdgeForm[],
Polygon[ Prepend[Append[lst,First[lst],
Plus@@lst/Length[lst]]]}
)
The evaluation of this gives the result required but, besides the messages,
this code is less efficient, involving, for example, an extra use of Append.
Regards,
Allan
.---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565
Allan