~hilaire-fernandes/drgeo/trunk

« back to all changes in this revision

Viewing changes to resources/SmalltalkSketches/Durer.st

  • Committer: Hilaire Fernandes
  • Date: 2022-08-07 08:55:48 UTC
  • Revision ID: hilaire.fernandes@gmail.com-20220807085548-n5j04a3gxcvtgn30
Clean up

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
| canvas durer o1 a1 r1 c1b p1 t1 m1 k1 n1 h1 b1 e1 alfa d1 c11|
2
 
canvas _ DrGeoSketch new fullscreen. 
3
 
durer _ [  ].
4
 
durer _ [ :a :b :c :d :e :k | 
5
 
        | ab bc cd de ea ac ad bd be ce f g h l m c1 c2 c3 c4 c5 n o p q r s t u v z|
6
 
        k > 1 ifTrue: [ 
7
 
                "Sides of the pentagon"
8
 
                ab _ (canvas line: a to: b) hide.
9
 
                bc _ (canvas line: b to: c) hide.
10
 
                cd _ (canvas line: c to: d) hide.
11
 
                de _ (canvas line: d to: e) hide.
12
 
                ea _ (canvas line: e to: a) hide.
13
 
                "Diagonal"
14
 
                ac _ (canvas line: a to: c) hide.
15
 
                ad _ (canvas line: a to: d) hide.
16
 
                bd _ (canvas line: b to: d) hide.       
17
 
                be _ (canvas line: b to: e) hide        .
18
 
                ce _ (canvas line: c to: e) hide.
19
 
                "Central pentagon"
20
 
                f _ (canvas intersectionOf: ac and: be) hide.
21
 
                g _ (canvas intersectionOf: ac and: bd) hide.
22
 
                h _ (canvas intersectionOf: ce and: bd) hide.
23
 
                l _ (canvas intersectionOf: ce and: ad) hide.
24
 
                m _ (canvas intersectionOf: ad and: be) hide.
25
 
                "Auxialiary circles"
26
 
                c1 _ (canvas circleCenter: h to: g) hide.
27
 
                c2 _ (canvas circleCenter: l to: h) hide.
28
 
                c3 _ (canvas circleCenter: m to: l) hide.
29
 
                c4 _ (canvas circleCenter: f to: m) hide.
30
 
                c5 _ (canvas circleCenter: g to: f) hide.
31
 
                "Vertex of the new pentagons"
32
 
                n _ (canvas intersectionOf: cd and: c1) hide.
33
 
                o _ (canvas altIntersectionOf: cd and: c1) hide.
34
 
                p _ (canvas intersectionOf: c2 and: de) hide.   
35
 
                q _ (canvas altIntersectionOf: c2 and: de) hide.        
36
 
                r _ (canvas intersectionOf: c3 and: ea) hide.
37
 
                s _ (canvas altIntersectionOf: c3 and: ea) hide.
38
 
                t _ (canvas intersectionOf: c4 and: ab) hide.
39
 
                u _ (canvas altIntersectionOf: c4 and: ab) hide.
40
 
                v _ (canvas intersectionOf: c5 and: bc) hide.
41
 
                z _ (canvas altIntersectionOf: c5 and: bc) hide.
42
 
                "Go recursive"
43
 
                durer valueWithArguments: { f . g . h . l . m . k - 1 }.
44
 
                durer valueWithArguments: { g . z . c . n . h . k - 1 }.
45
 
                durer valueWithArguments: { l . h . o . d . p . k - 1 }.                
46
 
                durer valueWithArguments: { r . m . l . q . e . k - 1 }.
47
 
                durer valueWithArguments: { a . t . f . m . s . k - 1 }.
48
 
                durer valueWithArguments: { u. b . v . g . f . k - 1 }.
49
 
 
50
 
        ]
51
 
        ifFalse: [ canvas polygon: { a . b . c . d . e }]
52
 
].
53
 
o1 _ (canvas point: 0@0) name: 'O'.
54
 
a1 _ (canvas point: 0@3.5) name: 'A'.
55
 
r1 _ (canvas line: o1 to: a1) hide.
56
 
c11 _ (canvas circleCenter: o1 to: a1) hide.
57
 
p1 _ (canvas perpendicular: r1 at: o1) hide.
58
 
t1 _ (canvas intersectionOf: p1 and: c11) hide.
59
 
m1 _ (canvas middleOf: o1 and: t1) hide.
60
 
k1 _ (canvas circleCenter: m1 to: a1) hide.
61
 
n1 _ (canvas altIntersectionOf: k1 and: p1) hide.
62
 
h1 _ (canvas circleCenter: a1 to: n1) hide.
63
 
b1 _ (canvas intersectionOf: h1 and: c11) name: 'B'.
64
 
e1 _ (canvas altIntersectionOf: h1 and: c11) name: 'E'.
65
 
alfa _ canvas geometricAngle: e1 to: a1 to: b1.
66
 
d1 _ (canvas rotate: a1 center: e1 angle: alfa) name: 'D'.
67
 
c1b _ (canvas reflect: d1 axis: r1) name: 'C'.
68
 
 
69
 
durer valueWithArguments: { a1 . b1 . c1b . d1 . e1 . 4 }