OLD | NEW |
1 var sunflower; | 1 var sunflower; |
2 (function(exports) { | 2 (function(exports) { |
3 'use strict'; | 3 'use strict'; |
4 let ORANGE = "orange"; | 4 let ORANGE = "orange"; |
5 let SEED_RADIUS = 2; | 5 let SEED_RADIUS = 2; |
6 let SCALE_FACTOR = 4; | 6 let SCALE_FACTOR = 4; |
7 let TAU = dart.notNull(math.PI) * 2; | 7 let TAU = dart.notNull(math.PI) * 2; |
8 let MAX_D = 300; | 8 let MAX_D = 300; |
9 let centerX = dart.notNull(MAX_D) / 2; | 9 let centerX = dart.notNull(MAX_D) / 2; |
10 let centerY = centerX; | 10 let centerY = centerX; |
11 // Function querySelector: (String) → Element | 11 // Function querySelector: (String) → Element |
12 function querySelector(selector) { | 12 function querySelector(selector) { |
13 return dom.document.querySelector(selector); | 13 return dom.document.querySelector(selector); |
14 } | 14 } |
15 exports.seeds = 0; | 15 exports.seeds = 0; |
16 dart.defineLazyProperties(exports, { | 16 dart.defineLazyProperties(exports, { |
17 get slider() { | 17 get slider() { |
18 return dart.as(querySelector("#slider"), dom.InputElement); | 18 return dart.as(querySelector("#slider"), dom.InputElement); |
19 }, | 19 }, |
20 get notes() { | 20 get notes() { |
21 return querySelector("#notes"); | 21 return querySelector("#notes"); |
22 }, | 22 }, |
23 get PHI() { | 23 get PHI() { |
24 return (dart.notNull(math.sqrt(5)) + 1) / 2; | 24 return (dart.notNull(math.sqrt(5)) + 1) / 2; |
25 }, | 25 }, |
26 get context() { | 26 get context() { |
27 return dart.as(dart.as(querySelector("#canvas"), dom.CanvasElement).getCon
text('2d'), dom.CanvasRenderingContext2D); | 27 return dart.as(dart.as(querySelector("#canvas"), dom.CanvasElement).getCon
text('2d'), dom.CanvasRenderingContext2D); |
28 } | 28 } |
29 }); | 29 }); |
| 30 // Function main: () → void |
| 31 function main() { |
| 32 exports.slider.addEventListener('change', (e) => draw()); |
| 33 draw(); |
| 34 } |
| 35 // Function draw: () → void |
| 36 function draw() { |
| 37 exports.seeds = core.int.parse(exports.slider.value); |
| 38 exports.context.clearRect(0, 0, MAX_D, MAX_D); |
| 39 for (let i = 0; dart.notNull(i) < dart.notNull(exports.seeds); i = dart.notN
ull(i) + 1) { |
| 40 let theta = dart.notNull(i) * dart.notNull(TAU) / dart.notNull(exports.PHI
); |
| 41 let r = dart.notNull(math.sqrt(i)) * dart.notNull(SCALE_FACTOR); |
| 42 let x = dart.notNull(centerX) + dart.notNull(r) * dart.notNull(math.cos(th
eta)); |
| 43 let y = dart.notNull(centerY) - dart.notNull(r) * dart.notNull(math.sin(th
eta)); |
| 44 new SunflowerSeed(x, y, SEED_RADIUS).draw(); |
| 45 } |
| 46 exports.notes.textContent = `${exports.seeds} seeds`; |
| 47 } |
30 class Circle extends core.Object { | 48 class Circle extends core.Object { |
31 Circle(x, y, radius) { | 49 Circle(x, y, radius) { |
32 this.x = x; | 50 this.x = x; |
33 this.y = y; | 51 this.y = y; |
34 this.radius = radius; | 52 this.radius = radius; |
35 } | 53 } |
36 } | 54 } |
37 class CirclePainter extends core.Object { | 55 class CirclePainter extends core.Object { |
38 CirclePainter() { | 56 CirclePainter() { |
39 this.color = ORANGE; | 57 this.color = ORANGE; |
(...skipping 11 matching lines...) Expand all Loading... |
51 } | 69 } |
52 class SunflowerSeed extends dart.mixin(Circle, CirclePainter) { | 70 class SunflowerSeed extends dart.mixin(Circle, CirclePainter) { |
53 SunflowerSeed(x, y, radius, color) { | 71 SunflowerSeed(x, y, radius, color) { |
54 if (color === void 0) | 72 if (color === void 0) |
55 color = null; | 73 color = null; |
56 super.Circle(x, y, radius); | 74 super.Circle(x, y, radius); |
57 if (color !== null) | 75 if (color !== null) |
58 this.color = color; | 76 this.color = color; |
59 } | 77 } |
60 } | 78 } |
61 // Function main: () → void | |
62 function main() { | |
63 exports.slider.addEventListener('change', (e) => draw()); | |
64 draw(); | |
65 } | |
66 // Function draw: () → void | |
67 function draw() { | |
68 exports.seeds = core.int.parse(exports.slider.value); | |
69 exports.context.clearRect(0, 0, MAX_D, MAX_D); | |
70 for (let i = 0; dart.notNull(i) < dart.notNull(exports.seeds); i = dart.notN
ull(i) + 1) { | |
71 let theta = dart.notNull(i) * dart.notNull(TAU) / dart.notNull(exports.PHI
); | |
72 let r = dart.notNull(math.sqrt(i)) * dart.notNull(SCALE_FACTOR); | |
73 let x = dart.notNull(centerX) + dart.notNull(r) * dart.notNull(math.cos(th
eta)); | |
74 let y = dart.notNull(centerY) - dart.notNull(r) * dart.notNull(math.sin(th
eta)); | |
75 new SunflowerSeed(x, y, SEED_RADIUS).draw(); | |
76 } | |
77 exports.notes.textContent = `${exports.seeds} seeds`; | |
78 } | |
79 // Exports: | 79 // Exports: |
80 exports.ORANGE = ORANGE; | 80 exports.ORANGE = ORANGE; |
81 exports.SEED_RADIUS = SEED_RADIUS; | 81 exports.SEED_RADIUS = SEED_RADIUS; |
82 exports.SCALE_FACTOR = SCALE_FACTOR; | 82 exports.SCALE_FACTOR = SCALE_FACTOR; |
83 exports.TAU = TAU; | 83 exports.TAU = TAU; |
84 exports.MAX_D = MAX_D; | 84 exports.MAX_D = MAX_D; |
85 exports.centerX = centerX; | 85 exports.centerX = centerX; |
86 exports.centerY = centerY; | 86 exports.centerY = centerY; |
87 exports.querySelector = querySelector; | 87 exports.querySelector = querySelector; |
| 88 exports.main = main; |
| 89 exports.draw = draw; |
| 90 exports.SunflowerSeed = SunflowerSeed; |
88 exports.Circle = Circle; | 91 exports.Circle = Circle; |
89 exports.CirclePainter = CirclePainter; | 92 exports.CirclePainter = CirclePainter; |
90 exports.SunflowerSeed = SunflowerSeed; | |
91 exports.main = main; | |
92 exports.draw = draw; | |
93 })(sunflower || (sunflower = {})); | 93 })(sunflower || (sunflower = {})); |
OLD | NEW |