Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: creating a graphic in a text cell

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128186] Re: creating a graphic in a text cell
  • From: Dushan Mitrovich <dushanm at spinn.net>
  • Date: Sat, 22 Sep 2012 02:47:06 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <5F5696D639DA7D4C842D85A250023D8710D4234D@DB3PRD0710MB393.eurprd07.prod.outlook.com>

On Thu, 20 Sep 2012 08:32:33 +0000, Alexei Boulbitch wrote:
> I'm teaching a statics course that naturally requires a lot of 
> depictions of ropes, springs, pulleys, etc.  To produce a graphic box
> I use Ctrl-1 and use the tool palette.  This works, a bit painfully, but 
> recently I ran into a need to depict angles with short arcs.  I couldn't 
> find a way of doing that that the graphic box would accept.
> 
> Is there a way to specify an arc, and if so, how?  I'm running Mathematica  
> 8.0.4.0 under Mac OS X.6.8.  Thanks.
> 
> - Dushan Mitrovich
> 
> 
> Hi, Dushan,
> 
> There is a primitive Circle[] in which you can make a circular arc. 
> Just check Menu/Help/Circle. You may build it iby its evaluation in 
> your notebook, and then you can draw down your sketch around the 
> already existing arc.
> 
> I also make a lot of drawings illustrating technical texts done in 
> Mathematica. These drawings are not exactly as yours (i.e. to teach 
> something), but they are rather comparable. Since already long time I 
> refused of using the Drawings palette. Instead I do it 
> programmatically using graphics primitives. The reason is that in the 
> same drawing I often combine some elements obtained by one of 
> plotting operations (like say, Plot[]) with other elements that 
> previously I have produced with the palette. Typically as soon as I 
> end up with drawing, I realized that have missed something in the 
> plot, and need to make it once more. That means that I need to make 
> also the whole palette-based drawing once again.
> 
> After having started drawing with primitives I simply need to 
> re-evaluate the whole code. 
> 
> As the example I just sketched below a simple static problem. You 
> will find there the element entitled arc with the construct you asked 
> about in your post about. 
> 
> Evaluate the code below. 
>   
> (* These are definitions of all elements of the sketch *)
> 
> base = Graphics[{LightBlue, EdgeForm[{Thin, Black}], 
>     Polygon[{{0, 0}, {2, 0}, {2, 2*Tan[\[Pi]/8]}}]}];
> 
> brick1 = Graphics[{LightRed, EdgeForm[{Thin, Black}], 
>     Translate[
>      Rotate[Polygon[{{0, 0}, {0.5, 0}, {0.5, 0.25}, {0., 0.25}, {0, 
>          0}}], 0.392], {0.693, 0.417}]}];
> 
> arr1 = Graphics[{Red, Thick, 
>     Arrow[{{0.944, 0.514}, {0.944 - 0.4 Sin[\[Pi]/8], 
>        0.514 + 0.4 Cos[\[Pi]/8]}}]}];
> arr2 = Graphics[{Blue, Thick, 
>     Arrow[{{0.944 + 0.044, 
>        0.514 - 0.086}, {0.944 + 0.044 - 0.5 Cos[\[Pi]/8], 
>        0.514 - 0.5 Sin[\[Pi]/8] - 0.086}}]}];
> arr3 = Graphics[{Brown, Thick, Arrow[{{0.944, 0.514}, {0.944, 0.1}}]}];
> txtN = Graphics[
>    Text[Style["N", Italic, 18, Red, Bold], {0.874, 0.902}]];
> txtmg = Graphics[
>    Text[Style["mg", Italic, 18, Brown, Bold], {1.062, 0.148}]];
> txtkN = Graphics[
>    Text[Style["F=kN", Italic, 18, Blue, Bold], {0.342 + 0.125, 
>      0.46 - 0.11}]];
> arc = Graphics[Circle[{0, 0}, 0.5, {0, \[Pi]/8}]];
> txt3 = Graphics[Text[Style["\[Alpha]", 18], {0.546, 0.12}]];
> line1 = Graphics[{Thick, 
>     Line[{{1.172, 0.632}, {1.172 + 0.806*Cos[\[Pi]/8], 
>        0.632 + 0.806*Sin[\[Pi]/8]}}]}];
> disk = Graphics[{LightBlue, EdgeForm[{Thin, Black}], 
>     Disk[{2, 2*Tan[\[Pi]/8] + 0.1}, 0.1]}];
> line2 = Graphics[{Thick, 
>     Line[{{2.1 - 0.015, 2*Tan[\[Pi]/8] + 0.04}, {2.1 - 0.015, 
>        Tan[\[Pi]/8] + 0.04}}]}];
> brick2 = Graphics[{LightRed, EdgeForm[{Thin, Black}], 
>     Polygon[{{2.01, 0.4542}, {2.01 + 0.15, 0.4542}, {2.01 + 0.15, 
>        0.3}, {2.01, 0.3}, {2.01, 0.4542}}]}];
> arr4 = Graphics[{Green, Thick, 
>     Arrow[{{1.172, 0.632}, {1.172 + 0.3*Cos[\[Pi]/8], 
>        0.632 + 0.3*Sin[\[Pi]/8]}}]}];
> arr5 = Graphics[{Green, Thick, 
>     Arrow[{{2.1 - 0.015, Tan[\[Pi]/8] + 0.04}, {2.1 - 0.015, 
>        Tan[\[Pi]/8] + 0.3}}]}];
> arr6 = Graphics[{Black, Thick, 
>     Arrow[{{2.1 - 0.015, Tan[\[Pi]/8] - 0.04}, {2.1 - 0.015, 
>        Tan[\[Pi]/8] - 0.04 - 0.3}}]}];
> txtT1 = Graphics[
>    Text[Style["T", 18, Italic, Bold, Green], {1.395, 0.83}]];
> txtT2 = Graphics[
>    Text[Style["T", 18, Italic, Bold, Green], {2.172, 0.605}]];
> txtMg = Graphics[
>    Text[Style["Mg", 18, Italic, Bold, Black], {2.206, 0.13}]];
> 
> (* here the elements are unified making the sketch *)
> Show[{base, brick1, arr1, arr2, arr3, txtN, txtmg, txtkN, arc, txt3, 
>   line1, disk, line2, brick2, arr4, arr5, arr6, txtT1, txtT2, txtMg}]
> 
> One can also easily parameterize it and make a movie out of a static 
> drawing. 
> 
> Drawing with primitives goes a bit slower than that with the palette, 
> but still astonishingly fast. It took me about 10 minutes to draw 
> this. There is a simple trick to accelerate the process. Just ask me, 
> if you would find it interesting to learn about it.
> 
> Have fun, 
> Alexei
> 
> Alexei BOULBITCH, Dr., habil.
> IEE S.A.
> ZAE Weiergewan,
> 11, rue Edmond Reuter,
> L-5326 Contern, LUXEMBOURG
> 
> Office phone :  +352-2454-2566
> Office fax:       +352-2454-3566
> mobile phone:  +49 151 52 40 66 44
> 
> e-mail: alexei.boulbitch at iee.lu
> 

Hi Alexei,

Your suggestion and example code were very useful - thanks.  Your 
comments make a strong case that the Graphics palette is useful only 
for the most basic uses and not helpful beyond that.  The example code 
you supplied works just fine on my system.  Since I don't want to have 
the graphics instructions appear in the instructional material, I can 
have the instructions in a separated notebook, generate the graphic, 
then just paste it where I need it.

In fact, I could make a collection of basic-shape instructions, select 
and copy the ones I need, tailor them for the specific graphic, and 
execute.  This could speed things up considerably after a while.

Yes, I am very interested to learn the acceleration trick you mention.

- Dushan



  • Prev by Date: Re: List & Plot: do they parse options differently?
  • Next by Date: Re: List & Plot: do they parse options differently?
  • Previous by thread: Re: creating a graphic in a text cell
  • Next by thread: Re: creating a graphic in a text cell