Skip to content

Commit c838f0b

Browse files
committed
ref version for okazz 220919a
1 parent ac64626 commit c838f0b

File tree

2 files changed

+108
-89
lines changed

2 files changed

+108
-89
lines changed

docs/okazz_220919a.html

+102-84
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,15 @@ <h2>6. Okazz 220919a</h2>
5757
<span class="hljs-keyword">var</span> colors = @[<span class="hljs-string">&quot;#f70640&quot;</span>, <span class="hljs-string">&quot;#f78e2c&quot;</span>, <span class="hljs-string">&quot;#fdd903&quot;</span>, <span class="hljs-string">&quot;#cae509&quot;</span>, <span class="hljs-string">&quot;#63be93&quot;</span>, <span class="hljs-string">&quot;#81cfe5&quot;</span>,
5858
<span class="hljs-string">&quot;#299dbf&quot;</span>, <span class="hljs-string">&quot;#38187d&quot;</span>, <span class="hljs-string">&quot;#a4459f&quot;</span>, <span class="hljs-string">&quot;#f654a9&quot;</span>, <span class="hljs-string">&quot;#2F0A30&quot;</span>]
5959
<span class="hljs-keyword">type</span>
60-
<span class="hljs-type">Form</span> = <span class="hljs-keyword">object</span>
60+
<span class="hljs-type">Form</span> = <span class="hljs-keyword">ref</span> <span class="hljs-keyword">object</span>
6161
x, y, x0, y0, r0, r, d0, d: <span class="hljs-built_in">float</span>
6262
a, t, r1, r2, r3: <span class="hljs-built_in">float</span>
6363
n: <span class="hljs-built_in">int</span>
6464
col: <span class="hljs-built_in">string</span>
6565

6666
<span class="hljs-keyword">var</span> forms: <span class="hljs-built_in">seq</span>[<span class="hljs-type">Form</span>]
67-
<span class="hljs-keyword">proc</span> initForm(x, y: <span class="hljs-built_in">float</span>): <span class="hljs-type">Form</span> =
67+
<span class="hljs-keyword">proc</span> newForm(x, y: <span class="hljs-built_in">float</span>): <span class="hljs-type">Form</span> =
68+
<span class="hljs-literal">result</span> = <span class="hljs-keyword">new</span> <span class="hljs-type">Form</span>
6869
<span class="hljs-literal">result</span>.x = x
6970
<span class="hljs-literal">result</span>.y = y
7071
<span class="hljs-literal">result</span>.x0 = x
@@ -92,7 +93,7 @@ <h2>6. Okazz 220919a</h2>
9293
ellipse(form.r * cos(theta), form.r * sin(theta), form.d, form.d)
9394
pop()
9495

95-
<span class="hljs-keyword">proc</span> move(form: <span class="hljs-keyword">var</span> <span class="hljs-type">Form</span>) =
96+
<span class="hljs-keyword">proc</span> move(form: <span class="hljs-type">Form</span>) =
9697
form.t += <span class="hljs-number">1</span>
9798
form.a = <span class="hljs-type">TAU</span> * sin(form.t * form.r1)
9899
form.r = form.r0 * sin(form.t * form.r2)
@@ -114,15 +115,15 @@ <h2>6. Okazz 220919a</h2>
114115
<span class="hljs-keyword">let</span> y = j * w + w / <span class="hljs-number">2</span>
115116
<span class="hljs-keyword">if</span> ((i + j) <span class="hljs-keyword">mod</span> <span class="hljs-number">2</span> == <span class="hljs-number">0</span>):
116117
<span class="hljs-keyword">for</span> k <span class="hljs-keyword">in</span> <span class="hljs-number">0</span> ..&lt; <span class="hljs-number">5</span>:
117-
forms.add(initForm(x, y))
118+
forms.add(newForm(x, y))
118119
background(<span class="hljs-number">0</span>)
119120

120121
<span class="hljs-keyword">proc</span> draw() {.exportc.} =
121122
translate(width / <span class="hljs-number">2</span>, height / <span class="hljs-number">2</span>)
122123
scale(<span class="hljs-number">1.1</span>)
123124
translate(-width / <span class="hljs-number">2</span>, -height / <span class="hljs-number">2</span>)
124125
background(<span class="hljs-number">255</span>)
125-
<span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> forms.mitems:
126+
<span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> forms:
126127
f.show()
127128
f.move()
128129
</code></pre>
@@ -313,7 +314,7 @@ <h2>6. Okazz 220919a</h2>
313314

314315
var objectID_620757154 = [0];
315316
var colors_452984861 = [[makeNimstrLit("#f70640"), makeNimstrLit("#f78e2c"), makeNimstrLit("#fdd903"), makeNimstrLit("#cae509"), makeNimstrLit("#63be93"), makeNimstrLit("#81cfe5"), makeNimstrLit("#299dbf"), makeNimstrLit("#38187d"), makeNimstrLit("#a4459f"), makeNimstrLit("#f654a9"), makeNimstrLit("#2F0A30")]];
316-
var forms_452984878 = [[]];
317+
var forms_452984879 = [[]];
317318

318319
function toFloat_452984854(n_452984855) {
319320
var result_452984856 = 0.0;
@@ -324,6 +325,20 @@ <h2>6. Okazz 220919a</h2>
324325

325326
}
326327

328+
function new_452984902() {
329+
var result_452984905 = null;
330+
331+
BeforeRet: do {
332+
var r_452984907 = null;
333+
r_452984907 = ({x: 0.0, y: 0.0, x0: 0.0, y0: 0.0, r0: 0.0, r: 0.0, d0: 0.0, d: 0.0, a: 0.0, t: 0.0, r1: 0.0, r2: 0.0, r3: 0.0, n: 0, col: []});
334+
result_452984905 = r_452984907;
335+
break BeforeRet;
336+
} while (false);
337+
338+
return result_452984905;
339+
340+
}
341+
327342
function isFatPointer_33557132(ti_33557133) {
328343
var result_33557134 = false;
329344

@@ -362,69 +377,70 @@ <h2>6. Okazz 220919a</h2>
362377

363378
}
364379

365-
function initForm_452984897(x_452984898, y_452984899) {
366-
var result_452984900 = ({x: 0.0, y: 0.0, x0: 0.0, y0: 0.0, r0: 0.0, r: 0.0, d0: 0.0, d: 0.0, a: 0.0, t: 0.0, r1: 0.0, r2: 0.0, r3: 0.0, n: 0, col: []});
367-
368-
result_452984900.x = x_452984898;
369-
result_452984900.y = y_452984899;
370-
result_452984900.x0 = x_452984898;
371-
result_452984900.y0 = y_452984899;
372-
result_452984900.r0 = random(10.0, 25.0);
373-
result_452984900.r = result_452984900.r0;
374-
result_452984900.d0 = ((random(15) * random()) + 5.0);
375-
result_452984900.d = result_452984900.d0;
376-
result_452984900.n = ((random(3.0, 13.0)) | 0);
377-
result_452984900.a = random(100);
378-
result_452984900.t = random(10000);
379-
result_452984900.r1 = random(0.01);
380-
result_452984900.r2 = random(0.01);
381-
result_452984900.r3 = random(0.01);
382-
result_452984900.col = nimCopy(null, random(colors_452984861[0]), NTI33554439);
383-
384-
return result_452984900;
380+
function newForm_452984898(x_452984899, y_452984900) {
381+
var result_452984901 = null;
382+
383+
result_452984901 = new_452984902();
384+
result_452984901.x = x_452984899;
385+
result_452984901.y = y_452984900;
386+
result_452984901.x0 = x_452984899;
387+
result_452984901.y0 = y_452984900;
388+
result_452984901.r0 = random(10.0, 25.0);
389+
result_452984901.r = result_452984901.r0;
390+
result_452984901.d0 = ((random(15) * random()) + 5.0);
391+
result_452984901.d = result_452984901.d0;
392+
result_452984901.n = ((random(3.0, 13.0)) | 0);
393+
result_452984901.a = random(100);
394+
result_452984901.t = random(10000);
395+
result_452984901.r1 = random(0.01);
396+
result_452984901.r2 = random(0.01);
397+
result_452984901.r3 = random(0.01);
398+
result_452984901.col = nimCopy(null, random(colors_452984861[0]), NTI33554439);
399+
400+
return result_452984901;
385401

386402
}
387403

388404
function setup() {
389405
createCanvas(900, 900);
390-
var c_452984985 = 18;
391-
var w_452984986 = (width / toFloat_452984854(c_452984985));
406+
var c_452985013 = 18;
407+
var w_452985014 = (width / toFloat_452984854(c_452985013));
392408
Label1: do {
393-
var i_452984991 = 0;
394-
var i_452985027 = 0;
409+
var i_452985019 = 0;
410+
var i_452985046 = 0;
395411
Label2: do {
396412
Label3: while (true) {
397-
if (!(i_452985027 < c_452984985)) break Label3;
398-
i_452984991 = i_452985027;
413+
if (!(i_452985046 < c_452985013)) break Label3;
414+
i_452985019 = i_452985046;
399415
Label4: do {
400-
var j_452984996 = 0;
401-
var i_452985025 = 0;
416+
var j_452985024 = 0;
417+
var i_452985044 = 0;
402418
Label5: do {
403419
Label6: while (true) {
404-
if (!(i_452985025 < c_452984985)) break Label6;
405-
j_452984996 = i_452985025;
406-
var x_452984997 = ((toFloat_452984854(i_452984991) * w_452984986) + (w_452984986 / 2.0));
407-
var y_452984998 = ((toFloat_452984854(j_452984996) * w_452984986) + (w_452984986 / 2.0));
408-
if ((Math.trunc((i_452984991 + j_452984996) % 2) == 0)) {
420+
if (!(i_452985044 < c_452985013)) break Label6;
421+
j_452985024 = i_452985044;
422+
var x_452985025 = ((toFloat_452984854(i_452985019) * w_452985014) + (w_452985014 / 2.0));
423+
var y_452985026 = ((toFloat_452984854(j_452985024) * w_452985014) + (w_452985014 / 2.0));
424+
if ((Math.trunc((i_452985019 + j_452985024) % 2) == 0)) {
409425
Label7: do {
410-
var k_452985003 = 0;
411-
var i_452985023 = 0;
426+
var k_452985031 = 0;
427+
var i_452985042 = 0;
412428
Label8: do {
413429
Label9: while (true) {
414-
if (!(i_452985023 < 5)) break Label9;
415-
k_452985003 = i_452985023;
416-
forms_452984878[0].push(initForm_452984897(x_452984997, y_452984998));;
417-
i_452985023 += 1;
430+
if (!(i_452985042 < 5)) break Label9;
431+
k_452985031 = i_452985042;
432+
forms_452984879[0].push(newForm_452984898(x_452985025, y_452985026));;
433+
i_452985042 += 1;
418434
}
419435
} while (false);
420436
} while (false);
421437
}
422438

423-
i_452985025 += 1;
439+
i_452985044 += 1;
424440
}
425441
} while (false);
426442
} while (false);
427-
i_452985027 += 1;
443+
i_452985046 += 1;
428444
}
429445
} while (false);
430446
} while (false);
@@ -441,22 +457,22 @@ <h2>6. Okazz 220919a</h2>
441457

442458
}
443459

444-
function show_452984922(form_452984923) {
460+
function show_452984950(form_452984951) {
445461
noStroke();
446-
fill(toJSStr(form_452984923.col));
462+
fill(toJSStr(form_452984951.col));
447463
push();
448-
translate(form_452984923.x, form_452984923.y);
449-
rotate(form_452984923.a);
464+
translate(form_452984951.x, form_452984951.y);
465+
rotate(form_452984951.a);
450466
Label1: do {
451-
var i_452984935 = 0;
452-
var i_452985088 = 0;
467+
var i_452984963 = 0;
468+
var i_452985098 = 0;
453469
Label2: do {
454470
Label3: while (true) {
455-
if (!(i_452985088 < form_452984923.n)) break Label3;
456-
i_452984935 = i_452985088;
457-
var theta_452984944 = map(i_452984935, 0.0, toFloat_452984854(form_452984923.n), 0.0, TAU);
458-
ellipse((form_452984923.r * cos(theta_452984944)), (form_452984923.r * sin(theta_452984944)), form_452984923.d, form_452984923.d);
459-
i_452985088 += 1;
471+
if (!(i_452985098 < form_452984951.n)) break Label3;
472+
i_452984963 = i_452985098;
473+
var theta_452984972 = map(i_452984963, 0.0, toFloat_452984854(form_452984951.n), 0.0, TAU);
474+
ellipse((form_452984951.r * cos(theta_452984972)), (form_452984951.r * sin(theta_452984972)), form_452984951.d, form_452984951.d);
475+
i_452985098 += 1;
460476
}
461477
} while (false);
462478
} while (false);
@@ -471,25 +487,25 @@ <h2>6. Okazz 220919a</h2>
471487

472488
}
473489

474-
function HEX2DHEX3D_452984976(x_452984978, x_452984978_Idx, y_452984979) {
475-
x_452984978[x_452984978_Idx] = (x_452984978[x_452984978_Idx] - y_452984979);
490+
function HEX2DHEX3D_452985004(x_452985006, x_452985006_Idx, y_452985007) {
491+
x_452985006[x_452985006_Idx] = (x_452985006[x_452985006_Idx] - y_452985007);
476492

477493

478494
}
479495

480-
function move_452984957(form_452984958) {
481-
HEX2BHEX3D_855640050(form_452984958, "t", 1.0);
482-
form_452984958.a = (TAU * sin((form_452984958.t * form_452984958.r1)));
483-
form_452984958.r = (form_452984958.r0 * sin((form_452984958.t * form_452984958.r2)));
484-
form_452984958.d = (form_452984958.d0 * sin((form_452984958.t * form_452984958.r3)));
485-
HEX2BHEX3D_855640050(form_452984958, "x", 0.5);
486-
HEX2DHEX3D_452984976(form_452984958, "y", 0.5);
487-
if ((width < form_452984958.x)) {
488-
form_452984958.x = 0.0;
496+
function move_452984985(form_452984986) {
497+
HEX2BHEX3D_855640050(form_452984986, "t", 1.0);
498+
form_452984986.a = (TAU * sin((form_452984986.t * form_452984986.r1)));
499+
form_452984986.r = (form_452984986.r0 * sin((form_452984986.t * form_452984986.r2)));
500+
form_452984986.d = (form_452984986.d0 * sin((form_452984986.t * form_452984986.r3)));
501+
HEX2BHEX3D_855640050(form_452984986, "x", 0.5);
502+
HEX2DHEX3D_452985004(form_452984986, "y", 0.5);
503+
if ((width < form_452984986.x)) {
504+
form_452984986.x = 0.0;
489505
}
490506

491-
if ((form_452984958.y < 0.0)) {
492-
form_452984958.y = height;
507+
if ((form_452984986.y < 0.0)) {
508+
form_452984986.y = height;
493509
}
494510

495511

@@ -502,16 +518,17 @@ <h2>6. Okazz 220919a</h2>
502518
translate((-(width) / 2.0), (-(height) / 2.0));
503519
background(255);
504520
Label1: do {
505-
var f_452985063 = null;
506-
var i_452985084 = 0;
507-
var L_452985085 = (forms_452984878[0]).length;
521+
var f_452985082 = null;
522+
var f_452985082_Idx = 0;
523+
var i_452985094 = 0;
524+
var L_452985095 = (forms_452984879[0]).length;
508525
Label2: do {
509526
Label3: while (true) {
510-
if (!(i_452985084 < L_452985085)) break Label3;
511-
f_452985063 = forms_452984878[0][i_452985084];
512-
show_452984922(f_452985063);
513-
move_452984957(f_452985063);
514-
i_452985084 += 1;
527+
if (!(i_452985094 < L_452985095)) break Label3;
528+
f_452985082 = forms_452984879[0]; f_452985082_Idx = i_452985094;
529+
show_452984950(f_452985082[f_452985082_Idx]);
530+
move_452984985(f_452985082[f_452985082_Idx]);
531+
i_452985094 += 1;
515532
}
516533
} while (false);
517534
} while (false);
@@ -634,15 +651,16 @@ <h2>6. Okazz 220919a</h2>
634651
<span class="hljs-keyword">var</span> colors = @[<span class="hljs-string">&quot;#f70640&quot;</span>, <span class="hljs-string">&quot;#f78e2c&quot;</span>, <span class="hljs-string">&quot;#fdd903&quot;</span>, <span class="hljs-string">&quot;#cae509&quot;</span>, <span class="hljs-string">&quot;#63be93&quot;</span>, <span class="hljs-string">&quot;#81cfe5&quot;</span>, <span class="hljs-string">&quot;#299dbf&quot;</span>, <span class="hljs-string">&quot;#38187d&quot;</span>, <span class="hljs-string">&quot;#a4459f&quot;</span>, <span class="hljs-string">&quot;#f654a9&quot;</span>, <span class="hljs-string">&quot;#2F0A30&quot;</span>];
635652

636653
<span class="hljs-keyword">type</span>
637-
<span class="hljs-type">Form</span> = <span class="hljs-keyword">object</span>
654+
<span class="hljs-type">Form</span> = <span class="hljs-keyword">ref</span> <span class="hljs-keyword">object</span>
638655
x, y, x0, y0, r0, r, d0, d: <span class="hljs-built_in">float</span>
639656
a, t, r1, r2, r3: <span class="hljs-built_in">float</span>
640657
n: <span class="hljs-built_in">int</span>
641658
col: <span class="hljs-built_in">string</span>
642659

643660
<span class="hljs-keyword">var</span> forms: <span class="hljs-built_in">seq</span>[<span class="hljs-type">Form</span>]
644661

645-
<span class="hljs-keyword">proc</span> initForm(x, y: <span class="hljs-built_in">float</span>): <span class="hljs-type">Form</span> =
662+
<span class="hljs-keyword">proc</span> newForm(x, y: <span class="hljs-built_in">float</span>): <span class="hljs-type">Form</span> =
663+
<span class="hljs-literal">result</span> = <span class="hljs-keyword">new</span> <span class="hljs-type">Form</span>
646664
<span class="hljs-literal">result</span>.x = x
647665
<span class="hljs-literal">result</span>.y = y
648666
<span class="hljs-literal">result</span>.x0 = x
@@ -670,7 +688,7 @@ <h2>6. Okazz 220919a</h2>
670688
ellipse(form.r * cos(theta), form.r * sin(theta), form.d, form.d)
671689
pop()
672690

673-
<span class="hljs-keyword">proc</span> move(form: <span class="hljs-keyword">var</span> <span class="hljs-type">Form</span>) =
691+
<span class="hljs-keyword">proc</span> move(form: <span class="hljs-type">Form</span>) =
674692
form.t += <span class="hljs-number">1</span>
675693
form.a = <span class="hljs-type">TAU</span> * sin(form.t * form.r1);
676694
form.r = form.r0 * sin(form.t * form.r2);
@@ -693,7 +711,7 @@ <h2>6. Okazz 220919a</h2>
693711
<span class="hljs-keyword">let</span> y = j * w + w / <span class="hljs-number">2</span>;
694712
<span class="hljs-keyword">if</span> ((i + j) <span class="hljs-keyword">mod</span> <span class="hljs-number">2</span> == <span class="hljs-number">0</span>):
695713
<span class="hljs-keyword">for</span> k <span class="hljs-keyword">in</span> <span class="hljs-number">0</span> ..&lt; <span class="hljs-number">5</span>:
696-
forms.add(initForm(x, y))
714+
forms.add(newForm(x, y))
697715
background(<span class="hljs-number">0</span>)
698716

699717
<span class="hljs-keyword">proc</span> draw {.exportc.} =
@@ -702,7 +720,7 @@ <h2>6. Okazz 220919a</h2>
702720
scale(<span class="hljs-number">1.1</span>)
703721
translate(-width / <span class="hljs-number">2</span>, -height / <span class="hljs-number">2</span>)
704722
background(<span class="hljs-number">255</span>)
705-
<span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> forms.mitems:
723+
<span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> forms:
706724
f.show()
707725
f.move()
708726

docsrc/okazz_220919a.nim

+6-5
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,16 @@ nbJsFromCode:
103103
var colors = @["#f70640", "#f78e2c", "#fdd903", "#cae509", "#63be93", "#81cfe5", "#299dbf", "#38187d", "#a4459f", "#f654a9", "#2F0A30"];
104104

105105
type
106-
Form = object
106+
Form = ref object
107107
x, y, x0, y0, r0, r, d0, d: float
108108
a, t, r1, r2, r3: float
109109
n: int
110110
col: string
111111

112112
var forms: seq[Form]
113113

114-
proc initForm(x, y: float): Form =
114+
proc newForm(x, y: float): Form =
115+
result = new Form
115116
result.x = x
116117
result.y = y
117118
result.x0 = x
@@ -139,7 +140,7 @@ nbJsFromCode:
139140
ellipse(form.r * cos(theta), form.r * sin(theta), form.d, form.d)
140141
pop()
141142

142-
proc move(form: var Form) =
143+
proc move(form: Form) =
143144
form.t += 1
144145
form.a = TAU * sin(form.t * form.r1);
145146
form.r = form.r0 * sin(form.t * form.r2);
@@ -162,7 +163,7 @@ nbJsFromCode:
162163
let y = j * w + w / 2;
163164
if ((i + j) mod 2 == 0):
164165
for k in 0 ..< 5:
165-
forms.add(initForm(x, y))
166+
forms.add(newForm(x, y))
166167
background(0)
167168

168169
proc draw {.exportc.} =
@@ -171,7 +172,7 @@ nbJsFromCode:
171172
scale(1.1)
172173
translate(-width / 2, -height / 2)
173174
background(255)
174-
for f in forms.mitems:
175+
for f in forms:
175176
f.show()
176177
f.move()
177178

0 commit comments

Comments
 (0)