DMUG-Archiv 2010

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

kreisZeit

Hallo zusammen,

vermöge

In[18]:= Remove[ kreisZeit]
kreisZeit[\[Beta]_?NumericQ] :=
 Module[{r0 = 2, \[Delta] = 0.01, anz, rds, sh, f},
   anz = Floor[Log[\[Beta], \[Delta]/r0]];
   rds = r0 Table[\[Beta]^o, {o, anz}];
   sh = Join[{{0, (\[Beta] - 1) r0}}, -r0 Table[{0, \[Beta]^
          o (1 - \[Beta])}, {o, anz - 1}]];
   f = Take[Flatten[Table[{Blue, Red, Green}, {Ceiling[anz/3]}]], anz];
   Graphics[{{Thickness[0.01], Circle[{0, 0}, r0 + 0.0215]},
     Dynamic[{#[[1]], Disk[#[[2]], #[[3]]]}& /@
       Transpose[{f,
         Rest[FoldList[
           RotationTransform[#2[[2]], #1][#1 - #2[[1]]] &, {0, 0},
           Transpose[{sh,
             Take[Flatten[
               Table[{-30 Mod[
                   Refresh[AbsoluteTime[], UpdateInterval -> 1]/3600,
                   60] \[Degree], -6 Mod[
                   Refresh[AbsoluteTime[], UpdateInterval -> 1]/60,
                   60] \[Degree], -6 Mod[
                   Refresh[AbsoluteTime[], UpdateInterval -> 1],
                   60] \[Degree]}, {Ceiling[anz/3]}]], anz]}]]],
         rds}]]}]
   ] /; 1 > \[Beta] > 1/10

erhält man mit

In20]:= kreisZeit[0.97]

eine iterativ-rekursive Uhr mit Stunden-, Minuten- und Sekundenkreisen, die mit dem je grösseren Kreis (der nullte Kreis ist das Ziffernblatt) an der Zeitstelle (h, min bzw. sek) eine gemeinsame Tangente haben. Der Stundenkreis der nächsten Generation bewegt sich im Sekundenkreis der vorangegangenen Generation, ad inifimum (mod Pixelgrösse).

Gruss
Udo.

P.S.: Die Uhr kann Andreas als Beispiel dienen, wie und wo Dynamic[] sinnvoll eingesetzt wird: bringt man nämlich das Dynamic[] weiter nach innen in kreisZeit[], im Ernstfall etwa direkt um jeden einzelnen Refresh[] Ausdruck, dann geht die Uhr nicht.

Attachment: kreisZeit.jpeg
Description: JPEG image

Antworten:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html