From ad872f83c51838a850aa317309cd60f7a9246058 Mon Sep 17 00:00:00 2001 From: Pomax Date: Sat, 19 Sep 2020 14:16:00 -0700 Subject: [PATCH] code comments --- docs/chapters/control/lerp.js | 39 ++++-- docs/chapters/decasteljau/decasteljau.js | 62 +++++++-- docs/chapters/explanation/circle.js | 31 +++-- docs/chapters/extended/extended.js | 19 ++- docs/chapters/flattening/flatten.js | 3 + docs/chapters/splitting/splitting.js | 11 +- docs/chapters/weightcontrol/rational.js | 10 +- .../56533f47e73ad9fea08fa9bb3f597d49.png | Bin 11020 -> 11020 bytes .../5ce02cbdbc47585c588f2656d5161a32.png | Bin 11548 -> 11489 bytes .../fe2663b205d14c157a5a02bfbbd55987.png | Bin 12343 -> 12348 bytes .../5801de8227960faa9bcbae578f78c2a3.png | Bin 12174 -> 0 bytes .../8c2eb77bfd11231393a77e72f03ebe83.png | Bin 12374 -> 0 bytes .../331f3f89b1dac9e1e60f61c5d95f9e5b.png | Bin 13754 -> 0 bytes .../da768b84c91262bab8ab36f895e8569b.png | Bin 13703 -> 0 bytes ...g => 4b206c16ccf8a06a0834fe9e5254560c.png} | Bin ...g => be82cd31c4892a8f0582b1b5285231d9.png} | Bin ...g => f700cd59e6021b0e06b819105ec931da.png} | Bin ...g => df92f529841f39decf9ad62b0967855a.png} | Bin ...g => 959762e39ae32407e914a687d804ff3a.png} | Bin .../2d17acb381ebdd28f0ff43be00d723c4.png | Bin 0 -> 10944 bytes .../37948bde4bf0d25bde85f172bf55b9fb.png | Bin 0 -> 9201 bytes .../391a61142c56b79260680aefb08cd9c4.png | Bin 9208 -> 0 bytes .../baeceec6e1587794b8b275a90d5d85e9.png | Bin 10945 -> 0 bytes ...g => 0e0e4a2ee46bd89bcfde9f75cfe43292.png} | Bin ...g => 6813bfc608aea11df1dda444b9f18123.png} | Bin .../c37918c649befad06de255a6415faf29.png | Bin 11726 -> 11104 bytes ...g => fce5eb16dfcd103797c5e17bd77f1437.png} | Bin ...g => 3d71e2b9373684eebcb0dc8563f70b18.png} | Bin docs/index.html | 24 ++-- docs/ja-JP/index.html | 24 ++-- docs/js/custom-element/api/README.md | 120 +++++++++++++++--- docs/js/custom-element/api/base-api.js | 38 +++--- docs/js/custom-element/api/graphics-api.js | 2 +- .../news/{2020-09-20.html => 2020-09-18.html} | 8 +- docs/news/{2020-09-20.md => 2020-09-18.md} | 0 ...020-09-21-draft.md => 2020-09-19-draft.md} | 0 docs/news/index.html | 2 +- docs/news/rss.xml | 6 +- docs/zh-CN/index.html | 24 ++-- 39 files changed, 306 insertions(+), 117 deletions(-) delete mode 100644 docs/images/chapters/circles/5801de8227960faa9bcbae578f78c2a3.png delete mode 100644 docs/images/chapters/circles/8c2eb77bfd11231393a77e72f03ebe83.png delete mode 100644 docs/images/chapters/circles_cubic/331f3f89b1dac9e1e60f61c5d95f9e5b.png delete mode 100644 docs/images/chapters/circles_cubic/da768b84c91262bab8ab36f895e8569b.png rename docs/images/chapters/control/{fca18b2602929f80e68d8964832f0f44.png => 4b206c16ccf8a06a0834fe9e5254560c.png} (100%) rename docs/images/chapters/control/{989f4ca49d7099802cc0345dbeddca8c.png => be82cd31c4892a8f0582b1b5285231d9.png} (100%) rename docs/images/chapters/control/{2a0635829051977b265b64ef204f718e.png => f700cd59e6021b0e06b819105ec931da.png} (100%) rename docs/images/chapters/decasteljau/{715d1d2eecc762d6bc1470954b145018.png => df92f529841f39decf9ad62b0967855a.png} (100%) rename docs/images/chapters/explanation/{6d2f915735ebdc05e42c0ea7adc85343.png => 959762e39ae32407e914a687d804ff3a.png} (100%) create mode 100644 docs/images/chapters/extended/2d17acb381ebdd28f0ff43be00d723c4.png create mode 100644 docs/images/chapters/extended/37948bde4bf0d25bde85f172bf55b9fb.png delete mode 100644 docs/images/chapters/extended/391a61142c56b79260680aefb08cd9c4.png delete mode 100644 docs/images/chapters/extended/baeceec6e1587794b8b275a90d5d85e9.png rename docs/images/chapters/flattening/{e2bb7113d5cda2e3fd29bbc54fbe8841.png => 0e0e4a2ee46bd89bcfde9f75cfe43292.png} (100%) rename docs/images/chapters/flattening/{3deec756c96e53127cd1d615c61043ae.png => 6813bfc608aea11df1dda444b9f18123.png} (100%) rename docs/images/chapters/splitting/{891133c5f0e140b8c7e179af04e497e0.png => fce5eb16dfcd103797c5e17bd77f1437.png} (100%) rename docs/images/chapters/weightcontrol/{be18e8119472af796329f3e2159bdf94.png => 3d71e2b9373684eebcb0dc8563f70b18.png} (100%) rename docs/news/{2020-09-20.html => 2020-09-18.html} (97%) rename docs/news/{2020-09-20.md => 2020-09-18.md} (100%) rename docs/news/{2020-09-21-draft.md => 2020-09-19-draft.md} (100%) diff --git a/docs/chapters/control/lerp.js b/docs/chapters/control/lerp.js index 68ebc354..553b110e 100644 --- a/docs/chapters/control/lerp.js +++ b/docs/chapters/control/lerp.js @@ -5,21 +5,23 @@ setup() { const degree = this.parameters.degree ?? 3; if (degree === 3) { - this.f = [ + // there are three interpolation functions for quadratic curves + this.interpolationFunctions = [ t => ({ x: t * w, y: h * (1-t) ** 2 }), t => ({ x: t * w, y: h * 2 * (1-t) * t }), t => ({ x: t * w, y: h * t ** 2 }) ]; } else if (degree === 4) { - this.f = [ + // there are four interpolation functions for cubic curves + this.interpolationFunctions = [ t => ({ x: t * w, y: h * (1-t) ** 3 }), t => ({ x: t * w, y: h * 3 * (1-t) ** 2 * t }), t => ({ x: t * w, y: h * 3 * (1-t) * t ** 2 }), t => ({ x: t * w, y: h * t ** 3}) ]; } else { - this.triangle = [[1], [1,1]]; - this.f = [...new Array(degree + 1)].map((_,i) => { + // there are many interpolations functions for more complex curves + this.interpolationFunctions = [...new Array(degree + 1)].map((_,i) => { return t => ({ x: t * w, y: h * binomial(degree,i) * (1-t) ** (degree-i) * t ** (i) @@ -27,7 +29,11 @@ setup() { }); } - this.s = this.f.map(f => plot(f, 0, 1, degree*5) ); + // Build the graph for each interpolation function by plotting them, + // and capturing the resulting Shape object that yields. We'll draw + // those in the draw() function. + this.shapes = this.interpolationFunctions.map(f => plot(f, 0, 1, degree*5) ); + setSlider(`.slide-control`, `position`, 0) } @@ -36,39 +42,48 @@ draw() { setFill(`black`); setStroke(`black`); + // In order to plot things nicely, lets scale + // down, and plot things in a graph: scale(0.8, 0.9); translate(40,20); drawAxes(`t`, 0, 1, `S`, `0%`, `100%`); noFill(); - this.s.forEach((s,i) => { + // draw each of the function plots we built in setup() + this.shapes.forEach((shape,i) => { + // first, draw that plot's mid-line setStroke(randomColor(0.2)); line( - i/(this.s.length-1) * this.width, 0, - i/(this.s.length-1) * this.width, this.height + i/(this.shapes.length-1) * this.width, 0, + i/(this.shapes.length-1) * this.width, this.height ) + // and then draw the plot itself setStroke(randomColor(1.0, false )); - drawShape(s); + drawShape(shape); }) + // depending on the slider, also highlight all values at t=... this.drawHighlight(); } drawHighlight() { const t = this.position; + // 0 and 1 are not meaningful to look at. They're just "100% start/end" if (t===0) return; if (t===1) return; + // draw a little highlighting bar that runs frop top to bottom noStroke(); setFill(`rgba(255,0,0,0.3)`); rect(t*this.width - 2, 0, 5, this.height); - const p = this.f.map(f => f(t)); - + // then calculate each interpolation point for our `t` value + // and draw it, with a label that says how much it contributes + const points = this.interpolationFunctions.map(f => f(t)); setFill(`black`); - p.forEach(p => { + points.forEach(p => { circle(p.x, p.y, 3); text(`${ round(100 * p.y/this.height) }%`, p.x + 10, p.y); }); diff --git a/docs/chapters/decasteljau/decasteljau.js b/docs/chapters/decasteljau/decasteljau.js index 35cdb037..d56cbac8 100644 --- a/docs/chapters/decasteljau/decasteljau.js +++ b/docs/chapters/decasteljau/decasteljau.js @@ -1,34 +1,80 @@ +let curve; + setup() { - this.curve = new Bezier(this, 90, 200, 25, 100, 220, 40, 210, 240); - setMovable(this.curve.points); + curve = new Bezier(this, 90, 200, 25, 100, 220, 40, 210, 240); + setMovable(curve.points); setSlider(`.slide-control`, `position`, 0); } draw() { clear(); - const curve = this.curve; curve.drawSkeleton(); curve.drawCurve(); + noFill(); setStroke("rgb(200,100,100)"); - let t = this.position; + const t = this.position; if (0 < t && t < 1) { - curve.drawStruts(t); + this.drawStruts(t); } curve.drawPoints(); if (0 < t && t < 1) { - let p = curve.get(t); + const p = curve.get(t); circle(p.x, p.y, 5); - let perc = (t*100)|0; - let rt = perc/100; + const perc = (t*100)|0; + const rt = perc/100; text(`Sequential interpolation for ${perc}% (t=${rt})`, 10, 15); } } +drawStruts(t) { + // get all the "de Casteljau" points + const p = curve.getStrutPoints(t); + + // and then draw them + let s = curve.points.length; + let n = curve.points.length; + while (--n > 1) { + start(); + for (let i = 0; i < n; i++) { + let pt = p[s + i]; + vertex(pt.x, pt.y); + circle(pt.x, pt.y, 5); + } + end(); + s += n; + } +} + +getStrutPoints(t) { + const mt = 1 - t; + + // run de Casteljau's algorithm, starting with the base points + const points = curve.points.map((p) => new Vector(p)); + + let s = 0; + let n = p.length + 1; + + // Every iteration will interpolate between `n` points, + // as well as decrease that `n` by one. So 4 points yield + // 3 new points, which yield 2 new points, which yields 1 + // final point that is our on-curve point for `t` + while (--n > 1) { + let list = points.slice(s, s + n); + for (let i = 0, e = list.length - 1; i < e; i++) { + let pt = list[i + 1].subtract(list[i + 1].subtract(list[i]).scale(mt)); + points.push(pt); + } + s += n; + } + + return points; +} + onMouseMove() { redraw(); } diff --git a/docs/chapters/explanation/circle.js b/docs/chapters/explanation/circle.js index 11ede153..09f451ac 100644 --- a/docs/chapters/explanation/circle.js +++ b/docs/chapters/explanation/circle.js @@ -8,29 +8,36 @@ draw() { const dim = this.height, w = dim, h = dim, + // midpoints w2 = w/2, h2 = h/2, - w4 = w2/2, - h4 = h2/2; + // quarterpoints + q = dim/4; + // draw axes with (0,0) in the middle of the graphic setStroke(`black`); line(0, h2, w, h2); line(w2, 0, w2, h); - var offset = {x:w2, y:h2}; - - for(let t=0, p, mod; t<=this.steps; t+=0.1) { + for(let t=0, p, step=0.1; t<=this.steps; t+=step) { + // create a point at distance 'q' from the midpoint p = { - x: w2 + w4 * cos(t), - y: h2 + h4 * sin(t) + x: w2 + q * cos(t), + y: h2 + q * sin(t) }; + + // and draw it. circle(p.x, p.y, 1); - mod = t % 1; - if(mod >= 0.9) { - text(`t = ${ round(t) }`, - w2 + 1.25 * w4 * cos(t) - 10, - h2 + 1.25 * h4 * sin(t) + 10 + // then add a text label too, but only "near" each integer + // step of `t`. Since we're using floating point numbers, + // we can't rely on x * 1/x to actually be x (if only life + // were that easy) so we need to check whether `t` is "near" + // an integer value instead. + if(approx(t % 1, 1, step)) { + text(`t = ${round(t)}`, + w2 + 1.25 * q * cos(t) - 10, + h2 + 1.25 * q * sin(t) + 10 ); circle(p.x, p.y, 2); } diff --git a/docs/chapters/extended/extended.js b/docs/chapters/extended/extended.js index ab8118bd..17a99fe8 100644 --- a/docs/chapters/extended/extended.js +++ b/docs/chapters/extended/extended.js @@ -8,20 +8,27 @@ setup() { draw() { clear(); - curve.drawCurve(); - curve.drawSkeleton(); - let step=0.05, min=-10, max=10; + // let's draw the curve from -10 to 10, instead of 0 to 1 + setStroke(`skyblue`); + let min=-10, max=10, step=0.05; + + // calculate the very first point let pt = curve.get(min - step), pn; - setStroke(`skyblue`); - for (let t=min; t<=step; t+=step) { + // then draw the section from -10 to 0 + for (let t=min; t circle(p.x, p.y, 3)); + noFill(); setStroke(`red`); circle(p.x, p.y, 3); + setFill(`black`) text(`The ${halfLabel} half`, 10, 15); } diff --git a/docs/chapters/weightcontrol/rational.js b/docs/chapters/weightcontrol/rational.js index 3814c902..a015a507 100644 --- a/docs/chapters/weightcontrol/rational.js +++ b/docs/chapters/weightcontrol/rational.js @@ -3,9 +3,15 @@ let curve, ratios=[1, 1, 1, 1]; setup() { curve = Bezier.defaultCubic(this); setMovable(curve.points); - curve.points.forEach((p,i) => { + for (let i=0; i<4; i++) { + // Set up a slider, but in a way that does not tie it to a variable + // that is exposed through `this`, because we want to store its value + // in the "ratios" array we already declared globally. + // + // To make that happen, we tell the slider logic that it should be + // calling the setRatio function instead when the slider moves. setSlider(`.ratio-${i+1}`, `!ratio-${i+1}`, 1, v => this.setRatio(i,v)) - }); + } } setRatio(i, v) { diff --git a/docs/images/chapters/arclength/56533f47e73ad9fea08fa9bb3f597d49.png b/docs/images/chapters/arclength/56533f47e73ad9fea08fa9bb3f597d49.png index 325512d2671e34eff91bd1c4c44b5dbe690c551e..a1586887771c05853eef46ad044c442a7450195c 100644 GIT binary patch literal 11020 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 literal 11020 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 diff --git a/docs/images/chapters/arclength/5ce02cbdbc47585c588f2656d5161a32.png b/docs/images/chapters/arclength/5ce02cbdbc47585c588f2656d5161a32.png index 5baa02237775cd4c65493a74e9f35625c54a70ab..411514d224547142695bacbefe6a3259a58bfa54 100644 GIT binary patch literal 11489 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 TCw2j}J40T`tIJi%n1}vfzv&qa diff --git a/docs/images/chapters/arclength/fe2663b205d14c157a5a02bfbbd55987.png b/docs/images/chapters/arclength/fe2663b205d14c157a5a02bfbbd55987.png index fe3bac3a43de92898257504594bfde3231ef60d1..54c76271e477d9089fdf020021ef2dd8cb90e995 100644 GIT binary patch literal 12348 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 literal 12343 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�F8C-FrW)kU(s} ziaOeA3nFmX$S?Gvr2e(A<9Ljo!I!!^KazQ&{{iaLuw?Aqer^);`y-B7vDM)^n6fkX z`W9!SQkl$gaw;lvIOsP^MKQ-Da|3FtSw|m0II)>me4p;c&DSWJwlrZ@DYzZKZ}+b% z1?87mkdKNgf`rBPO_l?qR+INJ^}Uz+IlTo+1x(rqH&*U>uind}Cdu>*N(0`yjJ^AiOVThxRp3FUx<2e3xU3H zB*6;{ny5_InOg3AcYxUGQ=hCbdO$2Th1I~G- zt<4hbkQ9CQi4;rP^e^7g$Hd~MsA&T)f&s~e%Ni^k!$qlsHLLOM393@yimpzKh9O$D z50;kRXbq+lri;#$DT_&ALE;>br%=noaz=9^2Lm4GE|2(oXwzRfWSs$AmRtS++?Au@ zAe!JaK(%1zkbpoh?3QB_*?R;4v|k6!&rJ*Szj3wz?hxDLz7Wio5pd~KrTE=kt=_xxmXJXLFTIP;C;=P~uuqw;?I7Waj3m~cRc z1`xK#Xouq|7FV=Ynfk~`mZ$ScdZ)VHy#*f}>&ey>e)WrW=7WoeoNp+*vt^L>{=A|K zP+Dm$$iT?=IPFV1iP_7uAto|bK*EMG(rTVR%(hsV=WE{_`t4I~OCzqUcCyVwIKMU7 z7DB}Or0Kk8HfcB;$7K_GU0OrxjtoXg(2#_x0fNi%V!XgRaY-4<#@&${zXQ$aKHSPX zXX{Yk6Wc=j$6p_yP#K|L76k3?xo)MzO#f=r-T8=vV&)}tL%+~`3lv`lihc&UA(j`@ z*@4>I^!zEl6y+9r#^?|DAX<`l)Q48$ zp6lk@MmJk$6==GMWcrzU$ye>%*9xBivdh`2Z<(DvHkHuR6V=i1g}24YNue$0m01A+ zd~@8Nx<-|m%oM0A{!reKTj3DIjhAyIaWIuUKaMC0^<6SWz4D)WeF;+6?1PvUe9R%tO)U*;u)Xqwx}Z zVVF}i-C729izDXx$Fty2kLX_bPXM0E`**$at;n~f1W@^6Q~X0FcVoW9JKP40!aZ!d z@|7qJMuSNrfNmM}NTdVm!T(HP{om-W|Knlcb8gkn5H>)s0Z5)T02MMIKo%8NG7A4c z>AC;ob^mXo@PA+A2ufK5sGTFz(*BV=YhoP%&>8j43SaQ!|6W!8?+g5+L0`SWnF&Ev VQQ=KI0|fS<*RsmcGHJt4{{z4ytUv$& diff --git a/docs/images/chapters/circles/8c2eb77bfd11231393a77e72f03ebe83.png b/docs/images/chapters/circles/8c2eb77bfd11231393a77e72f03ebe83.png deleted file mode 100644 index dff2fb43b97f6cddd769028f4c405e786ee2ac4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12374 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 AlmGw# diff --git a/docs/images/chapters/circles_cubic/331f3f89b1dac9e1e60f61c5d95f9e5b.png b/docs/images/chapters/circles_cubic/331f3f89b1dac9e1e60f61c5d95f9e5b.png deleted file mode 100644 index 697c2f316fe92ef53769df947783b9501ed75794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13754 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 diff --git a/docs/images/chapters/circles_cubic/da768b84c91262bab8ab36f895e8569b.png b/docs/images/chapters/circles_cubic/da768b84c91262bab8ab36f895e8569b.png deleted file mode 100644 index 53a76dc3ae2fef36a47b7acf5834ae83333ffd96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13703 zcmeIZby$?q7cM%0fS}Td(%q$$G}1^ZAxMgn(hf3oNeW0ygM=X6IfQf#AT2R;$IxAO z^E>ys&pG$r6MvjP&!fyYeC%)6+H0+Mt@VB(uhkSD;gaJ*Adp8&in1CI2wLRb&wVU# z$ER5k0WMe{loezlw|D=3Hs;1aAhZxA*_T=_DLY7*hnCq?=e}_?9p?RvY_yCA8o%I* zZ{FN{!1Gwv$Wu<|&C8Cs#c%N1;`##gZ{HrdztedsWy6{o`slCROFEyQkyvOk5NV>} zz6NhGMk1wFL=U4y@9|2EdUp>({FE`#KzL1T&DAeOEti;#B=;`Tyuu93wwi983yShYLuV2p}9m%oM-_WwKVEdT&Cr!?T1j9c2 z2L-{Mdfc3y1>d}RL+$<^^lo3GvmX@45wV3osB^3}h;$S2XZmk@%Y+aT5-R^M4*kE{ zxG02M1LN*Pv?!$5Enf$Gzq^Q1wG#dBAM8Jy@?XzvT$U`)_wFNgTvkVXtN?t!yQJco zg#33m^}l}pe=33hVPose&{3(o4>jw|g0#&s@cr(h7F7EGNN}+fjuwTbqpP@ga~&Cb zFEPi7jJc3$aI!RDqmw}JEc7uaC|z$`>(0+h)JXzyqYH8YJ8Z@{q^!) z;<>k%1mz3J)29yekT=-)(z*$G6V+T!oA;X+Fpk!9@>7o$|3h+>}WIfulnEf7~Vw1LY zalAKW9hssM)8yHoHj?m+S!)|tE=muq*gZS@PZv$w=2)ruBPW!Nm+wHLjNR@mzxBib z3U5ncZD7@QnDKBwih;!Qg6;bwiuY6eP}Ir{bm8i-e11?>D@5lw#MF!cRTJ_(Z2WnJIJ+S7X0Z+n!WXySArXmE0ePqn^8e&@sY^H?|u% z4E_f+{SgmWzklb!ih0S>u(HXl*o!UB`#5EA(cPFxh|tXY*;mR7p*-&=pF@kYmC1klqzm4?G(AsLXUiz-`+887(x)>%=_{GhjBkSPiI7c!y`1L0zqg*b~(`R4nD z`X}5jocI=%v#Hsn+7Dm7vaGau`jEn0?Mhy*<#etsh^DoJ?ABSJ#^rmP2_9y#9_E~< z1$Us>u2@A^jcJJR5!0dxF2Q~ZgTnh8kM)_vzwt(X?YM0a~#BXG{8$irxl)zIj_)L7tOZK$u-htYWXkaBcio_(y{e!gS-uV=w$f63(9 z?ZDV`Y&+3u(-hDCSMD@2^$ZO&ST{ZqhtDF3xYopEb#t>L)MW2HTr_5mje@^By9?WG%(=kYQKZ*M(o)%`J*?doFE z^Nz4}BF7kXSp(P^@6`&=-{$7TMUSnw3F7e2CwlvIQBkYz@d=hWIlB}1tB7Z7WwHj@ z0z)gyuat2-kF{IZ26Iifb#Zqah%G!CkcMM$DLrEG7YtuZ>!4PZpGX5>NV$E13CrNB z6s^dS4X66gGT!gnbdF~VYittF`znnkp$o1tWErXNQ>cYw7*# zb?IKu=XP<38ww=H4)fi}=^4hR8>drf=gQh1-Zq?lfQv>4{w<>L*h4GSHBl>XK4<3C zeb4Mpa!!?s5taW+xxb3i`|N8Sfy1S9fC6p(_H!uH<w`|NG6Vh4mQwVMUH`6}lgK`y=^j*N=bY~i}}W8j6FeYQf2PC`PLdHM0B4L52{!I zvwtE^Zsgw2S;XO`H)PoqA-xvOJ+{hJ384qhhee?zv)V2f$qe51Z%ul z0PXYnN@Th{OkwdQE`fJc%*UJI(C>oKcLKJbU<&l|BRP8mq6E}-Uh+^VSfiLM+9LkR zZV=x9FN5*TF;D+bj#(DYhqEpiSPy+F2K+Fvw?QK*w8gFAk%bf}0@Dv)vM_|8!yOYd z@xdb&HU2}(J2j0OjT)CdHEHST;RizcmZO?=mXo|~*R^|ZIBES6m(7B-w6R-A!|7~R zgC+}nnlQAIxjtgN4_O`FUG}m6f{M?4v@Wei(zqxD6?FWV^XFcioWJ+c)5$k)W+&1& zQ;(cQ{8vJUhb=$1U^;YBQRCnfie@9~!*Xf02lI@d5fW|i_#HD^wNQFqkL zppWECBEy53*s@FG8($1Q?fE{r#9DXr{IG&cLJng*O>C z+n6@+9fQxs!;E1~@@R`3xDQOOT%HI%L^aQ$>|{C5Jzca|pTOw!S&o<1!*%?yj?W%q z2J<+GEKFJV+vKW?|H`Oej5#UIo!W!YvIdu1mzZDfJtjduf7iEsaUZly5GKZ>^7Fpc zhvI~&zoHA!(y(rR^O``eX7_OShgx#JLhqL0B{9Hn3!xnbqU6?mSG>jNyzrviZ39441&(Y47Jdos09e z{@)ygG)u$65iuL%;j!mJhg+i@{0$SzY*G!X@17cbAyr9$kQv*+gy`**nI|vOx^`b+ z<9}FFwb0-_)(b}*NQ1r(BfJw#>hZ-*VJvs85}m|E`|LJujRwBknZ@?I|IPaH3k6oN z9HTz}D}H`VhmNrwZ19W*%>tT~1FwR`jN&j%c|Md!%-EPy)5j$=>>;#lKG|M+Yup*e zu=qoKJ1>3j_uov+r}#7St4N_w&)9h~A^TV>E4)@jGj1GVPfYHnr^H-`VnG-VHHyMf zwFy^w6YCzq@nB270xZEYczdA(7bSF5ZltQte|cV8wkfjDpfYw^ClH2%S*-wA%!Co5Ql<~;Zs-Hux~oXTydtJzPB ztl%6qc`k($M(#zuAE~_4=jL`(paTmXWX6?8Vq3{srKJQq6S9K?11IZWvE3T?uxS`; z4Mh*S!Z991tXL0DOl)d5a2t3U7<)GrPmz^J7)yKkqDRCQXuY17Z$Z1BbXuoL`;nOmpB=@Om^d=_}d z-q!*UY<%i$xzNYQp` zAvH*6iWp|q58aV;u~cNdj*gD9^73z~lYkvae^+Tq7!VLpX*uNgwn#53CPtIz`mNYo z5R8UL#HFVXKHzDP0zr|Mbgo?6?TQ+7&5nF_+$6 z3pNdaY!Pq2hixL^LZUEK;nnT_wD;}pHyKRq6W^FslS-X7G$O{27%>%P z*w~&~CxfN=2Tmcw6^j}!O0~a`3oQOYC@mwB+i0*JEglX^T1-`19c_+w}c}=-6~bkA%b4h7@Risi#YLoUgy-etG^adEmytu)@u4f9lMylh@)O4&YLG$zPr)uog-P}ar&O7CBf#z(8 z)&0XY&F9XXloUT$7Q;Qn#UPd=fyd$X_R>+|1$)u5qNz9dzu+R!Panz^t zVM~s9etWgvFKZen-D1EDNXyG(0efoFpCsT6TZNI(99JPQS)u3bhZCOhA5KWIJGvs?N2J(tsio_a1`z7>3K*c5<5Do z<#oP71{Xb~z>U0cSSM(>$j{*u5QLuW0N;#VBNg@lm{eB)_4YhBUS{pE~Hpw7YR z&ywyhT3~Fh*^XCTY+_fD8LBXHvQ8N7eUn&Q`$A24CAPOCDcjBu7_^jE9|v)+Pn)eO zo!DG=o9$s78VaNjuKBIU5vyvO%v_B9g(lR0s*z2>&P8s#tHtnt`BY; zFJ)nuJzB$hC&#?B8ZYmi;#?Wsw4*kBhrOS|w{#yW8n++)YkS*F1{-)EEhGKD@3Ehs z-xGmPv4KZ!KIrW+MjnL4aJ;*?Ll)iOc~5ra2N;DB!}H>&awaB}Zj+q!Ur=>x2Rk)$ z(aFiyP>Uv2v_-b_^HL`^1Mfy;s-n+>?xD9Vgup*Lt?5=X7Jt3+pl4us3Jj#N$9@2^ z=$s!jIG0l&t1UQf@Z1c?V3hjlax(FWg)Fu z&d*XmD%w9*ojsU#XTN(mVbTR%$v^Nl|``!TX{8 zzB6j3#}@}>zaO8#%5p#?TPTwF|CTt&UHY{`PQ`5w~^uF$Fo z$1B@>O)V|i4<8nB(r>R%-c^{V{?+t+?K3*|oeJcj?m!m{(R&hVROl9w!rM0tc!Irw zNH`kwxhK%h*x1-nw>f}1!ubZpDh`%{sNI5{ccwrfXaUrV!pQsj3uLuFS;4@766h%- z9bLv}5VU?xcy5NPnWG|17tF5Z;q~|DOYLg1$B#evan<}SH&ZTdy7-i%lBi+k-u0cT zz(#T@jL+q;Ux>>iU?vNaSFq9t;QRgYcn$LJt!+sO1J6vEXy)h7DiqyUNFh_zw#vYW zot;eETQ}~OoAu@2Q#3K5%gf8l&dx4%JKpSleRe!ytfZ#KEG(Q@Gv}53w5tfG^3xbQ zFlO3Idkf(dLgkK2oy661-nZ8_QTVjrdhlAjl*Rzge5`1`fc2x?M!WyQVjF{40KT2>+1S+4m$q_&8~if z*{)$BCY83+KY$~z?mc<-u~TbuHd8JXtFG4wO@l1m13gQAV=s>X zet7jk7&z?9l)Wpl5&VW$g#&yHe99M*;E9wt4xQ-u_^u=Y>tNw(E$5CCAfE~_Snm!vn80IHN;HQ7dsiP# zq+8KhD8Z@`K|-BII>HucIJZMz!kIwm`pyGxf&tD@Ze=A&?nubUMmE^J(>d?-Y5V5J z11}w8PXS=5mkTQf(BGqG>aGscZy7l_LM1#e_HN1qe8!6nl>shG6tXv3@oc`>Ea)ZF z$jHbz+L?|ADtn(dtAag8Gq1M)k1qztZL{N&JgWKD%X~1czo=&Rm9#W^-w!T~-!nJk z`u0Nr!1nIkjWuOmQdCo7f{7UnGENwVaA~JX0FG!hU0jSjCR{#0|J*H{qL7<5q|u0caWeat}5?ib8VxJ=cJaRr5< z8)j2)<4>0C{Z=ST{TLD)Ht#Tf;)L%Q9UU$G;R8Leq!t%P8;s1%!`Vv2@aZGB@2#!U z28P7qqN3AT_^66w+y_?GW)JGb-R7N^o_U^}V_7zSn+Pa~*vh+MpWx-$Q>=T1iJ8W= z-gm55Y5h`H_DOTBK&Ix9Nz*M#^e&*h1Kiz%gOUppO*e-IG{?Zz#<@+`$PA|OiwbUL z4jgm7ZoDY5=t^4GYilsstlF9V5gAGFIf7)UTA4$Tk(r2;R8Cj-iNoUQ42@UXR#qCG z$-6QyasEF9!Z@5FYeNnn;O!blS_8g~*p|;SMJ1V-CXvzV8a}%F#}m9Z2}r|Wnl~=| zg?rr&P zUZ@<|MoC{u^_F>mh!{uejj$FHVvpbxAu~wX9`U*tHNWwxwcdJ*89e$9mu>2>^qoz- zE@cbebIs>gvjtpvY`9Pu8yN2k$I-?|7};VQ3H2;pq0*CZ28x(+;efZEB4umcCUE@& zVO#>(2EmU}-_|yG`{pF+!obe;hb&O8}yAqXzn<_Gi3~&(+2(lMmInq2kjyJX% z&k#@u4c)Qpx?6Ho8XgXgGmOqiC9B9oJ-)?|m5tliyuX`=qXJHqp7}->^}>bV!v`Ru zhS(D^56!zNGEh_q9rJdqsQm|J_gJt>8N|g~%nI4r*wZY=o%nAr@FwB5=~R6h`Lc!6|zYp z(yTn3qd+f+k!>Igw{8iC6Yyk0sc)7>GjcT|jin+P5;Dp0Oh_L;9?nrs#zG;IKo&r# zyAGV`0z8_)A6z?NmHzVj=kdYa_vy(MA~g-v9KDVw{AL`xs8ZZE^Wtc3ckI0x=;{4H zoCK=8x~1>YAg8nLJix+8n7F@w{dz_JaJ9d{Gb{;}oRFXh0zi;VXm4+iOi0i*a|fog zz-D)*jt^gK&&Q(aMb&Gc+Wb-ivD#3sCS?wsi`*YY`Wm_huaq85_;DIHr4$s`=N~NT z7`X-jv={{J448FiDr^?#4}e&0AS6@=2^3-$wZa*^c_$G^kyL?!3;hvKp6091B2Mdn zK!Qk7QE~noNAd4+Ph|ZU?P_D!l{m3O1mBn2%oKllle+xh_gh9H+#j=s7!l9`1CfV8>4aF{)a^4s?o+Q72Mi}d4mt}l)YGzyw5@!PdKIvlpK zWzl0=+nT?KH*!FJ2^gs88W|a_tb7Yyf@o#7lLRkC(D`E(%kLB8?SDfKsE)0$q#&H8{IXX3%io4PuGWJ)}$J~ zp)>wu6T31Vsm);o6P&I8vOQCG=s$>!jeR(xE~!1a>LdadZ?cL=oN?PKiknV%M+x5n zGJy#L%@u+lZ42|2BWfReqL~D!JM&RZ0FT(rHBtG1j29shk;c{um8dfTrNM3UEGccV zhR;3DfS_CD>t}Hk*vM`G#V6y^)CSYU&-c4%3TBv@nFITig><}TN{pL(W5!ojR^q(( z)zich_3i2cu&G^qK$0hQPq+E%-~oWtTv1U`EFQ%tZ#_r+I`24-acl;ti&1Xf*~F3GGH4>cT(R#@WUjxv>pOTynnmGD0<;8UZZd zaj?>dR(pLi{jS>PDcEK}d~lfaJaycunjj)0gGpb5tr!AA|3i852}mULG1nqMA@tnb z-@$}@$amcVs^o@mKgXkyPyxE&dbv}>AyZtxv(y!l3(`e*NX6;g+Cfam*j@y15kk*0 zUFu)dryM!o5G42-l$cHS1g*~j)c25DtoC3Dq?*bd7FvnzbO^DkY)kT*lTZ}I#F{%M zRcYex<ThjO1{X-n^t%!e?u&xNip41ksj@vD z9&&wI0kXWkdyz@Nw-kUPTNN$+VmyG5?a|Ny-zLv0hm=q-Dm$>!XOiL7PQadP1D42b z?o*bTOo*el%L^BmMs&jc=a`tQRovXb*MVdT-!FLZS&2*#!rIW_u8~vaJ7PoGtBIDc zxCBDL*!~i~>mgui=0D65r!OD_`B+O=u>y~(yLjQ%n|(=uw;}%}md}3qB2~7dBPunm zI7*ir)M|>yL%;b&5@b^1Sq`^fUTBI(OhC<4onV`FGRHQ*<6|&POk_LSU2=@Lu6_aN zP?x36k%~>YuOo81AP9WlR85e$JFpnCn{8?0s{-8Inm)CloUS;e_mAF-jY&>3p;ifP z@w-|ot-u(HTQ*xFJ10q!sKX36U#IQg5YQ1D8(0MJO&Q=9R zE@l#*uU;P-!i?qj7+XYaI z(}L=Pn#VWvcEj9MtdJ1k&gj!(6YhIn0FW{W_Ow8q=1u^~Mf#+)polc{3ydup60*AP zR|{MyH(q6rVCv8 zFc5X8XM@}8uXUSe|8sl1B*>&~8`a9fCRGS(O5;Tp@CStZ{$I98Xdi=H>vJ^GF?6ES zpyOrO)wtUn6vd$Krr+$^M17Z5d28rI=y8?-u!o`{ zxVmzM0%lTynk14^6bTAlU}4`X`GH%CmqpOujUU2`>l0B9cNU| zL(FLd-Pqd}B%~L=S6TO?Yb4#~tC7%t`LYsM>QV-#6fF9fN3g^&j~Mi$ngHQ=yUzO~ zxP+BE5H=_9f8S%rXCjLyfdE_ao6Mb z(}f_AEnQ9G+J6FaO-M&2HVuD?>OL!wxz);wEFQV+O~s&w^Th_Jgnjub zFm(NODcL?aK_YeL_J#~3!0ft8?g^)=0Rw*&FW^CuJv*YFoTvJO=TxQf({H2eiN4-m zbXq~dafaiW3^(dRSPzp!3+5N{rY+6E8nmqqg14TvC=ouxBNWmZMo;w5dE3XnIY9De z2+TPeJzIj`&PIB9BNrS6#!~TP5|y-vCMH1f;z35zY>FR{gkCuO0ZT>Kl*i(Hhh8)L z3C7~3jHY2sM1%+kz?ZNDlK0)9x%Js9nP|{C?lys8coSHfLr>-;)Bl#5>y}z zws5IMBJbS;DR#D|gIC1V_DxnW4*HvoF`a(PE{>8)c#Ka5#ESLh%TkAor&G!C7NG8P z!^DD(YNDX_2E(I&L(isr^b}ntXfw#5edIBx&*8w=o9i7Eyfxj*0W@huhezo2R@mvP{2IHON-We%gV9)Ckdc*@9XfF3<63O4gm$ zS@>9sPiN4!2At{OT}P3A>$Q{V3~L=Y97h*mX0?tEeky@)i=Y~*$rG$Il(as}adf_h zV_5E=RiGo2CGT8ATnelZ@;Evgu{S#?@m0dJp`;m7oGUQYSULNH%e)&E_~>t5%;_s4x|g3tS{a-;FHkMhJu63bp{NFd za=X2`i<7BB_#1ed`C}N14IdB^g0ngHmpZs+bF44yMct9coqMvAB_IF6#cP5NSUiEX zp*o=dii&~f1y77To|&40YOi9OqPkGqWV#2@ojak(3qWt5Hgsh&fQGxiv|=;Zhbcs~ z);gLK^xPRb29^xSKBo6AJn>-pVyo(Y+*!%N=h_p!^-1DYL>ZjI(HFg)>>g%f=tF#J zf2$FM);Rr5`-Xp>W4=-u~XAaf%wf9sJP=3TUlQDKA`< zh>T6jLrK;jC#qex_4a@a4kz3Xd&+lTO)aoyF7WSb@H;>s9;!>7pm6u1=^X37uqHNF zXWj33U2|@IS2m&QLjnFxtnA+!YGyMh<;Y%|W+zH2w@+~DLhPGxtS1&9-YH@k;G1Nn zI69WvrM^q#;v-%isDd*QPP|ApH;jmo6x2!V>Uil~jWi6w1n05~lS)`RW`BuoYa+rg zh$iqoRooFtQHT+KZ(m655}tIm9h3d!^OXMNJC+Kdj-Cd&O-`EQo~fnI$Lai8xcUA| zU3?BJADmKggObWogSDtAwB1IFRgc4*8?C_|w+rYPjjUXY0?kW3aswC@2^r`|QCm*V zTt49Xasde|@DDoU#td$@9DjIoNCUmURai0q&v=l&x(~tM$FCsQlAE67OS1_4&Ouq;&z4KIA8>fQ9n0BdU)UURJ#l|D#kLq>&3+5`P(-W8cEn6_`OliOf-rjC>DM(1-w-b9buhYf01dm}huYAggglX8P2H z_k_PYtn^}&BR~Q2+UK6%o&%rUiMCG5-ooDb+Fg^?5p|Pg#o7fdmwmbZ-xRcff<@1I z-+VA|!dPfcVHM#UO$3J%8S5C>u(r2=5%#Sn)u&lNt?+J zfS*(#XfG%!6NI0fp7$TV6?p<6VadrQibplyB2z5Wh18W-zHRmP;kaKp*6vC3nO@bc zAp#1C9QbiLA^|q=ylfrQ89D3Y=`Y(7w7p}TO*VP*n&E~&=j#tS&{QjfGn7T0NTD0n z*zFxp#6EiZLH=*Up5M4ZJh5=<-gX7A3vU=@&(K%_DK%gK|5^CCelp!Jz(C_^nv?dg z35hCh*Y~&;e@J;h-Qz>?PJ+M#Y3aK`d;ooJBBRI*D>GHeH>ids`ULWO3E*vebaZs;14Mj017&PW>p1U`uQ078W z2DyC9of{1s%(;BxjdsTd?-d$B)MjCBp3}8imo>Y^#3Y;=!<@LgFjJ>yVP}Wj9E;jK zHx~!k`BY9m$+fE5PGF?%bQjHbA0etvA*hC2<5PYeq*MmmW&2s}wex2o+viyYe<=H?twrwjQPw^#22P1j{SyV4VN`4KKQ|WOJuV3V^_VJfrtHLqYN7OKv>Og zr-1>3wLTFnuJ83IqVcA5JE?@r z>_d|V49VqX{omp213antbEU68KbVcpVdIzir}K(|VdGvFO}$Ut2l~|yXFbX4ot_!P z!znThMd9!mNERe2a3bSt;?S3IPN<#f`RCe8yR&l(Kq7u|>+yuI^Gcg5GR+RKdyQ&e8E#y zeg3`WX66yU3Ljn^0i+1>EQrh5#tc_za&k#a6vJv}-_CSF6YPbGB4Cma5I!Q8HF}Bm z#<#qSNkSQozKM<#vHbTYf^KQa!1b@~~4GqNc6E?QyYe}Jr!V(Qa=Xiq;vpPa_W-nh}AFxGNxqCssc$7uZhgF@5n67eyI z)1^yS9?$`11`Iq(+Rgcw#Gm)~SC_rzEDar6>`lh&1@2idH=N;P2A{>xzlWwON&6+% zXNd#^EdRim|Iap_dowG&-A9>sq<}Z8AWCv-vc=Nx{r)fJ CZ@a$$ diff --git a/docs/images/chapters/control/fca18b2602929f80e68d8964832f0f44.png b/docs/images/chapters/control/4b206c16ccf8a06a0834fe9e5254560c.png similarity index 100% rename from docs/images/chapters/control/fca18b2602929f80e68d8964832f0f44.png rename to docs/images/chapters/control/4b206c16ccf8a06a0834fe9e5254560c.png diff --git a/docs/images/chapters/control/989f4ca49d7099802cc0345dbeddca8c.png b/docs/images/chapters/control/be82cd31c4892a8f0582b1b5285231d9.png similarity index 100% rename from docs/images/chapters/control/989f4ca49d7099802cc0345dbeddca8c.png rename to docs/images/chapters/control/be82cd31c4892a8f0582b1b5285231d9.png diff --git a/docs/images/chapters/control/2a0635829051977b265b64ef204f718e.png b/docs/images/chapters/control/f700cd59e6021b0e06b819105ec931da.png similarity index 100% rename from docs/images/chapters/control/2a0635829051977b265b64ef204f718e.png rename to docs/images/chapters/control/f700cd59e6021b0e06b819105ec931da.png diff --git a/docs/images/chapters/decasteljau/715d1d2eecc762d6bc1470954b145018.png b/docs/images/chapters/decasteljau/df92f529841f39decf9ad62b0967855a.png similarity index 100% rename from docs/images/chapters/decasteljau/715d1d2eecc762d6bc1470954b145018.png rename to docs/images/chapters/decasteljau/df92f529841f39decf9ad62b0967855a.png diff --git a/docs/images/chapters/explanation/6d2f915735ebdc05e42c0ea7adc85343.png b/docs/images/chapters/explanation/959762e39ae32407e914a687d804ff3a.png similarity index 100% rename from docs/images/chapters/explanation/6d2f915735ebdc05e42c0ea7adc85343.png rename to docs/images/chapters/explanation/959762e39ae32407e914a687d804ff3a.png diff --git a/docs/images/chapters/extended/2d17acb381ebdd28f0ff43be00d723c4.png b/docs/images/chapters/extended/2d17acb381ebdd28f0ff43be00d723c4.png new file mode 100644 index 0000000000000000000000000000000000000000..6613240aad3c78ad310b76e632fd13c269169a94 GIT binary patch literal 10944 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 literal 0 HcmV?d00001 diff --git a/docs/images/chapters/extended/37948bde4bf0d25bde85f172bf55b9fb.png b/docs/images/chapters/extended/37948bde4bf0d25bde85f172bf55b9fb.png new file mode 100644 index 0000000000000000000000000000000000000000..a714c4c5dd07086f32acd175b6773f5a706870f6 GIT binary patch literal 9201 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±=3e1eekelN?hAGf(nR5L$Xf=be;it>USO)p1v*igw zwtd3d8)tPRBf4Dw?Gm9mfVgu(>V;zl3&EV7eKjmTuC75B-}L@dzcVn#E2_5eS9gE3 za5ZtZm#z46VSKyp;fK((uc2g?sCJ$c8u;lkwnO%#3sxQ8r4rT1>`I|Si-N%Cz+0a1 zFYD%AaT*zw)j7Hvkyp)bKr1U>cBh!67-guip7pV!n~O<7?|EO0m!%M)LV^$K1x zt&1XFdWZ&*g+J1_lETJ8_$O*pOx2u60t6{8N6CW+Ty?}ZRbkega7cHN0#JLMC3hPv goHibv!f%;I2*f(`J1*{k-{FBM$*IFDWi7(~11M0Avj6}9 literal 0 HcmV?d00001 diff --git a/docs/images/chapters/extended/391a61142c56b79260680aefb08cd9c4.png b/docs/images/chapters/extended/391a61142c56b79260680aefb08cd9c4.png deleted file mode 100644 index 75fd1f211b6d80a4f9ab1df6faadb5ef1d58568a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9208 zcmb`NcQl+|yZ1+k7QKY%1``os5TXRZgh(c$BqaJMAv)1}XQC4^dZGj&S|X$O8bowa zqemxD9KsKArJ_q>H~x(1VTWM z|05*^EsOqOF2B9p*t2~y$|V~A z{ykat+Jov31-UmnV{Emof8|G~YuToM?zR8;E2eF7()Y!<$=YU04y$f~`C17@w)&Hf z)AyCBH;U$j7xJVo?I@v`!vapuS}=&0#{M#sM?2nWgI!fUK2xLWa(#7MRa*y%WPx0b z#Kb`a)6>)6YKLJ(9iBzYy12VGQ%B-1so}i^zr*8?)4P7N`2@Xdzfma%EWcULH z3VJBr<^Q{>d}KshVVzYsyz{KnrY^m{pnyz4K_QDBgL@u>(=X%@e*NE{_upLV|DkEr zpAV|xK>2*cRCa_u_y6lnI&nlpC%Qu!(Uyd4#$WFnSW`?0LR+cP70ToXKXzDWyyzAY!m_#jmZgJ_d!MsfyLs zA`$wgPaVk`WSY+ezY7Vc#)V32%KiRb8jMmjQ&G;Qy?_6Heo;|t;!Pb0Bp@Il{LPy{ z?ZObvf_1kISB1t!ZF->!%=!hU6Ff800 z=_n5e7rc(c;X1p!m0rJoowVWN;*wuj*z)U(MO;b>dE!HJE!ndt7VN{lw)u7H#uCa_Sx)JaZh0MSh8UKpy!fTQu%w1i?YaelL@hx#>ra@o zvaMs2lEU`(_UtV9H!k&j(3lz^PM;>K3ZrN_TVUSIYdlo95BBs>9PzPvDhgsqhF?G+ z(6FQ<VX~n_5eLKD#>V*5mW{1nyub_}yiGE?NIuoQay}#cG8UPUXx=j01X zhnzjsNt2zOU7}&MMQMcZK^kKpGMxAU4H4+q{Pt`M|BV|8uV0J7o@7M&`$G^aqjP&J zq!A}kY%i`rvZhxA_(I7vILQM2UoZcdT`Or&*3h6$NlE!RG7<_7k7T_=g+`-khzL5O z*;^*7E}D*Z8&)Ljph;NM&B+T0L^+ZfwIc~jAZs|8+A4j$tXAU((=#_S`g=C`(DcIG?u?rwgwouJ|5wD(O< zO^ra)Usuf4R45#tYYZTiwHsY=exRzV;O;ItFgW;OaHX0(J3E_jt9F;l#MJb|QvvRi zm6|2igU62^iES13TY|8#C^O1PrkO&}5WP)IoITu`=jZ2dY>Qy(pPr`5?hnUcn9a=0 zjF)^6XmnFFyA0g#-1~I9g<2bH@$#j~WToRFcvI$mk3l`FIy9MPArT;;lT>+^)j$Y;HDQ^ z-X6^!kt}9matxyH%9r!u;#+SY^3Bc9*XS3IeJU&KpWAVfW)~F|Eq&RW!hszf9_GG# zmkk1U{-ZuLG~`_P?8OUoOBnS$7?IG2xr*A_SL5U3tJe#)3wuvMBr#A@QeHg)1JYfy z)03T_PrBTf85R>mz2GGEsjv`rn?=Ou*m=@pIsL(d2mVP(Nkg{?A%Q_b8hUyWvn^q% zSVjhh-ygy_n!y5y&dJH)z=nl}&i!5NW|s4ow6d}iBu;pk+YFv(XGG7QTV9?sM(&vZ z)2C0M1A{9)CnKPTRkby=Ey4QHx!dXmPe~~$?}If5&ZMEC@i#hK)j6E!ydaHIHsx@4 z=GFR$RCx9*Q3~ng-c_74zHQH`RuTcQJehv4mB?f<|?BMg6Zf> zx0$GOaiZ&dJ($BKpTbX{;2wX?BF>z0#YbKrd%kPtxqX|VtgLJshr6$;N=C&g7a7N+ zf)9f)FM9(sGc#NKrY9%$-@bci@~hk&Vl1*x-F-mQ0=a$y3?m8e2DO2^2D5#0B| zMLe(=suIS&tUaHe8$u;}?B+IB5??gwSo;<9a9+ zyMW7@&%pF_vFT* z@MF3K2Z(QGdEdM3k=KI0e}A~Jyle`3$}C~S{IV}2sh!uIE@g_N=U|oO5Qo7?fhrk9XUZJ8LR+ zhB2~U`}l$57Zz4|_>f$?=y^b8r6igB<*7)NqU-4B_Mge+nyvblCvu;%j(n4#nYJ)+MNb+^yZQb(v~bnEh;K%?284p>*gd`t|r=JcL}vK*B0AlCM5Q3 z=9vi6veAYeUhxs6HkD|$Cj1qfn-zP~r0Bbogu}E8#T%BF(9R3)%&;K~pKI_9Rj?FY zH^xKKW!#`3W?nD#G<6F%Q26;>C>-LH-&0X3GllK-}B6!NY|* zreN0g&za3EDCk!|%Fp(*CUga#o_gC%RWshYb*u8?{G`lzMKdF$k|val(z5aE9Z=85 z>V0JJJ&#fj%FFa+AtNKBk}8WP4n@s{5=$FfMGOpRu8&t-38P|Hw6YQ?|MI0qa8Ic? z3^hmG$^x%w>(5r%0pmW`lPu=`JAkCrtc#9_nE1{1jm~}%q<-ue;m5j_KYtqQeNMK) zVTvWArstI9k93XJ==dP826; zT3X3|y>1-3YHMrT+1qm9pb`sqZ9~U<_>K?9jGX}?o z1q{31s6mW80nvGhRl?@pvuBJMo~t){GGtS+wOW~QB;vOv;YS~^&ca>RMo=JD-RIEP z9cFwE9Qnjnna+&{siUQh$C*H3pZI301O{bbU?4UjVQ^98EyAY_UKa4w4Kw~oL4lyW zyqt!XHh_{9OK#{%1X`34YSnK4afM709)V(2vv$MT=2m_J=`<-&snvheDy3IQ>pVLMd5c zE{_(nCZR}uRO8o@6p*i^0}TtZ?l-EF!F)XHse2Um|xinux{b4=y2|0_Q>Ne4)w_Gf&$ zFEj7H>h9(BXo{}tS{^CA8w-5nCRpCs8DCa_zR#4J^p-GxSoCzG13>`Sv_z zg}xdz8m*m^(<7HM8I5i#cU92cWjbavNikK|*N+4VlnO(o4yOE_u+hKLb;CKXgwNm} z`p?TVs)WCPogj^yg*AA(rALnWxZJrKBGlXzM56KRSsTHi?xV9TQPx`DP*j2oCk6bmhggtx{R=Gcr{(lhoz+UFL^v*B(OwXy($xj&dNB}rXFl= zY}gJ`s@*9$VrF0n23JMg%yv8;e-&{O`81LULPSF1R+Hn{E-pm!#n8@9NV~)^3V>Tr zig@?zG0=oHRT(ON5m9VXbP)I*W1)qs#qSnkP3;=>A&ud*Jc1+eWMt*RwAaZ*paB5H zy_KRzHi2Bm8{-w7KYp}VyQ~Qklg06@x?wCUbPtb?xRq&x_>|rm*N(coch&yp+YKDi zivSH=%GU_}{QL^t%E8&uuweGT5Ed|ITXV=25rD9edoN$Y z+M`&*va+D9?d^E3n6d)vO80Iy4N=patF<^_)iS%OYTq+8;;auJ2%g9t@iLHK9w|2H zF8SWILh*;{dEy*=mMpd9Ij*;m%qK}ktWcve^EFWU55=%hs`E2kJOFD<29+%;{d z*!5xfKe!ZNc|`f-`-&8hCiw*g*&NR5^Yil?LFaZ-XHJPho!&YMCv#E@jACJBwe=}f z*VPped|rC*5BMp|&=+E&AXdU=8dN*0f)UP&&CC=g4dmiaeAr}pn>>(<6r_3j+S=Np zeTxmAsoE*s$3act)9-RVhI-En-2gdo^YPt31nh<=7&QVG2jS<@t?smp*4Ea01yAQd zEtjnqmXu_!sHiab2H4X0``a7Ozgp4)W`#gLeE3l5eI)9?X3CC2p$Iqob$fx}QmAQ_ z^xWgm@Y#QXkNL`z%^H$L3}W9T2~OY-^3>dfeZ$6%?7!LZ$OWY2rQXyqkasa1k04w( zZjb>qw6wER*4BQaC`U-%rTvlo&D!8C3J~^6`-YUq{i&soY^@fN%H2YaE-m zF=BPTDC|coceFrXlW}!vX^9+=kfN$8njhEN=vj2CnP+YLcM3abj1>uPC@t!VmN z_1AfL2oGlbE~1)V?)aRapLh24ZSA-Nw7F{ky-Zu{v$kH5$6PBJ2-mL@<>V&6Dy*3R z4D3vMZE?e3?Lr+~@qtr9uOY@jJ;)lax_f$>oa}F$72Dt9C&s_p-rHlS6N0Qy*RgIj zT*!e_ukkK8t+T)eKR#{&WdsFhUiV_IIYD@754TgwuYRSDLFlKni%jV`>SGrA~|Ah3@>JtzxMOQ&m*F^zhLm zP(&@al%&$YLJ%~nX9LrqeO-pGio7Nat@xoaM>RoRUELTQ@D{+%-HX#*_cPq6i0k_E zf(h<&nVK*%2ws=ixfEz=X$6H`VKM=D2UJRIHG7tV2tP{H_tgFN?c2WreKJS3sD1|w z(w}u7PeZZs@lY2TM9@q1W&|u@HdvM=_Z-!=~07uPfUkDJ&Wy5pX(|_WUU;ql=|cjTg`54M2(N@ zPI|6=R;y|^e}V@WpubGPfRa*BI9HwnLypara_qd+99AYK?Y7A_QuHDSAklLQI;a~w zALTS^;5G~F2avouds@by0XdZ6ckWTUH}EJtA|e5deHVolW>PX?>{;#6QYv`jKjrUk z#mTS?!3p%&_KyJ`vNEWraSV zfu)O~W7uUR#=@>fH5oT%p6^{3)cqR%#UJe}`UiDMzhUUwdWUNG4H+3$4Gj%_qLe?x z@xl1n``+E1?gZO$oAC()b#-7as4;vpnHQC%&i{VcD%}p|2p~nfSRW0tO)4jiGGbJf z4%Ue4(3hORN&~EF?2O|%5{JiKjt@aAXFGmMZe3hl94j*=$?)2gD$wJ0dH_BU>*c*l zL{QRjE{!KJ3U=wItFGZ}@n)z?r?r;xvK%kCKc1Z&v{>FYnXdKF#40Y7@>0_4WvUA1 z0yDJ8u#P1;IeB|Kc5n3l!cX3diP=A5Xspezz{5j#wK<;EkOkCSrx@DW%BmEwilBa_ z`l@y~TgE@F@`t|(0qKSX6(b~K?;;@`X{!1L22nmI`?COo6TrCU!7Z&D_j7V{FN3?_ zc?Kjs-i_Qr5b1EUPMW*Nf3opiVj#Aq9Lrd}eEG6McK`3amBGrj;u>Oo`}YDjZ#wS% z(ZDY}IXStkA?J2+*%vXmW6eHpuv|N;hd^1l0^pCMKQOqHT@s0r{4R!GTU(3E%f`;< z+uIgQM(@yl3;V#y8)~tnj)LNlbA56r6xXg@i)Tyi{3Z1i0~zS$JwHF$>hJFl2o4Tb zkQIt6bf|>KS;2NPWW5~vWDh7-MbP@_mJl-dp%_|ES9iPj&W!PoG^rq0BvfZU79~0+ zhHf}oVr}i{i0};KimP$#gkM`vZUrUTo0zH}B4vhw1i5+nn40oDeE1MsmoR1wAHzwKP_Z=*6=>O}tUo}E{PV#fki)LBKkm$U2LZEX49ASvY(%vXm0sjV z1CJ3HSa?XTVGrswkaWh3dBJvoIYGQNT>ku!2Rt2Ng|6&x&vf8i zK=h472gZFhy$yluZSi@T286-O@vpBW9p{LEKX$)>1afqAgt_ZcKJ1g`NT~*ny0Ip8 zYEEUGncRv8SzGKBOjj1_w#3LA3p|y9}}KV8>a;(a{Ey_FrEDuytjI~n zDZQ?4&>&1#)d!ALem;L(4HTMpB_ZGkZ*g()OW>>q41$wNlUs*}hrLg)$FWPAV<;Aq zTcy*ZgGvytzu%%nV=d^6>br*SyJv0OqWpdNw5@6qhERl<2x3H3jCuXL=(FLO+wbJjc{cH^N9S>Ev85r%xiIk5V4oN^V8mb`YY6ee2=f2ZeaCN(M2M-W?3;CekEC zG2q*`Zwi}lI%O-LV)i5wFuk~uQ)z$Tnk4txg0U}Adl92I|?&R^sAii2S$hMXFdu=S6I-I5E1T zl9!hVc!B@f0_jeY20KWVPK)F~TJx^H>2#^G!94ebmFWwG0gt)karpYZk@0bXv1;O? zFGs(FsNp89q`-Jf!OHHm(z~zZCc%LKCzIiEl2vN}6M_S}tITChdlJ-)C0h^~aAt}+ zj)`mX!fRz2Z*ltjq9moKNRtX(%5=5sC>=y`S8hw|0CEoRbPwb{qI12!kfJY*^xqUi z4_k@11b0&D%OUMDRM{9ALx7Kku7Ntq3UR{jjV8B(a;xIvQqc-VhXYHRzzQChgoN;3 z$<1H%8Z(vmF_U)_B&DTUn1u9WD{n$a=dPkIIoH+sE_B9$Dj!?P1DYgIPV>k)J^MPw zVYRMbF^+yYS-<+h(G}BTb8;d<_8iiJ&Ye&1s_sq!OOP5}GIp;OZ(aenZ z&6_tlc43|7l?M3gT?{sKfCXF`%oF!uQV8k4mLv^=QoV3k(rdqHXoIGT2uqRhBe@kj z?OE6s=0dA6Q?7|zx`-~ zoBS(EQYn`p35)|EveWidcrRfo>3<(@-~fA1Wt^%Ye3nO0q9AEAQxLOBIUzvJOv}&< zLpLxp-b07~O4;n1WUl8%m!E2-P@cOwD5##`BO!pK7| z0T+}ln2&`EOHB{Kh*?nS>gj0!#CExfP>VoaGHwng+uq-APcrho@lR9WnizV1Zmy?r z6wIaw(lbJDjb2l(nB?and@ z{myWkR(R?ta`!RJJp~yqAk;3qRU7nyN$7o5)wQ;^HcjlKg;Fq5fUgK3*sW>GCkX`; zeX@^Xll5MAAn%KcY~Xr4P6A-$bc*!}Ai+2q29*3|wPi1KzD!kNNp`M>(?ed5f9oEa3YJy_ho~AN!ZT2xSF0oWT37 zDzo3ZQ66ZUzd%LgL8XD#gS(RCI(G9h>HqOj&&UeIMpPK?#EIcOWPQ$w{ zGlO$7O3KR+V2y*F11_*@@#@tppwp+U7MGSx=33Ff!vWcJ$wk|)_*a+iV_<~>uczPl z38K#N1g;^F_~6kaFjE(}6VzQ5fKr$;dKG0!D z6rx$joQ}Q+S=qGaZ334s+?>!dH&Gp+t~8o$ayLNNXNcj z|CNGdsZ?vEjM-rH{Le0xJn{n@i&b3Ndl z>FVk_oNQoIv3z`d+`t^|?d|RS{$0_;#00A=B_)NqW6vRBGxpQGHfIo6?x6qn7?PmR z|0(8AcH_{;A*g`}b^9koH)Pd4+bnUi)N+Sh`x_IZ<`XwdY6ljJh#+{$0(J$1Lqa~} zR;S_OP3ktK>UrA$sY6(}!+p0GdjFU0N z?8Svq9GYXO$*tX86`grrSX&nwud$Rmr>jCFbW-5L&GZW7FScZ8stA&e=QommRKjv) z*VwCbR3ZupZ^WHv4Xxb-G^|qC(Vgadyr|BZW>*`!B+-o>qpxBORh9Sf`o4W7@y@wk vcNsm@A0^5~rsM-+%o_f6m%}UTg8JEe`mA1Mc|Gt|9*F9FHAJzZao~Rd^>@)L diff --git a/docs/images/chapters/extended/baeceec6e1587794b8b275a90d5d85e9.png b/docs/images/chapters/extended/baeceec6e1587794b8b275a90d5d85e9.png deleted file mode 100644 index 8cec37fb2b438b320397937fb7992f11812f33ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10945 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 aeAtp$8+1N46TyHs>dtL7g#tNa|NjC5l-&vd diff --git a/docs/images/chapters/splitting/891133c5f0e140b8c7e179af04e497e0.png b/docs/images/chapters/splitting/fce5eb16dfcd103797c5e17bd77f1437.png similarity index 100% rename from docs/images/chapters/splitting/891133c5f0e140b8c7e179af04e497e0.png rename to docs/images/chapters/splitting/fce5eb16dfcd103797c5e17bd77f1437.png diff --git a/docs/images/chapters/weightcontrol/be18e8119472af796329f3e2159bdf94.png b/docs/images/chapters/weightcontrol/3d71e2b9373684eebcb0dc8563f70b18.png similarity index 100% rename from docs/images/chapters/weightcontrol/be18e8119472af796329f3e2159bdf94.png rename to docs/images/chapters/weightcontrol/3d71e2b9373684eebcb0dc8563f70b18.png diff --git a/docs/index.html b/docs/index.html index 13226911..eb0e74e3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -31,7 +31,7 @@ - + @@ -581,7 +581,7 @@ Scripts are disabled. Showing fallback image. - + @@ -749,7 +749,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -758,7 +758,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -767,7 +767,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -879,7 +879,7 @@ function Bezier(3,t,w[]): Scripts are disabled. Showing fallback image. - + @@ -976,7 +976,7 @@ function RationalBezier(3,t,w[],r[]): > Scripts are disabled. Showing fallback image. - + @@ -989,7 +989,7 @@ function RationalBezier(3,t,w[],r[]): > Scripts are disabled. Showing fallback image. - + @@ -1093,7 +1093,7 @@ function RationalBezier(3,t,w[],r[]): > Scripts are disabled. Showing fallback image. - + @@ -1157,7 +1157,7 @@ function RationalBezier(3,t,w[],r[]): > Scripts are disabled. Showing fallback image. - + @@ -1166,7 +1166,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -1213,7 +1213,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + diff --git a/docs/ja-JP/index.html b/docs/ja-JP/index.html index ae9c6ec7..84bc056f 100644 --- a/docs/ja-JP/index.html +++ b/docs/ja-JP/index.html @@ -33,7 +33,7 @@ - + @@ -528,7 +528,7 @@ Scripts are disabled. Showing fallback image. - + @@ -670,7 +670,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -679,7 +679,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -688,7 +688,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -787,7 +787,7 @@ function Bezier(3,t,w[]): Scripts are disabled. Showing fallback image. - + @@ -868,14 +868,14 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + Scripts are disabled. Showing fallback image. - + @@ -965,7 +965,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -1015,7 +1015,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -1024,7 +1024,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -1066,7 +1066,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + diff --git a/docs/js/custom-element/api/README.md b/docs/js/custom-element/api/README.md index 911457ae..3fa16a5f 100644 --- a/docs/js/custom-element/api/README.md +++ b/docs/js/custom-element/api/README.md @@ -14,13 +14,17 @@ draw() { All code starts at `setup()`, automatically calling `draw()` after setup has been completed. Standard JS scoping applies, so any variable declared outside of `setup`/`draw` will be a "global" variable. -## User Events +Note that neither of these functions are _required_: without a `setup()` function the code will just jump straight to `draw()`, and without a `draw()` function the code will simply not draw anything beyond the initial empty canvas. + +## User-initiated events + +### Touch/mouse events Graphics code can react to touch/mouse, which can be handled using: - `onMouseDown()` triggered by mouse/touch start events. - `onMouseUp()` triggered by mouse/touch end events. -- `onMouseMose()` triggered by moving the mouse/your finger. +- `onMouseMove()` triggered by moving the mouse/your finger. Mouse event data can be accessed via the `this.cursor` property, which encodes: @@ -37,6 +41,35 @@ Mouse event data can be accessed via the `this.cursor` property, which encodes: } ``` +#### Example + +```js +setup() { + this.defaultBgColor = this.bgColor = `green`; +} + +draw() { + clear(this.bgColor); +} + +onMouseDown() { + this.bgColor = `blue`; + redraw(); +} + +onMouseMove() { + this.bgColor = `red`; + redraw(); +} + +onMouseUp() { + this.bgColor = this.defaultBgColor; + redraw(); +} +``` + +### Keyboard events + Graphics code can also react to keyboard events, although this is a great way to make sure your code won't work for mobile devices, so it's better to use range sliders to keep things accessible. That said, they can be handled using: - `onKeyDown()` triggered by pressing a key @@ -54,15 +87,45 @@ Additionally, the `this.keyboard` property can be consulted for named keys to se ```js draw() { - if (this.keyboard[`ArrowUp`]) { - ... + if (this.keyboard[`w`] && this.keyboard[`d`]) { + // move up-left } } ``` +#### Example + +```js +setup() { + this.y = this.height/2; +} + +draw() { + clear(); + setColor(`black`); + rect(0, this.y-1, this.width, 3); +} + +onKeyDown() { + const key = this.keyboard.currentKey; + if (key === `ArrowUp`) { + y -= 5 + } + if (key === `ArrowDown`) { + y += 5; + } + y = constrain(y, 0, this.height); + redraw(); +} +``` + ## Controllable parameters -Graphics code can be passed external values from HTML using data attributes: +Graphics code can be provided with outside values in two different ways. + +### Using fixed startup parameters + +Graphics code can be passed fixed values from HTML using data attributes: ```html @@ -74,21 +137,38 @@ which can be access on the code side using this.parameters.propname; ``` -Additionally, graphics code has special functions for range values, either directly in code: +Note that `this.parameters` is a protected object. Properties of the parameters object can be updated by your code, but you cannot reassign `this.parameters` itself. + + +### Using dynamic value sliders + +Graphics code has also be provided with dynamic values by using range sliders. There are two ways to do this: purely in code, or by tying the graphics code to HTML sliders. + +#### In code + +If sliders may be dynamically required, the `addSlider` function can be used: ```js setup() { - // name, min, max, step, initial value addSlider(`rangeValue`, 0, 1, 0.001, 0.5); } draw() { - // values defined through sliders become accessible on `this`: console.log(this.rangeValue); } ``` -Alternatively, they can be hooked into a predefined slider: +Its function signature is `addSlider(property name, min, max, step, initial value)`, in which the arguments represent: + +- `property name` a propertyname string that may start with `!`. If no `!` is used, the property name should follow the rules for variable names, as the property will be exposed as `this.propertyname` (e.g. is you use `rangeValue`, then `this.rangeValue` will exis and be kept up to date by the slider logic). If `!` is used, no `this.propertyname` will be be set up for use in your code. Regardless of whether `!` is used or not, the property name will also be displayed in the slider's UI. +- `min` the minimum numerical value this variable will be able to take on +- `max` the meximum numerical value this variable will be able to take on +- `step` the value increase/decrease per step of the slider. +- `initial value` the value that the associated variable will be assigned as part of the `addSlider` call. + +#### From HTML + +You can also "presupply" a graphic with sliders, if you know your graphic has a fixed number of dynamic variables. This uses the standard HTML `` element: ```html @@ -96,11 +176,10 @@ Alternatively, they can be hooked into a predefined slider: ``` -using the `setSlider` function: +With the graphic code using `setSlider` with a query selector to find your slider element and tie it to a variable: ```js setup() { - // local query selector, name, initial value setSlider(`.my-slider`, `rangeValue`, 0.5); } @@ -109,6 +188,17 @@ draw() { } ``` +Its function signature is `setSlider(query selector, property name, initial value)`, in which the arguments represent: + +- `query select` a CSS query selector for finding the right slider in your `` tree. If you only have one slider then this query selector can simply be `input[type=range]`, but if you have multiple sliders it's a better idea to give each slider a CSS class that can be used to indentify it. +- `property name` a propertyname string that may start with `!`. If no `!` is used, the property name should follow the rules for variable names, as the property will be exposed as `this.propertyname` (e.g. is you use `rangeValue`, then `this.rangeValue` will exis and be kept up to date by the slider logic). If `!` is used, no `this.propertyname` will be be set up for use in your code. Regardless of whether `!` is used or not, the property name will also be displayed in the slider's UI. +- `initial value` the value that the associated variable will be assigned as part of the `addSlider` call. + +Note that while it might seem that `` elements can be made fully self-descriptive for both the property name (using the `name` attribute) and initial value (using the `value` attribute), this code still needs to do the right thing even in the absence of an HTML page, and so the property name and initial value are explicitly required. + +**warning:** if you try to set up a slider for a property name that you have already defined, the code will throw a runtime error. + + ## Movable points An important part of the Graphics API is showing shapes that are controlled or defined by coordinates, and as there are special functions for marking points as "movable" - that is, these points can be click/touch-dragged around a graphic. To fascilitate this, the following functions can be used: @@ -117,12 +207,12 @@ An important part of the Graphics API is showing shapes that are controlled or d - `resetMovable()` will clear the list of movable points. - `resetMovable(points, ...)` is the same as calling `resetMovable()` followed by `setMovable(points, ...)`. + ## The API The following is the list of API functions that can be used to draw... whatever you like, really. - -### gGobal constants +### Global constants - `PI` 3.14159265358979 - `TAU` 6.28318530717958 @@ -247,7 +337,7 @@ In addition to transformations, there are also two functions to allow you to map - `drawShape(...shapes)` draw one or more saved full shapes (see below) - `image(img, x = 0, y = 0, w = auto, h = auto)` draw an image at some (x,y) coordinate, defaulting to (0,0), scaled to some width and height, defaulting to the native image dimensions - `line(x1, y1, x2, y2)` draw a line from (x1,y1) to (x2,y2) -- `plot(fn, start = 0, end = 1, steps = 24, xscale = 1, yscale = 1)` plot a function defined by `fn` (which must take a single numerical input, and output an object of the form `{x:..., y:...}`) for inputs in the interval [start,end], at a resolution of `steps` steps, with the resulting values scaled by `xscale` horizontally, and `yscale` vertically. +- `plot(fn, start = 0, end = 1, steps = 24, xscale = 1, yscale = 1)` plot a function defined by `fn` (which must take a single numerical input, and output an object of the form `{x:..., y:...}`) for inputs in the interval [start,end], at a resolution of `steps` steps, with the resulting values scaled by `xscale` horizontally, and `yscale` vertically. This function returns the plot as a `Shape` for later reuse. - `point(x, y)` draw a single point at (x,y) - `rect(x, y, w, h)` draw a rectangle from (x,y) with width `w` and height `h` - `redraw()` triggers a new draw loop. Use this instead of calling `draw()` directly when you wish to draw a new frame as part of event handling. @@ -263,7 +353,7 @@ In addition to transformations, there are also two functions to allow you to map - `saveShape()` returns the current shape for later reuse -## Built in object types +## Built-in object types ### Shape diff --git a/docs/js/custom-element/api/base-api.js b/docs/js/custom-element/api/base-api.js index 721f3fd7..3206f4b2 100644 --- a/docs/js/custom-element/api/base-api.js +++ b/docs/js/custom-element/api/base-api.js @@ -53,23 +53,27 @@ class BaseAPI { this.dataset = {}; } } - this.parameters = Object.fromEntries( - Object.entries(this.dataset) - .map((pair) => { - let name = pair[0]; - let v = pair[1]; - if (v === `null` || v === `undefined`) return []; - if (v === `true`) return [name, true]; - else if (v === `false`) return [name, false]; - else { - let d = parseFloat(v); - // Use == to evaluate "is this a string number" - if (v == d) return [name, d]; - } - return [name, v]; - }) - .filter((v) => v.length) - ); + Object.defineProperty(this, `parameters`, { + writable: false, + configurable: false, + value: Object.fromEntries( + Object.entries(this.dataset) + .map((pair) => { + let name = pair[0]; + let v = pair[1]; + if (v === `null` || v === `undefined`) return []; + if (v === `true`) return [name, true]; + else if (v === `false`) return [name, false]; + else { + let d = parseFloat(v); + // Use == to evaluate "is this a string number" + if (v == d) return [name, d]; + } + return [name, v]; + }) + .filter((v) => v.length) + ), + }); this.addListeners(); this.setSize(width, height); this.currentPoint = false; diff --git a/docs/js/custom-element/api/graphics-api.js b/docs/js/custom-element/api/graphics-api.js index 00dff793..8a5f3c54 100644 --- a/docs/js/custom-element/api/graphics-api.js +++ b/docs/js/custom-element/api/graphics-api.js @@ -605,7 +605,7 @@ class GraphicsAPI extends BaseAPI { /** * Yield a snapshot of the current shape. */ - save() { + saveShape() { return this.currentShape; } diff --git a/docs/news/2020-09-20.html b/docs/news/2020-09-18.html similarity index 97% rename from docs/news/2020-09-20.html rename to docs/news/2020-09-18.html index 160c0fd9..dbbf2c78 100644 --- a/docs/news/2020-09-20.html +++ b/docs/news/2020-09-18.html @@ -22,12 +22,12 @@ - + - - + + @@ -79,7 +79,7 @@

    Rewriting the tech stack

    - +
    diff --git a/docs/news/rss.xml b/docs/news/rss.xml index 00c70690..caf64291 100644 --- a/docs/news/rss.xml +++ b/docs/news/rss.xml @@ -16,7 +16,7 @@ Rewriting the tech stack - https://pomax.github.io/bezierinfo/news/2020-09-20.html + https://pomax.github.io/bezierinfo/news/2020-09-18.html <p>Once upon a time, I needed to draw some Bezier curves because I was trying to create a Japanese kanji composition system that turned strokes into outlines, and that required knowing how to offset Bezier curves and... at the time (2011, time flies) there was no good single source of information for Bezier curves on the web. So I made one. Sure it started small, but it turns out that if you just keep adding bits to something, several years later you have quite the monster, and a single HTML file becomes intractible.</p> <p>So, in 2016, when <a href="">React.js</a> exploded onto the scene, I rewrote the primer as a React app, and it became a lot easier to maintain. Like, <em>a lot</em> a lot. However, there was a downside: no JS meant no content. Sure, server-side rendering sort of existed, but not really, and because the Primer is hosted through github, there was no "server" to run. Plus, trying to rehydrate an app the size of the Primer from a giant HTML file had truly <em>dire</em> performance.</p> @@ -44,8 +44,8 @@ <p>See you in the next post!</p> <p>— Pomax</p> - 2020-09-20 - 2020-09-20.html + 2020-09-18 + 2020-09-18.html diff --git a/docs/zh-CN/index.html b/docs/zh-CN/index.html index 07653d75..a6598b6f 100644 --- a/docs/zh-CN/index.html +++ b/docs/zh-CN/index.html @@ -33,7 +33,7 @@ - + @@ -504,7 +504,7 @@ Scripts are disabled. Showing fallback image. - + @@ -640,7 +640,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -649,7 +649,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -658,7 +658,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -753,7 +753,7 @@ function Bezier(3,t,w[]): Scripts are disabled. Showing fallback image. - + @@ -830,14 +830,14 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + Scripts are disabled. Showing fallback image. - + @@ -920,7 +920,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -969,7 +969,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -978,7 +978,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - + @@ -1022,7 +1022,7 @@ function RationalBezier(3,t,w[],r[]): Scripts are disabled. Showing fallback image. - +
    diff --git a/docs/news/2020-09-20.md b/docs/news/2020-09-18.md similarity index 100% rename from docs/news/2020-09-20.md rename to docs/news/2020-09-18.md diff --git a/docs/news/2020-09-21-draft.md b/docs/news/2020-09-19-draft.md similarity index 100% rename from docs/news/2020-09-21-draft.md rename to docs/news/2020-09-19-draft.md diff --git a/docs/news/index.html b/docs/news/index.html index 16651be1..9d91a720 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -94,7 +94,7 @@