From d2992ebd151431b2b433b5f842b96546533593f7 Mon Sep 17 00:00:00 2001 From: Pomax Date: Thu, 3 Sep 2020 20:08:21 -0700 Subject: [PATCH] catmull rom --- docs/chapters/catmullconv/catmull-rom.js | 104 +++++--------- docs/chapters/catmullconv/content.en-GB.md | 67 +++++++-- docs/chapters/catmullconv/notes.txt | 129 +++++++++++++++++ docs/chapters/catmullfitting/content.en-GB.md | 7 + docs/chapters/catmullmolding/content.en-GB.md | 13 -- docs/chapters/catmullmolding/handler.js | 131 ------------------ docs/chapters/control/lerp.js | 25 ++-- .../chapters/curveintersection/curve-curve.js | 6 +- docs/chapters/molding/molding.js | 6 +- docs/chapters/toc.js | 2 +- .../2844a4f4d222374a25b5f673c94679d9.svg | 1 + .../a6289e403f079730b7546ab94176d42f.png | Bin 0 -> 6622 bytes .../b0cb0cccdbea86dcdd610a871e86183f.png | Bin 6856 -> 0 bytes .../2c5b710606f31ed8830397ad2a77d16e.png | Bin 0 -> 16601 bytes .../49423783987ac4bc49fbe4c519dbc1d1.png | Bin 16303 -> 0 bytes .../882ae425daeb3f449e5a4d649b8425e7.png | Bin 0 -> 30207 bytes .../afd21a9ba16965c2e7ec2d0d14892250.png | Bin 29182 -> 0 bytes .../c7cebd1c54c120c3a9513062e562f3a6.png | Bin 0 -> 13971 bytes .../ecc15848fbe7b2176b0c89973f07c694.png | Bin 13779 -> 0 bytes .../3689ed0c15eace45a1f6ae03909ad8ed.png | Bin 30413 -> 0 bytes .../eae3bb142567d9e2b8c1e4d42e8ef505.png | Bin 0 -> 32599 bytes .../502de5e21415ee75ab5d2cffbc921a77.png | Bin 0 -> 20804 bytes .../522f1edd37163772b81acb86d3a4f423.png | Bin 20003 -> 0 bytes .../610251fd14e24cd1378590de87ce2a74.png | Bin 0 -> 20804 bytes .../6b91671c2962530b863ae0da5789a9cc.png | Bin 17641 -> 0 bytes .../9a214cd85a1f0857b1b57db5e9c37b9c.png | Bin 0 -> 18348 bytes .../ea1656c068a60631135ad499e8a29453.png | Bin 17428 -> 0 bytes docs/index.html | 78 +++++++---- docs/ja-JP/index.html | 78 +++++++---- docs/js/custom-element/api/graphics-api.js | 45 +++--- docs/zh-CN/index.html | 78 +++++++---- 31 files changed, 417 insertions(+), 353 deletions(-) create mode 100644 docs/chapters/catmullconv/notes.txt create mode 100644 docs/chapters/catmullfitting/content.en-GB.md delete mode 100644 docs/chapters/catmullmolding/content.en-GB.md delete mode 100644 docs/chapters/catmullmolding/handler.js create mode 100644 docs/images/chapters/catmullconv/2844a4f4d222374a25b5f673c94679d9.svg create mode 100644 docs/images/chapters/catmullconv/a6289e403f079730b7546ab94176d42f.png delete mode 100644 docs/images/chapters/catmullconv/b0cb0cccdbea86dcdd610a871e86183f.png create mode 100644 docs/images/chapters/control/2c5b710606f31ed8830397ad2a77d16e.png delete mode 100644 docs/images/chapters/control/49423783987ac4bc49fbe4c519dbc1d1.png create mode 100644 docs/images/chapters/control/882ae425daeb3f449e5a4d649b8425e7.png delete mode 100644 docs/images/chapters/control/afd21a9ba16965c2e7ec2d0d14892250.png create mode 100644 docs/images/chapters/control/c7cebd1c54c120c3a9513062e562f3a6.png delete mode 100644 docs/images/chapters/control/ecc15848fbe7b2176b0c89973f07c694.png delete mode 100644 docs/images/chapters/curveintersection/3689ed0c15eace45a1f6ae03909ad8ed.png create mode 100644 docs/images/chapters/curveintersection/eae3bb142567d9e2b8c1e4d42e8ef505.png create mode 100644 docs/images/chapters/molding/502de5e21415ee75ab5d2cffbc921a77.png delete mode 100644 docs/images/chapters/molding/522f1edd37163772b81acb86d3a4f423.png create mode 100644 docs/images/chapters/molding/610251fd14e24cd1378590de87ce2a74.png delete mode 100644 docs/images/chapters/molding/6b91671c2962530b863ae0da5789a9cc.png create mode 100644 docs/images/chapters/molding/9a214cd85a1f0857b1b57db5e9c37b9c.png delete mode 100644 docs/images/chapters/molding/ea1656c068a60631135ad499e8a29453.png diff --git a/docs/chapters/catmullconv/catmull-rom.js b/docs/chapters/catmullconv/catmull-rom.js index 587b87b4..ff59dcbb 100644 --- a/docs/chapters/catmullconv/catmull-rom.js +++ b/docs/chapters/catmullconv/catmull-rom.js @@ -12,108 +12,71 @@ setup() { ]; setMovable(points); knots = [0, 1/3, 2/3, 1]; - setSlider(`.slide-control.tension`, `tension`, 0.5); + setSlider(`.slide-control.tension`, `tension`, 0.5, v => this.transformTension(v)); } -onTension(v) { - if (v < 0.5) { - v = map(v,0.5,0,1,4); - v = 1/v; - } else { - v = map(v,0.5,1,1,4); - } - this.tension = v; +transformTension(v) { + return (v < 0.5) ? 1 / map(v, 0.5,0, 1,10) : map(v, 0.5,1, 1,10); } draw() { clear(); - const [first, last] = this.generateVirtualPoints(); - const full = [first, ...points, last]; - - for (let i=0, e=full.length-3; i { setColor( randomColor() ); circle(p.x, p.y, 3); }); } -generateVirtualPoints() { - // see http://www.sdmath.com/math/geometry/reflection_across_line.html#formulasmb - const n = points.length, - p1 = points[0], - p2 = points[1], - p3 = points[n-2], - p4 = points[n-1], - m = (p4.y-p1.y)/(p4.x-p1.x), - b = (p4.x*p1.y-p1.x*p4.y)/(p4.x-p1.x), - ratio = 0.5; - - return [[p2,p1], [p3,p4]].map(pair => { - const p = pair[0], - M = pair[1], - reflected = { - x: M.x - (p.x - M.x), - y: M.y - (p.y - M.y), - }, - projected = { - x: ((1 - m**2)*p.x + 2*m*p.y - 2*m*b) / (m**2 + 1), - y: ((m**2 - 1)*p.y + 2*m*p.x + 2*b) / (m**2 + 1) - }; - return { - x: (1-ratio) * reflected.x + ratio * projected.x, - y: (1-ratio) * reflected.y + ratio * projected.y - }; - }); -} - dragSegment(p0, p1, p2, p3) { - const alpha = 0.5, - t0 = 0, - // See https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline#Definition - t1 = t0 + ((p1.x-p0.x)**2 + (p1.y-p0.y)**2)**alpha, - t2 = t1 + ((p2.x-p1.x)**2 + (p2.y-p1.y)**2)**alpha, - t3 = t2 + ((p3.x-p2.x)**2 + (p3.y-p2.y)**2)**alpha, - s = (t2 - t1) / this.tension, - // See https://stackoverflow.com/a/23980479/740553 - tangent1 = { - x: s * ((p1.x-p0.x)/(t1-t0) - (p2.x-p0.x)/(t2-t0) + (p2.x-p1.x)/(t2-t1)), - y: s * ((p1.y-p0.y)/(t1-t0) - (p2.y-p0.y)/(t2-t0) + (p2.y-p1.y)/(t2-t1)) + const s = 2 * this.tension, + m1 = { + x: (p2.x - p0.x) / s, + y: (p2.y - p0.y) / s }, - tangent2 = { - x: s * ((p2.x-p1.x)/(t2-t1) - (p3.x-p1.x)/(t3-t1) + (p3.x-p2.x)/(t3-t2)), - y: s * ((p2.y-p1.y)/(t2-t1) - (p3.y-p1.y)/(t3-t1) + (p3.y-p2.y)/(t3-t2)) + m2 = { + x: (p3.x - p1.x) / s, + y: (p3.y - p1.y) / s }; noFill(); setStroke( randomColor() ); start(); - this.markCoordinate(0, p1,p2,tangent1,tangent2); - for(let s=0.01, t=s; t<1; t+=0.01) this.markCoordinate(t, p1,p2,tangent1,tangent2); - this.markCoordinate(1, p1,p2,tangent1,tangent2); + this.addCoordinate(0, p1, p2, m1, m2); + for(let s=0.01, t=s; t<1; t+=0.01) this.addCoordinate(t, p1, p2, m1, m2); + this.addCoordinate(1, p1, p2, m1, m2); end(); } -markCoordinate(t, p0, p1, m0, m1) { +addCoordinate(t, p0, p1, m0, m1) { + // See https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Unit_interval_(0,_1) let c = 2*t**3 - 3*t**2, c0 = c + 1, c1 = t**3 - 2*t**2 + t, c2 = -c, - c3 = t**3 - t**2, - point = { - x: c0 * p0.x + c1 * m0.x + c2 * p1.x + c3 * m1.x, - y: c0 * p0.y + c1 * m0.y + c2 * p1.y + c3 * m1.y - }; - vertex(point.x, point.y); + c3 = t**3 - t**2; + + vertex( + c0 * p0.x + c1 * m0.x + c2 * p1.x + c3 * m1.x, + c0 * p0.y + c1 * m0.y + c2 * p1.y + c3 * m1.y + ) } onMouseDown() { @@ -121,7 +84,6 @@ onMouseDown() { let {x, y} = this.cursor; points.push({ x, y }); resetMovable(points); - console.log(JSON.stringify(points)) redraw(); } } diff --git a/docs/chapters/catmullconv/content.en-GB.md b/docs/chapters/catmullconv/content.en-GB.md index 4dbb291e..be538ba4 100644 --- a/docs/chapters/catmullconv/content.en-GB.md +++ b/docs/chapters/catmullconv/content.en-GB.md @@ -1,20 +1,67 @@ # Bézier curves and Catmull-Rom curves -Taking an excursion to different splines, the other common design curve is the [Catmull-Rom spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline), which unlike Bézier curves pass _through_ the points you define. In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, or you can click/tap somewhere to extend the curve. +Taking an excursion to different splines, the other common design curve is the [Catmull-Rom spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline), which unlike Bézier curves pass _through_ each control point, so they offer a kind of "nuilt-in" curve fitting. + +In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, and lets you add points by clicking/tapping the background, as well as let you control "how fast" the curve passes through its point using the tension slider. The tenser the curve, the more the curve tends towards straight lines from one point to the next. -You may have noticed the slider that seems to control the "tension" of the curve: that's a feature of Catmull-Rom curves; because Catmull-Rom curves pass through points, the curve tightness is controlled by a tension factor, rather than by moving control points around. +Now, it may look like Catmull-Rom curves are very different from Bézier curves, because these curves can get very long indeed, but what looks like a single Catmull-Rom curve is actually a [spline](https://en.wikipedia.org/wiki/Spline_(mathematics)): a single curve built up of lots of identically-computed pieces, similar to if you just took a whole bunch of Bézier curves, placed them end to end, and lined up their control points so that things look like a single curve. For a Catmull-Rom curve, each "piece" between two points is defined by the point's coordinates, and the tangent for those points, the latter of which [can trivially be derived](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull%E2%80%93Rom_spline) from knowing the previous and next point: -What you may _also_ have noticed is that the Catmull-Rom curve seems to just go on forever: add as many points as you like, same curve, rigth? Well, sort of. Catmull-Rom curves are splines, a type of curve with arbitrary number of points, technically consisting of "segments between sets of points", but with maths that makes all the segments line up neatly. As such, at its core a Catmull-Rom consists of two points, and draws a curve between them based on the tangents at those points. +\[ + \begin{bmatrix} + P_1 \\ + P_2 \\ + P_3 \\ + P_4 + \end{bmatrix}_{points} + = + \left [ + \begin{array}{rl} + V_1 &= P_2 \\ + V_2 &= P_3 \\ + V'_1 &= \frac{P_3 - P_1}{2} \\ + V'_2 &= \frac{P_4 - P_2}{2} + \end{array} + \right ]_{point-tangent} +\] -Now, a Catmull-Rom spline is a form of [cubic Hermite spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline), and as it so happens, the cubic Bézier curve is _also_ a cubic Hermite spline, so in an interesting bit of programming maths: we can losslessly convert between the two, and the maths (well, the final maths) is surprisingly simple! +One downside of this is that—as you may have noticed from the graphic—the first and last point of the overall curve don't actually join up with the rest of the curve: they don't have a previous/next point respectively, and so there is no way to calculate what their tangent should be. Which also makes it rather tricky to fit a Camull-Rom curve to three points like we were able to do for Bézier curves. More on that in [the next section](#catmullfitting). -The main difference between Catmull-Rom curves and Bezier curves is "what the points mean". A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point. A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point. Those are _very_ similar, so let's see exactly _how_ similar they are. +In fact, before we move on, let's look at how to actually draw the basic form of these curves (I say basic, because there are a number of variations that make things [considerable](https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline#Definition) more [complex](https://en.wikipedia.org/wiki/Kochanek%E2%80%93Bartels_spline)): -We start with the matrix form of thee Catmull-Rom curve, which looks similar to the Bézier matrix form, with slightly different values in the matrix, and a slightly different coordinate vector: +``` +tension = some value greater than 0, defaulting to 1 +points = a list of at least 4 coordinates + +for p = 1 to points.length-3 (inclusive): + p0 = points[p-1] + v1 = p1 = points[p] + v2 = p2 = points[p+1] + p3 = points[p+2] + + s = 2 * tension + dv1 = (p2-p0) / s + dv2 = (p3-p1) / s + + for t = 0 to 1 (inclusive): + c0 = 2*t^3 - 3*t^2 + 1, + c1 = t^3 - 2*t^2 + t, + c2 = -2*t^3 + 3*t^2, + c3 = t^3 - t^2 + point(c0 * v1 + c1 * dv1 + c2 * v2 + c3 * dv2) +``` + +Now, since a Catmull-Rom curve is a form of [cubic Hermite spline](https://en.wikipedia.org/wiki/Cubic_Hermite_spline), and as cubic Bézier curves are _also_ a form of cubic Hermite spline, we run into an interesting bit of maths programming: we can losslessly convert between the two, and the maths for doing so is surprisingly simple! + +The main difference between Catmull-Rom curves and Bézier curves is "what the points mean": + +- A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point, plus a characterising matrix that we can multiply by that point vector to get on-curve coordinates. +- A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point, plus a characteristic matrix that we can multiple by the point vector to get on-curve coordinates. + +Those are _very_ similar, so let's see exactly _how_ similar they are. We've already see the matrix form for Bézier curves, so how different is the matrix form for Catmull-Rom curves?: \[ CatmullRom(t) = @@ -34,7 +81,7 @@ We start with the matrix form of thee Catmull-Rom curve, which looks similar to \end{bmatrix} \] -So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression that uses Bézier matrix and vector? The short answer is of course "by using linear algebra", but the real answer is a bit longer, and involves some maths that you may not even care for: just skip over the next bit to see the incredibly simple conversions between the formats, but if you want to know _why_... let's go! +That's pretty dang similar. So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression of the Bézier matrix and vector? The short answer is of course "by using linear algebra", but the longer answer is the rest of this section, and involves some maths that you may not even care for: if you just want to know the (incredibly simple) conversions between the two curve forms, feel free to skip to the end of the following explanation, but if you want to _how_ we can get one from the other... let's get mathing!
@@ -42,7 +89,7 @@ So the question is: how can we convert that expression with Catmull-Rom matrix a In order to convert between Catmull-Rom curves and Bézier curves, we need to know two things. Firstly, how to express the Catmull-Rom curve using a "set of four coordinates", rather than a mix of coordinates and tangents, and secondly, how to convert those Catmull-Rom coordinates to and from Bézier form. -So, let's start with the first, where we want to satisfy the following equality: +We start with the first part, to figure out how we can go from Catmull-Rom **V** coordinates to Bézier **P** coordinates, by applying "some matrix **T**". We don't know what that **T** is yet, but we'll get to that: \[ \begin{bmatrix} @@ -60,7 +107,7 @@ So, let's start with the first, where we want to satisfy the following equality: \end{bmatrix} \] -This mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively. +So, this mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively. Computing T is really more "arranging the numbers": @@ -107,7 +154,7 @@ Thus: \end{bmatrix} \] -However, we're not quite done, because Catmull-Rom curves have a parameter called "tension", written as τ ("tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T: +However, we're not quite done, because Catmull-Rom curves have that "tension" parameter, written as τ (a lowercase"tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T: \[ \begin{bmatrix} diff --git a/docs/chapters/catmullconv/notes.txt b/docs/chapters/catmullconv/notes.txt new file mode 100644 index 00000000..3312534d --- /dev/null +++ b/docs/chapters/catmullconv/notes.txt @@ -0,0 +1,129 @@ +THE FOLLOWING CODE IS FOR COMPUTING THE FAR MORE COMPLEX CENTRIPETAL CATMULL ROM CURVE AND IS PRETTY MUCH OUT OF SCOPE (for now?) + + +let points, knots; + +setup() { + points = [ + {x:38,y:136}, + {x:65,y:89}, + {x:99,y:178}, + {x:149,y:93}, + {x:191,y:163}, + {x:227,y:122}, + {x:251,y:132} + ]; + setMovable(points); + knots = [0, 1/3, 2/3, 1]; + setSlider(`.slide-control.tension`, `tension`, 0.5); +} + +onTension(v) { + if (v < 0.5) { + v = map(v,0.5,0,1,4); + v = 1/v; + } else { + v = map(v,0.5,1,1,4); + } + this.tension = v; +} + +draw() { + clear(); + + const [first, last] = this.generateVirtualPoints(); + const full = [first, ...points, last]; + + for (let i=0, e=full.length-3; i { + setColor( randomColor() ); + circle(p.x, p.y, 3); + }); +} + +generateVirtualPoints() { + // see http://www.sdmath.com/math/geometry/reflection_across_line.html#formulasmb + const n = points.length, + p1 = points[0], + p2 = points[1], + p3 = points[n-2], + p4 = points[n-1], + m = (p4.y-p1.y)/(p4.x-p1.x), + b = (p4.x*p1.y-p1.x*p4.y)/(p4.x-p1.x), + ratio = 0.5; + + return [[p2,p1], [p3,p4]].map(pair => { + const p = pair[0], + M = pair[1], + reflected = { + x: M.x - (p.x - M.x), + y: M.y - (p.y - M.y), + }, + projected = { + x: ((1 - m**2)*p.x + 2*m*p.y - 2*m*b) / (m**2 + 1), + y: ((m**2 - 1)*p.y + 2*m*p.x + 2*b) / (m**2 + 1) + }; + return { + x: (1-ratio) * reflected.x + ratio * projected.x, + y: (1-ratio) * reflected.y + ratio * projected.y + }; + }); +} + +dragSegment(p0, p1, p2, p3) { + const alpha = 0.5, + t0 = 0, + // See https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline#Definition + t1 = t0 + ((p1.x-p0.x)**2 + (p1.y-p0.y)**2)**alpha, + t2 = t1 + ((p2.x-p1.x)**2 + (p2.y-p1.y)**2)**alpha, + t3 = t2 + ((p3.x-p2.x)**2 + (p3.y-p2.y)**2)**alpha, + s = (t2 - t1) / this.tension, + // See https://stackoverflow.com/a/23980479/740553 + tangent1 = { + x: s * ((p1.x-p0.x)/(t1-t0) - (p2.x-p0.x)/(t2-t0) + (p2.x-p1.x)/(t2-t1)), + y: s * ((p1.y-p0.y)/(t1-t0) - (p2.y-p0.y)/(t2-t0) + (p2.y-p1.y)/(t2-t1)) + }, + tangent2 = { + x: s * ((p2.x-p1.x)/(t2-t1) - (p3.x-p1.x)/(t3-t1) + (p3.x-p2.x)/(t3-t2)), + y: s * ((p2.y-p1.y)/(t2-t1) - (p3.y-p1.y)/(t3-t1) + (p3.y-p2.y)/(t3-t2)) + }; + + noFill(); + setStroke( randomColor() ); + + start(); + this.markCoordinate(0, p1,p2,tangent1,tangent2); + for(let s=0.01, t=s; t<1; t+=0.01) this.markCoordinate(t, p1,p2,tangent1,tangent2); + this.markCoordinate(1, p1,p2,tangent1,tangent2); + end(); +} + +markCoordinate(t, p0, p1, m0, m1) { + let c = 2*t**3 - 3*t**2, + c0 = c + 1, + c1 = t**3 - 2*t**2 + t, + c2 = -c, + c3 = t**3 - t**2, + point = { + x: c0 * p0.x + c1 * m0.x + c2 * p1.x + c3 * m1.x, + y: c0 * p0.y + c1 * m0.y + c2 * p1.y + c3 * m1.y + }; + vertex(point.x, point.y); +} + +onMouseDown() { + if (!this.currentPoint) { + let {x, y} = this.cursor; + points.push({ x, y }); + resetMovable(points); + redraw(); + } +} diff --git a/docs/chapters/catmullfitting/content.en-GB.md b/docs/chapters/catmullfitting/content.en-GB.md new file mode 100644 index 00000000..8d69cae1 --- /dev/null +++ b/docs/chapters/catmullfitting/content.en-GB.md @@ -0,0 +1,7 @@ +# Creating a Catmull-Rom curve from three points + +Much shorter than the previous section: we saw that Catmull-Rom curves need at least 4 points to draw anything sensible, so how do we create a Catmull-Rom curve from three points? + +Short and sweet: we don't. + +We run through the maths that lets us [create a cubic Bézier curve](pointcurves), and then convert its coordinates to Catmull-Rom form using the conversion formulae we saw above. diff --git a/docs/chapters/catmullmolding/content.en-GB.md b/docs/chapters/catmullmolding/content.en-GB.md deleted file mode 100644 index 0bf1fa67..00000000 --- a/docs/chapters/catmullmolding/content.en-GB.md +++ /dev/null @@ -1,13 +0,0 @@ -# Creating a Catmull-Rom curve from three points - -Now, we saw how to fit a Bézier curve to three points, but if Catmull-Rom curves go through points, why can't we just use those to do curve fitting, instead? - -As a matter of fact, we can, but there's a difference between the kind of curve fitting we did in the previous section, and the kind of curve fitting that we can do with Catmull-Rom curves. In the previous section we came up with a single curve that goes through three points. There was a decent amount of maths and computation involved, and the end result was three or four coordinates that described a single curve, depending on whether we were fitting a quadratic or cubic curve. - -Using Catmull-Rom curves, we need virtually no computation, but even though we end up with one Catmull-Rom curve of n points, in order to draw the equivalent curve using cubic Bézier curves we need a massive 3n-2 points (and that's without double-counting points that are shared by consecutive cubic curves). - -In the following graphic, on the left we see three points that we want to draw a Catmull-Rom curve through (which we can move around freely, by the way), with in the second panel some of the "interesting" Catmull-Rom information: in black there's the baseline start--end, which will act as tangent orientation for the curve at point p2. We also see a virtual point p0 and p4, which are initially just point p2 reflected over the baseline. However, by using the up and down cursor key we can offset these points parallel to the baseline. Why would we want to do this? Because the line p0--p2 acts as departure tangent at p1, and the line p2--p4 acts as arrival tangent at p3. Play around with the graphic a bit to get an idea of what all of that meant: - - - -As should be obvious by now, Catmull-Rom curves are great for "fitting a curvature to some points", but if we want to convert that curve to Bézier form we're going to end up with a lot of separate (but visually joined) Bézier curves. Depending on what we want to do, that'll be either unnecessary work, or exactly what we want: which it is depends entirely on you. diff --git a/docs/chapters/catmullmolding/handler.js b/docs/chapters/catmullmolding/handler.js deleted file mode 100644 index 01729130..00000000 --- a/docs/chapters/catmullmolding/handler.js +++ /dev/null @@ -1,131 +0,0 @@ -module.exports = { - statics: { - keyHandlingOptions: { - propName: "distance", - values: { - "38": 1, // up arrow - "40": -1 // down arrow - } - } - }, - - setup: function(api) { - api.setPanelCount(3); - api.lpts = [ - {x:56, y:153}, - {x:144,y:83}, - {x:188,y:185} - ]; - api.distance = 0; - }, - - convert: function(p1, p2, p3, p4) { - var t = 0.5; - return [ - p2, { - x: p2.x + (p3.x-p1.x)/(6*t), - y: p2.y + (p3.y-p1.y)/(6*t) - }, { - x: p3.x - (p4.x-p2.x)/(6*t), - y: p3.y - (p4.y-p2.y)/(6*t) - }, p3 - ]; - }, - - draw: function(api) { - api.reset(); - api.setColor("lightblue"); - api.drawGrid(10,10); - - var pts = api.lpts; - api.setColor("black"); - api.setFill("black"); - pts.forEach((p,pos) => { - api.drawCircle(p, 3); - api.text("point "+(pos+1), p, {x:10, y:7}); - }); - - var w = api.getPanelWidth(); - var h = api.getPanelHeight(); - var offset = {x:w, y:0}; - api.setColor("lightblue"); - api.drawGrid(10,10,offset); - api.setColor("black"); - api.drawLine({x:0,y:0}, {x:0,y:h}, offset); - - pts.forEach((p,pos) => { - api.drawCircle(p, 3, offset); - }); - var p1 = pts[0], p2 = pts[1], p3 = pts[2]; - var dx = p3.x - p1.x, - dy = p3.y - p1.y, - m = Math.sqrt(dx*dx + dy*dy); - dx /= m; - dy /= m; - api.drawLine(p1, p3, offset); - - var p0 = { - x: p1.x + (p3.x - p2.x) - api.distance * dx, - y: p1.y + (p3.y - p2.y) - api.distance * dy - }; - var p4 = { - x: p1.x + (p3.x - p2.x) + api.distance * dx, - y: p1.y + (p3.y - p2.y) + api.distance * dy - }; - var center = api.utils.lli4(p1,p3,p2,{ - x: (p0.x + p4.x)/2, - y: (p0.y + p4.y)/2 - }); - api.setColor("blue"); - api.drawCircle(center, 3, offset); - api.drawLine(pts[1],center, offset); - api.setColor("#666"); - api.drawLine(center, p0, offset); - api.drawLine(center, p4, offset); - - api.setFill("blue"); - api.text("p0", p0, {x:-20 + offset.x, y:offset.y + 2}); - api.text("p4", p4, {x:+10 + offset.x, y:offset.y + 2}); - - // virtual point p0 - api.setColor("red"); - api.drawCircle(p0, 3, offset); - api.drawLine(p2, p0, offset); - api.drawLine(p1, { - x: p1.x + (p2.x - p0.x)/5, - y: p1.y + (p2.y - p0.y)/5 - }, offset); - - // virtual point p4 - api.setColor("#00FF00"); - api.drawCircle(p4, 3, offset); - api.drawLine(p2, p4, offset); - api.drawLine(p3, { - x: p3.x + (p4.x - p2.x)/5, - y: p3.y + (p4.y - p2.y)/5 - }, offset); - - // Catmull-Rom curve for p0-p1-p2-p3-p4 - var c1 = new api.Bezier(this.convert(p0,p1,p2,p3)), - c2 = new api.Bezier(this.convert(p1,p2,p3,p4)); - api.setColor("lightgrey"); - api.drawCurve(c1, offset); - api.drawCurve(c2, offset); - - - offset.x += w; - api.setColor("lightblue"); - api.drawGrid(10,10,offset); - api.setColor("black"); - api.drawLine({x:0,y:0}, {x:0,y:h}, offset); - - api.drawCurve(c1, offset); - api.drawCurve(c2, offset); - api.drawPoints(c1.points, offset); - api.drawPoints(c2.points, offset); - api.setColor("lightgrey"); - api.drawLine(c1.points[0], c1.points[1], offset); - api.drawLine(c1.points[2], c2.points[1], offset); - api.drawLine(c2.points[2], c2.points[3], offset); - } -}; diff --git a/docs/chapters/control/lerp.js b/docs/chapters/control/lerp.js index b78d1ae2..aa8ab297 100644 --- a/docs/chapters/control/lerp.js +++ b/docs/chapters/control/lerp.js @@ -22,27 +22,15 @@ setup() { this.f = [...new Array(degree + 1)].map((_,i) => { return t => ({ x: t * w, - y: h * this.binomial(degree,i) * (1-t) ** (degree-i) * t ** (i) + y: h * binomial(degree,i) * (1-t) ** (degree-i) * t ** (i) }); }); } - this.s = this.f.map(f => plot(f, 0, 1, degree*4) ); + this.s = this.f.map(f => plot(f, 0, 1, degree*5) ); setSlider(`.slide-control`, `position`, 0) } -binomial(n,k) { - if (!this.triangle[n]) { - while(!this.triangle[n]) { - let last = this.triangle.slice(-1)[0]; - let next = last.map((v,i) => v + last[i+1]); - next.pop(); - this.triangle.push([1, ...next, 1]); - } - } - return this.triangle[n][k]; -} - draw() { clear(); setFill(`black`); @@ -54,8 +42,13 @@ draw() { noFill(); - this.s.forEach(s => { - setStroke( randomColor() ); + this.s.forEach((s,i) => { + setStroke( randomColor(0.2)); + line( + i/(this.s.length-1) * this.width, 0, + i/(this.s.length-1) * this.width, this.height + ) + setStroke( randomColor(1.0, false )); drawShape(s); }) diff --git a/docs/chapters/curveintersection/curve-curve.js b/docs/chapters/curveintersection/curve-curve.js index 6a0a0d0b..6acf0a7c 100644 --- a/docs/chapters/curveintersection/curve-curve.js +++ b/docs/chapters/curveintersection/curve-curve.js @@ -4,7 +4,7 @@ setup() { setPanelCount(3); this.pairReset(); this.setupEventListening(); - setSlider(`.slide-control`, `epsilon`, 1.0); + setSlider(`.slide-control`, `epsilon`, 1.0, v => this.reset()); } pairReset() { @@ -124,7 +124,3 @@ onMouseMove() { redraw(); } } - -onEpsilon(value) { - this.reset(); -} diff --git a/docs/chapters/molding/molding.js b/docs/chapters/molding/molding.js index ec0adad2..152bf018 100644 --- a/docs/chapters/molding/molding.js +++ b/docs/chapters/molding/molding.js @@ -191,7 +191,7 @@ drawResult() { if (this.molded) last = this.molded; last.drawSkeleton(`lightblue`); - last.drawCurve(this.parameters.interpolated ? `lightblue` : `black`); + last.drawCurve(this.cursor.down ? `lightblue` : `black`); last.points.forEach(p => circle(p.x, p.y, 2)); if (this.mark) { @@ -253,10 +253,10 @@ onMouseMove() { onMouseUp() { this.mark = false; if (this.molded) { - curve = this.interpolated ?? this.molded; + curve = this.interpolated || this.molded; + resetMovable(curve.points, [this.position]); this.interpolated = false; this.molded = false; - resetMovable(curve.points, [this.position]); } redraw(); } diff --git a/docs/chapters/toc.js b/docs/chapters/toc.js index ac08ca25..50d882e0 100644 --- a/docs/chapters/toc.js +++ b/docs/chapters/toc.js @@ -52,7 +52,7 @@ export default [ // A quick foray into Catmull-Rom splines 'catmullconv', - 'catmullmolding', + 'catmullfitting', // "things made of more than on curve" 'polybezier', diff --git a/docs/images/chapters/catmullconv/2844a4f4d222374a25b5f673c94679d9.svg b/docs/images/chapters/catmullconv/2844a4f4d222374a25b5f673c94679d9.svg new file mode 100644 index 00000000..1c3bff2f --- /dev/null +++ b/docs/images/chapters/catmullconv/2844a4f4d222374a25b5f673c94679d9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/chapters/catmullconv/a6289e403f079730b7546ab94176d42f.png b/docs/images/chapters/catmullconv/a6289e403f079730b7546ab94176d42f.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6a47d3044db81bb91d484fb8bf97da27f84e09 GIT binary patch literal 6622 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 SpJ6|201!1D)pBL4;Qs-T4K{ZG literal 0 HcmV?d00001 diff --git a/docs/images/chapters/catmullconv/b0cb0cccdbea86dcdd610a871e86183f.png b/docs/images/chapters/catmullconv/b0cb0cccdbea86dcdd610a871e86183f.png deleted file mode 100644 index 106a47baeca559cd44087e5965ab4e8705338d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6856 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 diff --git a/docs/images/chapters/control/2c5b710606f31ed8830397ad2a77d16e.png b/docs/images/chapters/control/2c5b710606f31ed8830397ad2a77d16e.png new file mode 100644 index 0000000000000000000000000000000000000000..39aaa2f1441ba85e9eecf7d38358efba482c0ad8 GIT binary patch literal 16601 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 z z#-P#t`qS2vR0{HE70^KV{~q~A)*}UCUN9pH5L@4fribzd+yc9}fE7T93(E*q{L=OP EKfmGlegFUf literal 0 HcmV?d00001 diff --git a/docs/images/chapters/control/49423783987ac4bc49fbe4c519dbc1d1.png b/docs/images/chapters/control/49423783987ac4bc49fbe4c519dbc1d1.png deleted file mode 100644 index aa6f0a674f050f9406d9ff95ad6ea3879770ec72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16303 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 Qh^`-`#O1}RMGS!d4{|g9(EtDd literal 0 HcmV?d00001 diff --git a/docs/images/chapters/control/afd21a9ba16965c2e7ec2d0d14892250.png b/docs/images/chapters/control/afd21a9ba16965c2e7ec2d0d14892250.png deleted file mode 100644 index bb0f9ac16f03c74e6bfabe51819671499038cd76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29182 zcmV*$KsmpOP)r9f#wEO)2hy+4rGV!~*`1*bMyk5M*oO7OY zo_p`P&w1K8R}m56Bu?TaPU1g==0r1a5+`vI|9{}5Fgb~nIEh~cCxyvLoWx1|DmW=j zPU0j^;#a{*VR8~DaT31@PN*;`FE3}wk|kthWSmGgPU0l~zei?fCJPoUVEy{_zu6ck zOqkegHfGJ5MSgxhmtA%l6%`dHij|WX0%>V!tX{qPM6+=czXCEdGyne-CVThpB|18q zrAwD`?X}mkcJ0~|#mY%IL0VcG&ph)C&p!LCQ-QK+(Ts3F1zfq z-*k)(^3F;`aqbQBYNNK$%{zConLu|F_j@J-INP1jq@3)oPXa z_;|VV&O0R{B0|c`%TE+5Cou%puU{_-2??@l)hdVeMx#-tPoFM}7A^WOb9NHH1Q{6_ za_Oa)%G9Y-W!<`UzsVRUOf%8xbZpzUjdknRamO8Z5EmDBqF6bJA#m}<7gJkX>(pm* z@Zdr2y6Y}(zy0?AGG{08OEGQQG^S0P_M7#uh@9Ltd=e*d68|}VaWp4AJ)I>>mh|U^ z*zIO zc=OFSnKy49+1c4FS+a!Y=H}mu-;+3rllYzD7x_%qtXaeL*I&FA(ZXzQigS~tAvSP&w($mw2-RIl?yvaq2Un@!=L-sZ-TTeOCP#IVT$nibPfNBRF z4IWfEu0T1CUO9$HQDi^|eZPPHs|aZN>Jbz zAjdFa(+=dwraSsuMZt~^RnefLU_*;t(PG#1tyxx^zMl<2K~=R!d9v%Ut6H?G21Nxi zdxBkq&Zh0VoL)~51+lrKv1`zn-4VMER4wjy6*s#bt=)=(;9<4_f}3gv0iBrp$I*x# zjoABsxZA+Z-gj@@ZJ>Zw*VDJey4w(qfUfV}ShX5#S_QjC!KT%qDq!^hQNXHIP!$EM zRs*77wYg)p>#>L%qH0i8Evj9MDo3wZ+pEXTszqnlqO)nyn%&W;;AYpNRTZ?Vf=~jVN%h2H@xW^GK(n~KL zvcCsEe3N*q{(sN?&u}IP6bFrl5*kj$mNMwAA2jk2K_H4UK(O?`h{~}7=jXPfaIA9Z zh_|0b!jU(}W*LiXH9Gt~o^n(4s0@Y&snx zIuyG*B7OhtxM5e^u<3h2V?n&S(I^(w;9eBz6IW<#h?^a|UPW~W(SXLPpfM|GExJCw z?HUvXG&&VUqoC0UikqNlk6BbKTEwQqsPUjnyfEtYbSob8=ydex-00D{V^=hQptq~I z*;O>XI;7JR)!>7@%?o?4J2sOiHnRt)8bnpl>TGDVRs!uRp%#S@la`=fEk0%)o)!%r zRvk92irL+US!YG-R)d>Tg&Q5X(SaTVf?!wNu_|7e0<@UJ%$UP0SVB#hylf~IEt(#8 zti4{;dxX&J=in`$OGat@=z&qt&6qR!MtWp@izJuT!L>nJwX6YCwyq<~n?3K>JFHjvg13vHcd zD(ZSDt?r_%rkkd=UXo&cnVcNJm^aORIj0{2V5rmu0 z4>UULfJL=nv76{Jw_>(;6W}qDVDDJMea8^tHx_sI2u!M#R&y7X-7ORtYboz;rqOJm z)6$DY1RWZD+}#Lu_aV+Zm_)Bog7HUZ)1z4QSh_S=x)eGLR+`()RM+=V-C&~AV8z`- z16t@+RRRLsh>G+iB3Ms^ryC(|I{Z`xZ@b`W7PMV9q}_t4p%+tK57rJViiZ{zu$Vy` z;D$%E7e3Kmc!uh64|K!L!;Hqmf_r_C7m2D>7=-- z3vW*yF_B)x#(Oa`+>5XvJt2X5g8khvSD9!(*g@OD4h%&`Jio=m)=ouAo8j-%^ zi0~VWk3IyG-OATBnf%a@%NZdF{4pS!N&X}8*6GPO+|H8a#aw+(1lL^_jaI8r`)xIi z8TELN4Ef*4iDBUvMRWf7&wo-|Tib8uy!6sboO$M%0IXlXp850VbJkgB5g#8c8;4$Vv>%&YC@eQ{u&{%J1s&8jnK*k|DCeIRPGXGDfNM}~Du%)?I&wPcINXV$ z$cXi7@|(_$woDZ`MLX7ro_G7|V+B9W|Q33DXFgd@7z1 zBL?&@B6RlF)7o7@qp^VU_H0^vD(O{xXb>MnA4fu93W+{ZjPwj)q-QVz?mn38R?53u zDC=sbq^pU1V*^H8FG)V(jPr{k${s;eB^)g7prpo#kEf2&(Y_=_`{3v4hTRIC9TqBT zy2&dxVzJm6li*8Al0P#h2jOpr#?&@ib35rMG@^Ca5;)Emzc_C^{oT-L!EUh9Rb;?e zY{cGW!za;~fXRV)M4B))WYbxYOIJw|Iv-zr$Be~iR3bicqwtQ6N9*Z{#n6GNu?ACP z4P8|ww3TMl+t!FRSVMQ19rwgoLgJ?q>YGfUcO1SRk%N-wYE5mVwUv_DUQV&Go+RH0 zMtk`XrnTdV5re6ks*Xdr>pY3^pGcI~4C*SQ*_YixUa5hkIA11=_Gf&eKVxEj(CG%c z8I2`f)Ng5|ad$IbBRmP397y0~fBeVzp&V-hTFf-<+e!WQjo3{+gr9vOf#av(9h)$K zXJc;@dn=YxZ^$DlbSC2>E+oM7=$x>L%Er1wd|i{t1>xhkCVD!aTDSiCH$N;Uzr@I+ zca0%-q&EQO7Bhz*&BFH&dx<>f68uIbJ9{PnBm5#^QeIxpnP;BK<(FU1mMvQ-Dk?&& z?Xv@C&6>sBxpT2vt-Sm0yTj5p< zLFH#3Vrpz4<+1r_JqPAMhzO-k+sUl>kkJtrGAa66v>Nw8;};m~*jS%MT3acXMo!_+ zBTvKQmHq zUlmW}^idA)f!OUBOABZ_lu2v)9sokmIFGP1&c!1%0udpzy@V}IS!8#V6Xg-aw4ek= z>-9))IaTc$beWrp3z|W4`1wTojdM7T%`WUOXl6rh2{~PLXu=IBUREahMl&aNEHgsl zhRk9$_1Z|^(!l;*O=Q<}VNqaWj1T9W8O9msN1*d`uH=dct?3ywY|5hZP$y!G1~m}B z@ji^WG=ZQQ;R9a0W6@;DqquP^)orPG>qChSm`-qa1X9sJTkZjRo9YNio+V2{u{bGqqX!5B<&YFX7!r+(L zrdr6X{*t_gA2=ia7Lr2G8}vMS>=qX0t|!VffSY4aC%}E+ykGl6Ed`}U9=>x78qHDK z-1&!yxFm{(18+0x>UnsE4Sb(|E&Sp+G+shkoyup3<-G`f- z8!K0?BrGh*$5u7nTxWC?RwzKQLgG_yR4E~8egXkN! zY@+tNb&P*{5&EFuLG@O4|p}9W=usA11qnud4U6wec`lkDS4rsHy0j zOuD8vGi$chuqUgP%g>GCvU4KQXnH8FUr%w}dP4nDhzUD~sGw8PDtg)uwo|>Xj-DD5 zBQA+##Ow&Po?3@}1DNV-Xxg`f+TB~|^iv#ZD-3MhS5JC=8{DC{qZ!{gFGkJ`BmC4LOd3c#*v9s~O;pzQaPDcLod1V# zM#Xsd)ArO<)42V6ns#o-J3fK%b7v7aWjZ=Rkcb)g3Yqwj>wC85fuxB%E6$KO~jv#mRNT!cIjhSKN z7~vT-h^GHuo9%4=sez5V>WL2bx`n`)-4J&nAk9n>1~m>P8%Q==}!&E`eT z`Z}uD)f4uIU}CNuiAR`YpP$%m)NS2J&3E4re%1v|ETmgWI*5yLc*REmw?~%RNT z8vGKrrl(T+!Mmh9z5wsoIEUkOnrhfl@DkC1r!qC}Mx41?JFGo?T)CT^&T1Y{zJfUK zP^Y{bx~zQpLn%M(tz=@#el9(G1j!?>#8W?5r~#N;EmW_orG85j(U(UO{l^h#JqBM- zzM-1Wt9R1W+rcH>fyAWcW38`a#Kl(;aqet1x}n`%UFKGD>b@tlY9mbzaag;~39T(6Mf15I8^CPW;<)Q*RpPBJr|r7#^p0d5bQr# za|JM(Tgj+dO?Kt?1Qd+n6z}Uux+>YB7IFmL)fE)H{UZKj#uNLe8*%e!GZ<9NzcQ;fy@Jx1{k?EaVB0KIvQGgQ3ayIj;e3^Kz9@k zl&z^F>g>TUx7Ub~_$4Ki_wqslCr@)YX+7Nh7#)5ArA^x?Z1|p-;2CH&gC~QB){PlK ziH!D%;Kjmq*i<`X{YDHDJt8VqEgLcME*GDfL}k_4Y}*?`QcMV8K^_jTRp+H8Xi6Ya z=ZDjp*-pXh#V8sDzhqw&MWMK>jzxK&v%js7t4I8SI}M@LzBd27q+H#@Znk=k)9WE_EbOgLEmC`J4m?iD7@SQ9dLH^+LOH^nRp|IK0N-A+@Od+&<2Hjt{E$&nRCM&ERVl5wyEKrO5-trd;ChS0P7{D$>A zHxPC1Z+E823Dr#Ad+$9q$JVm?qJ;ot6}7YTU<>zOGkQ?lw1s(upBhB$#SsqsGL{xo z_^+3l{L;VB`S>~=Gp}|n`SlyPXu|UYoU_NH*KXzA(k;}P+Ib}TGD7u!0JL`%lUn#s z0(?d>Wz=8LyZHl9P;TIj&q^2*=gZyKB;f8gbUvWD)k5+6Wf&^E$iBLcOuusOPME{A zz(l7sy)8{te6@nE%2GyMe+NO6PX$0#g{>J)e72>EX=4Jo;lfyg{En`)mF*eqDSMAl zpG3}xyB!|~t9{+BX7ZL-5H>AEO0&;yCNn!3#mRxrL1K<+OH}aO$YPFfwp@f1Rb( zOy#E)bR1|S=7u=JW<~T1m9(}}-Y?ruf=@WN#+^f$hriQ%)}EJ1=@;)p#27wlJ%h** z!QAnuQBF0HBTy|Wh3}MNC^C|KUn2g=eb2wg+R65^Wi)q{bIF(o3HRxHUgp+j3f_4c z&&ZJ^+;}%yz4Md@qq&K-ho4|V)MZSHy25!oYcCIEf5oH8vl;Eji|J6HdUCzC|Q+;hju-X4#O}{U6~s**-W-EL*lr{`}oD(rdGbh=|o@m)l-U zci7fqw93|7(!|zlbJ}0yt{)})sfR?hId3B(QrCV^R;ACAuHI&sJpR;DD05TamV864 zls9aV^{F>YQ%8=&wyLViCmSl{&Sx{Es=nK0-|K5r z4oH59K}1Asc8g?`uaGZN=SpGyCQ((@Dc`0BljOggE17qtN?l=-EX-Xc_h+q?@~$SA z_en&=)N7NaUlhs9_y1FNK5(7X?O5-UrmM1B_T8BwWuH_!<*m9SN0z4EEIAEZ#ZZzj zsrSv5mW;hF`!@DA$tUUaq^3Q4$aXf>E)O02T7GOSaN4G~*Cw|-m?p+9tHb*A+xCgw zYVYf>*CYpCxX&ej{|QdGFqymlS!wL;=r4Qv-#Jp@VQ`{jpKb0n%_S8G9@3!{Jf}Bs}+1$^h z-E0)Q#V#cumdj7KrHP@~=(2wi5sTF>pS|>e^WQIq>PHL%xv5!fNZ4oh9$ehpD&9 z?hiN1*4xsg<#2~lt#??os;bJjyZ6dhbJxj_|Jo;Zi+xyhMU_UmZGM`3xVBs@R=b!x+a>p% zg_8Tu0wD5`?Us*s{6#)od6^jNhMt!qeS+lU^gE=cV`xDl zBJxJ@c3ECF^u7IjZKZs^*73Mq6!!# zuzR0rV(hU|)6~PbIKM&d1IGB0{dzIcv%=Bp9h(sW6DL!@c>{Kn3E#vdr(^qggcINu z&5nW>i48sjcb(%c_7C+M zP+d-EB~Rw8WKPtn+!}uY9$I%4twPY`00PGQlk;K$DBwTFxv5s!(9ILeatKXK;L_W# z!nk__O}n-bH2D;#Hu@20G&(%X6KMTRPxaJq2%KYM^ypI@`jC!Cj8_n67JL$DY~q127dXwzHg;KgYh@{q+?9-0JGfQT)&{&{yzw2=_a2#=>*%SgBxLd# zF0boSO< zhw^!4nz+)5T8t&~W$MjxpyCs;t2QYpHOL*0rpxj#%ZAjb4s}$?4g24cZ)*mczMZ)p zl6uo#Y1+{^h^D*8Dhrq9%5%$drF#go(O6k5X;0lIb-TV3i@_@C4;+-Df0v5Oi}@L) zpDdM}#ZQZ^x6ic9uHP&lW!)zh2ijJz)hHjQ-yxN487}*+=xUL986Qi}&!)dKeE4;_ ztlCuVv_AXc17d1CYWB9}q)X{n%Uq8CpWuWGll#AVS++M06dv zNpHJ($i9tbC6aOfU7}hY+mpwlxM8bo%zjAh>d`Unc8hF1_z$UQ+%|B0Rh5OgtK@^S zA6@o)1RHnN$yJZ=TJ zyG`CG-YySheJL&GE{C)Q_20=CsdJ^iW1x_;+f`ZiX{r2uVV1Nyc$S}4{vq&VjS8Z)ZS^9+a696 ztIe_Gv-Q{{<1eWL${P1?ldA6q&x>CZC)~_2x?2ey89}n&(Xdx_lL@UxVPxpwkfNed z(7J1>-_t_aDb5p;+yjHKv@~PL&m~~O&}wCn&nVivE2(VVOHA+#L{#?VEo4OS=_Ev6 zJaBwP;SV8WSXY-xbx#YE0%C{kTSVAo*^cVlMceiSPD=?TV2B)rBk)i5!!yEzL(k=- zPxNNtsv^PyJ$Q6(G9FIyMf8Eegr9vO_1iYkmX%7-lo==*4Q+V_Qs?KAd~+W(a8gHA!C^o`MWAcLGm^NGId8e*=#9z}c1&R0dljG%b5iiQ{R zza!Qwh$zp#5T{+Wu&3ysG#m4oJ>ew+yat9f6-8m%gh2d!biD9R0ZH+`ga+%esdg3@ zZKT<3VA1$%iSTqBGS%v}gq;^bM|L|kUscf-yS%>urdli2UkBrp zbO^=0f}jaAT%KiH@%2i2YAYFc-%|tb1wfehC@gjp`>H=@Z0NZtio%a2Z{qI}$&`^- zyX5DS%KeP+3gEo3q0`-$e^tRBP6;6?-mxj%exMBmf=)Rawd*K6h|bFgpP0ds(q9d~ zsi<;+Wy_Yy{7?TSE6WE;?ezRMdE@J1Cscjf$+p|l#nd{qc4D_!B;#-Mq`S(sxudG8 zY(DgadBJg4pv?0hp{zP@z36z31mkt`x&C^5=UH>ZiA$SA7aE(Ob9 zk-TM#M725BWGhyEEQeotYREPsB3nz|l^=@Vl7lth%G$$E49huw#JsWChmPpAwwvX) zhtr*EB_bk4Zxl#dM(cpG@^3$s<^w;u!dBmxnOpL{D!Ua{+26b|I7D_ zt;cb=*b#bc7I`r1Q+fEOhoyKJYW=Y|SX(C--nUu)xi<3`(XIWlR_=X1Q_8p0N&4;k zrMJ;}c>D-D3k>qp&1qsRJ8GJ#sw#yaE|#K?{^gLS_WN(;;Bya&eHimdM3s*Z{9WGN zdySZFuA_g$HE%>jmVR0)-|uP|vQ64CA>kt^{`3v$D01#k`!#UFKU}W2Yw5K13@FoS zHG~K1scSJgrHh^wPD5%dHj{nG{(a&T2%I>Dnzi4!2TRzr_r)7 z*53+OD&85W(WD!Om;7+aD^-r3F6n+u0U z2heWJVXApE?%tExY|sokvceg1I;(lLdNnUSJ(k9NH{ScKY*=((eqYVbjAj-;IElFP zBZ;4vz~RRa(%ayC-gM-2lJimllb%b#C;n*axuPf}-TWXTLe<942GF#m|3v-v??`!Y zq08+I06mrt?AA_1azVe)tO8Uj3L3t`SuL}Q?H%0gRRUu!+El$skR4?2v0P} zZ9=sgJ8|=Mp4|7V;5QXjF0gFbGFkHeJMwV$2ZQR??5vU1JBN0p<*zK4^7XD)Yg=!x zq}_ds^tL$9DY2_o*_3gYG<6)3%9j1IG5eum=WcXZy5-iirIOiJCL$tR8V<-q+3$;0 zb*{43HTB5NPo_$KS?8d-=JsB>c~P2Vmkdeuoq{?HZC!M5L@~r+kxshjjMT zh$N_WZAIcvr0LT%sOTp+iky(@L5b`cS=SnRU!^;~)9-T^4@r6JeyQrnmgSjuiCuNB%{28I9qZGxf^6xvumG}s*22e zEJNBmhxQX5dNj+Su*`h+u3;~Z|681JGeo1!ge=Btz2dQZv+};sly+XJn{#;%vT*re+ zf5J=W`Z&tiNH3n8Hz#a#yO5uY1}kSdL{)+hn1pb1I>ZM z@08HnYG&$V$%CR29--k(dU`RHt3Rf3&$a<|c2f_Bo_?6%)6OL3>gxy8>2*F_HStvn zo3@i#{na3T4po0iWy?>@nYb8t-M}QY|A{%3GlLU&_|P|)?A8Hw+ZuEDq;e0hO`1#i zaeHeNMd9&#l4)r-^Ug;l1L~H2T}r3X$}@MT3_7Uj2!dyX5dG&E4nL8N-E7BHZz6j^ zE)$*_i+7CcWHg;f7#4Y^C)cIL!F^u zQ2X?@3VQ4o&I)lIVM)twBPrg806*u6dSVkSZDu?p2S-6gRe$rZE}n2CCo_r2byEDKsAb%bCVxsU&&kaT3!23 zR8d)7yPGRUOk+jG&SCot#>DyZz>P^fvE(q1FU?`*)KJc!K6GeP(J737EE!XSiP8@% z04P{lL2s*tX$}O*5xDyYGU=(s)NWcu(@%W@#ct~1@Pfw)pLqdMvmKv5M#4tv#YPJwq$e;vObSR_yv)Ko*PEa?#nb9dHC%nk(3#hULIb|ZgEPnfTlifF6P=>PrVe(bPEPbEyJYAW*)QH3 zyIG~X*16N|2s|UB2%IvVy6-pkmsK=vCB%Om!G42d`+lBLOo_RXodvJD?E9n2?WFj{ za8JT);=DpxTDH|C%@Ir<6TpZOo>W$JGkZqluxJ#G!o(-XVJPk*^Qj!#at(cg#KCs` zW1;i*Vd7JZsolJWh95VPvuHk{e>j)Oi-taA*j?+zRg+$!vOSZmnpNb~tfH)~l9vDe*5{ibzT4V|c}jl8Nam=NpyoZ7_j zS?Jw-$*WuIv`uzL85!-x+#Y`s0C&XCq{h_7#`>&b@$}ukdUS3Iw_F~_f_HO=H0_Rs zqEiSyJA{tIos2j&2#t$l4~{_R>Baa*UZ7;26*efBmq`Kma#44W~{EA}8O#*%L!tY9vP>HX-|&JmPLm zK+!_|cXh*}tKYT(Q)3yRuk*%4>33Pv|;h|&Bkh%S_we=!8QV>3^tE#T?X8|e|wGPcOy)W4-W$b`?=H6 zWx-}2TFs0&J(!lm9oTwoL$(9ZdU_K5r|YTsWCf)S-!U@ebo6dRuUco0{yTYf>*(wm zEU1!U%|Jv85A1phwQtc(!jU7>v(i-GMAkjMRJ@k|NN+E zNSY&P&o@xIs)jQ@m`3ByX6m;#4vP*EO8@;1;WK7oYN@3)bMNrzfWn521nL8Ea|oPY499v@2Tcc{W@lj9{PJU zUTy&-2A@uL!zNag|HSptrwlj<+8MfgY#c7^s)qEU#sAcD$G4Z|8QeCGLdRhChF;48*PU+1#Do7R&v68_4r zqE`p`Lf$Fez!g!a5#>4XVf*MjczWEGyi~B34ky>v+G*ycPYRfS%UC>rKDYC>E93Fh zYxrPI`H(zyRriqfS`nwcFaggH52n66fvQzCH12Z!HN~QLUPtHa$LPEN&cw%GqU^Kx z>Bv3klCG?I2Sp9vb5Y9kTt4A>avL^N+`Q8zT~!R)1d_Rw%`2BLUo*EKw?K|R7>!oGv{0S7kl82?k z;*iGD*+IeEFEQ@#Powi5=t%Yqiy~^~<&=K;?tpR;l`Tb!IXCgI4$o~p9;e4#$KL9% zsO)a!{P3|Z+XHOc(ZGdgN4PZYj0Fb##yA!j)^6kf9bw|<=0&FiGY4QoLI8(`NbWj< znAzb}eLu{V8PHsuNWgAoPz1smq5`K7?l+#Ss!#gM4z!ohWbWj$D8~m?$9RSCmr=8L zI_IlFJ|R^VUi`R#Tj#_xGHjsF;qGe_DXui~!#>B?V=-Dudp3_L4<+Fl(q}H{ymU-{ zZak&SE9l5|z5-W$^(nTlE)s6P3jp_kASOQf3dJA1PG|lh=X9<6$*%g6OD4XGyUrWE z&YPc9m-wb{sh zZ9WM%|J7;aCTiy8m|GiY&p&Fqrd55y2)_wL2TXB#9mm2$=R*@CIoGFmSnWmNhg}U^ zbhhKu1&>ANp$_~fI@YkQT?TYMzj4AEzY}5N@8(UXwcBCc?<@j>6KPG`H*7wq#oa<>%TKg*m0?kByj8NE2S)#KNSf1wM>91ro_CLP$bPn^ ziufpR&Y3(o>rtmwn15FaYqr&JuyEk@h$^H%o6ndVVhB9WbFUB4GkH-8xi1&cRWbN} zHf-61p&*a34?l^bIr`}JK_QHPcCdr$HMLBfpMv7Rw-S0z7~ZiyRDE7CpuF_scL|&@m7qz} z2hkjh(KkLo$)|6kS}nA6l~LNVm(${I9+Ku*>}@SY?|T}J9eXf4Sv-$Lc76wO(cT33 zxi*J7vK>2L;pgnv|AH_%;Yn-DmMxPVO^4)@%I!|u-SN`U8=H=xEw5Ad&v$&J;<3oB z{7mwyzLehPCdv5QykYIzIfC}?3R#sgPga(1mKEh&hDBpnRe9*(C-P%cu84@_ly%Cz zuVuQtrlz)Dx%KHZsjNGiXqEkDvE(f;ACk^k)+KvyOBYk)(Zspd%yh~4`<-HQa>AI1 z^c_EV|4m|QI=c6x#aJv~rrs!>JxWIUQkS8r;Un^NDAe1mhkZkt)| z%=lQ+TaR8(W2;GSo1ZoykSbZeTJnubmmRIRFH-kT_ra^I!?eD%Ga!rvb8JZlZ<)N+Uo|mM4Hlf4x88iEq)i8iJzMn1}A<6fTU<&imHe9n*aok z^`p1NjH%h|w2g>R*7yU7k(Z(m2_2Ua^D*&Y-+*6*t73J1iQFqVUwX zD_L2wi^BE>Ui-X|M{aPPD-jx~=b5|4@yt89G`E|n+|)pKor&aIhCcSdC*GTsN5+u# z#9=J$7P`txDE;?ajGzDfpbwTE3*UrfM&EuvhhKgItD%E#b2HoW7IAL!B)?oaoxu z(N$<1GQY(3Uvj{n@bgRn#!a3;R(mOb2pRlwA%Jd^owB-aCM394)f5Gq4|Whb*|Ggt z-x9p|0FB%5V(}l;<}gO8i0~POkH_%N&hXH>F)<*9f24iM zm7^we<~Zk@wT?xAuRGzv9xPc=NLad&Ghdj1*4_2Q*N60d*S26uAuYRKXUqc+;~nif zlhZRS5|7|8^51=#EWfSH7;`sK0nWe5cm%%sPy#$7*vPYi!(f$tb2IJO3od5h#kn=~F{^{rw{3`zEH`K8nEc!&Bwm0^G6pnkas2 z3lkUq1&@&7Jqv)ku6)X^2MNoCuv3SZaMo=zv!r-CkBqqpH;opZ#+}Bl60{mEL7t97 zzF%#qVQNYMqn(^tax5CRH1vJXIKgq-rv2LpOqqtepX>YjpWt_)nfU95)=Vak4j7i- z1YpF>FzR+TBTjNPO6oU|7s!4?8%n4aKIY>kB-NjkKi!+&JK(|xgZ?L_pq;hQ-8@5}m6o=VGv zULw|8i1MB|Y`O^lspP67n5t%QO2F_^&;gQsBJjzLqiuQt(~;bsJ3lDQ`hO|U#CM2j4nSC-o|X$I?Qu@0bDQ;pflBSeQpo&CuKXMTF($KX6atrFiQ@89(w$QcK@+ z$rC`A$;Nx@%6b0MbBXs3V`aszVbO^Q8H@6{VQwPPF+ME)dU)IO5uxC<7l^-MEFq_k zAn&z8hL_wS>?(YfsBeP!Uc>AScrIV{7yjZZ7iQyM8HSz+s6uruD1{8tC9~N>( zSUlGxPU6La&BM+?DSEezgm@ory*ZIZZ{;)GFF;j%{UP45@uWO=CgtyyVC!<7p9HYG zbQx1dUWJc7l*H@rp<>N)m)j<)d)ml1)^kz#!0*~b`6gpDH#o%bKzY-dD*XXdQLqE`@XkUt4h`-SUA}b4et&2@z@>jQBaHBsp>pCTklNEkC*B>8({I+;CwG!G7-Cm2f^e zhH7@V432;tkJ4{y(FeIPa%LEJ{yBjTqm?hecYUTw#b+yV4-6vm!b=!6Hx~B*ck-7E zj?^5F{iVzBbPr@w%yq$@5U%&*hS)!FO3d|mx&^R%7=m`m zr$q$$yK}>wSpGO-G6C*hd{p5&!dCG`HCBU_q`xFE^YkzR{oGi!$#oWVbLwsk#d##m zy%T+~o|ylMqvUPZNrI&qVgY23SINV=t^ySO{y9Eba*CPvKW zP{Zay{#N;*9_`}*%uOic9WP^s&D69C^>FBGjp zXK7b|nTSx?w4J!H^BvOok4-_*Xy`cPI0fFO+WE427dOPt9KiKCV;&}>d^tTs9DAgW5~C(Z@!($X!62zMu5 z*k5)|!o3*HO&qBC+9}-^o2%*RwR6W+qx#GKns6@J9o78QQsR`Z>8BQ&_qQ_cA4&Za z=Yczt*tWNcLj}&~NLOVU6<>eIxcle#pWhmOK_up;UOEo8JEt?Zu(x~#7mRs$KzYoZ z|DpQ3&rofS7s9OeDzu7*6hFsK=<(s_liRdyfOb<_*@aH0A$El8-ObRKUlK6E#lEB8 zc(?Eo{BDGa#>r6xM=&KRkgVe2`Aq;4t{O?{>e~L_4egl(`z7P1a~>r~xa}^=R=np> zt>4^`$!WpK1h@^P_izi~4@rM#TmEy11OClcmA6)v@Q>?~20YUMH!l{XT+Oq2t7$e5 zPBQClvv6Q>A*Vb&cEFw+cQ*~s-J8P7b(I_{8vNpPm6cHO=?YSwSb%cOsbGqtF#geG z+Oj&R*)UjZE2#gDhR(yx9Q(w;Ra8+JbN3^d+gd39a>XFJ<>fnQHFxpIn9Bw%2#TU` z@z^J+?Kn(s{iZ>5>vz_XUD&}RwdBt8zx&{l{_Cp<%eN@ThXH(F) z54kh93s*IkBoXR@MH*b#-TK0$Ga-NxnH2@2J6aem-tI_t)_(`Lu}Qs-xPMrM->(#V;`Sk@>j! z4pw~?ox-GrjlvTbn_i zp@v73FL$WMD~g7T$301I!)8ib_Vkx;*j3N=)Fu|(Jx7 zgTdNRTGc0v@Sng4f5(pK=!>tXX3Hv6+rW(6@9GaT*+07fw0>upa*QL^*kz@-+{pBa z!;8A8W)(}T1&?s&yRU6MM%=uIcl5%4ir z3Af#ecZ~D=2d!Sq)R!kvzpas)^>s8G3(2hbi1WuS7;*=&#?6iK4?joK-t9E({GQDX z+5Fg)%cAku;-+!#DAZ~6T$-|geHANdG#0ULM;+T!8+qyeiRhhtvI8K_JD591oy{}3 z>#?Xdj3r$hUX;(2MdOFeB{}~O;e-U~`D)`)bFS#U#e_^hgWzeWJEa?OWi*{Ropco+ zeeR9MLdsiHnGx$e%hk=tkC16+Q@?XVf0@B*;+vXG=EgeSW-(w~zZBYgYw5PMvvx}z zm(GeB_8~@wyiWX6hK^!cyA1!89258*2@^jz?;#^P0Mo_b4)g^bIr)JhNRPIbex;~C_4&X#$xM2RfQ#A7xU2d zW6-+Tq;*~N=_tTwRX@>|XP|ax6BCZxTjB^&VV*pG`&btJJD3?JXIU2*z?tA%o;ZzPj}a=q1MBb36H)&!NxB+xOEjTPPh(_VeEYMat~zAxcRKk zdX{aOhj{kh@#u$EZFo{J+=Sa@(fhZf~A{_(L6PZ2vF_uiDqj(tt!ml&w}_A}6E ziN5UGA!!t?LefKHDPB^5h|p^@@~GLk?Bv48&+Z(Kyth<*G87Jw0SDp>CVs7I38V^dTOs< zPUyaiuw)HC*J58!HLI_f&UrZv^kk(En=ZG|ll=7S_}gTru#zo z(o&XEHbDjV85PB4Mn`eftE0kbv5AOJ~3K~&fdKA>ZBJ8?s- zmq6&UUm?PRiMN_2{TZ}M6bgwhA16k=$vQWl-fz;03NTX@=v#FB{VnWz@oARTtl`4U zSpmN^C-DRf>Kw}I-{kT$15dZsC{$duax&XyG_qA6SUU@V`cFS5qqUS9ubshdPj98E z&5eC^TO8l-D73|jySuwAu0>ni-5rX%LyIq3+}+*X-MzRMhsE80%jbJv!2M^RotaEd z-A@TQ@Eax3PPlfA_CtsUCQc22*=9tz*buXm5VI0(= zirgNT&A^HOEvt_FVEZb$YtAuka_7_kX5XOCo>xojaTPe`k#}s>=sN%4BRiBB$l0U7M?9Xuxv%QIfozr^* z{M^RMg4U48rg*lqM3LCSL8ry$It{I+lt{vP-*-LUv8LMd46f#)kTvM1FIY|dMwa!E8U_4*w>)5J?rx;0W)nM@Q&Ft(V=P6>*7MsL70I{ zS8sTI%C4x<@?z7psxD4m%FfhiaKNOW*y+NdKyD--hHARCGV<6BdMa$AN_#5g7T>*n zw-ypAo1=zG>dZI&X-X*D_VGDD@4jm4uCB5?5~h+^h$Ia_?aQkSVEWfFtK9*OVO5d9 z=w@dQk_}4k6tXi``1!EY%){UI41a9h8KAIOX`|Bl#xT$%5Xj4$sJ$P(U2$(!jGxQ8 z2$|8yt9I&>k~NVL(l#VJWcIF$jAT*mQez~;%Y)B_n6h;+!IuR($ag5JZezR%bMrZ& z{0$w4f|){e=QJY9t>FJH(bOZUMa|dfz{^*E$GK&%?6n?ApnJz*jJT>z!JJ;}hq|eYxTI=YZ+oC?X_9>yD z{?4(>i2nF0i5m!SiK)J@NVU`Z6#nYzuBXG8V4uljy`d|HuPMRPXKGeAnJb~-f zLg*oRVurM<$v0DHdAIFv!0L8l(~Cn|`{_&u48D7Z=52%bb>cwn{9c=W_?TG&*QQ%t z`}un38w*mAw(rfYubG@by8P{b;X+AafhLb z<&f_q*U848Hi7`JzWSufq{R*QmNjK{z}BU%*Z9>7ALnpKM<>4j?b7OAS4EeEEql`a zt4Egj2FrO@?asB?BFR`BCl9Q) zjXNQ6!7csgE<@XWU^125V6y)3o7=|SbE>==7mJGwfhMgFAZRz4EDGO8AS;ov|Ln#$ zt>N}jicMa=$5{hESVr_yw0wJf5}o>m?nw?-#@UA6=viAFs3i%NZ^P@XufJC#v$G*k zeWUE(dDenKL(}E?EEGYU8^_~Fk-HC~_hy{=jC<~Np2l-mn)}a*A<&WKe#}4VX?mY3 zJ{lKKs*Ou(hUdHLy`zwp%beR?bG(-GmCItEn?^{SIB&Y41HFm10{H5s)#4{F#I|>> z0ap1W6t0=)zuvjD0n&Bm_6Lo~ho_6-MJ}&&bl6?}{cS|V@zP4k*b`G`1s5;>1oSrR z7MCYrOq-mp4o@V3XM8A@!%@BL9GStUE_(WNo2wirIL0!DwX|{L%SqMmbv>^^-kMj! z97(Ta_>!?dqG@v{+xyO~tPwfuN3S_{*t z6w@6b>0Q^tR{<;lr}r=_5TTre{?;pwXBbl=wKUUC#j)y3Q3*nHpYU=npQO-+!#7MRjscVy4&lXzRYBM?D#|X0_2U8k%k9|C@eGD?DxJ5yKkceBnBR1Dm>PO zX;8m7VHK-+*!w#3ueCs2f;0!H_m?ZGV|u!jr+%?|plFq1MxsuCizVfn=A9r?baT=rS7a^yt2oWpFNl#fv3&I?)RRrT~dr=hQ>{$FR%qJQ8{3G9|yk+ClRs2Q<7945&`p=^>{3n4-)7N*hp$YN`TuO*;nU6+e7Q)f#FXf0 zpZW+@`0u|kh2P^2mJy%t#b%j$%J$R!;K>+&IPz9}+vCyg z@+&&xW^u$jZh9f33z&W_Datr|hI)18b9EdqKadQk-=66@ECD4ko=9sh`eMa*4p<(@ zZ3l|aE!`>bwCPv$?p$Pefb2cpT`Vz?I~v2C&YFM!8}k!Adi8@X*7Ur$g|F~qXK8d` z!Zd#)o~Z1`E6B>^jiP16U2A-qV)uUL0gLiC)xv#m5k-%`M-anfc53i`r)C9%*Msv= zz%JFef%WKCmvVuc3Y5?T7L0oLb=f^hRt`I-(_NiOn0olCLbw8MqyU5di+1oC?Pg{-mxqqRtmi)>?;iyoy;5djsRm2)aD8tv4R z@?IvGOi~KcMNc)ZOI9_cHQd{nANP{gQ@yVyDoP<R?n*H^jw}Q=Gqr;Q#D|b`Yv#zEC!+Dr;ejUz8M0vU3 zmC{gJ?b~GA^ldF~1)rXdYuEp#>4;T7Pa8aBAcs?qHtw}SR=iv+T5j9L-LWxf^n0-EJg{>bkO?r1$;vu5!~rb~~h{E;}=3_a}S$YNE<4kNsil02n@BeX&Az z=4HmWzF;f3=1L75eN%(K*pQYq0{+@Gagpya~OMMF4l z)$p`Ed2B~>aD%l<`idiq)}^HrKAS{GR7{4E(pSF}kn1A6v6AJ^u7FDvK|Z+k@$To# zfB$Nb0Vhrl@-e zBO=FP&%D{oMlAXap0gGKxl?oUd~)iVC-L*FY@EFZ!HfAVdc^^*I z%Yi%DX}-clg7RW3>VAes6$3{Zra*73Hbizle0lB#%3RhPWI)-R&&^n8UQpYR8@{+v zB~qps8)y41=g-nwOSF)!SI8&huWlF_-*vhO@g+%7)d{3^92oers`71&VV+C~y~bVj zp3EsXt*!T>%7z?g>+>N`asJNK{}6g4c-P1Og31A4rD<5w={%Qz=IiACZ71b(A6jCg?PTAP-}M(4&Ux|1poEa0 z?{b)^(|Tjnl2&jOLkex@tT{SSRez@Tm>xpS)|yN}_`9O3!F@q+ZArdb`ovuXwZ$n> zYiH=tk;!wwefHm^vn`XhIhTKjh1391!sNRx-H)(zh6dsOMR^yW$Y zz_aRoBdy5TlY^-J?M>{uw!z+l`|@qBaH0JM8>?o&m!KESv!dg3yXv<>q3WkmKf}s;mc1CGK^-o< zJwx0q=tv;ERA%pX!^W!xVMpmzA=w>%XG zzenok7nN$OvyDi=p1fGuRY_Gk+wLL}3V;(!w=}Ad`RR$xXI`mik+H4CZH*wS>n=9> z6?ej_>%#L>M`MqaY(V5u9CVcz2F19ETiUrNQ-wZPjQz`26!b>3X9dkItyYN)Y8t0lVpJzpqI2|0-3uo4>xhvor7z-(Hb6A|u z%?VS{d+&iBBsI{?hgEZ13DwL2y`cpuzrNKaLHDbrG-Um~d^_LV?{~_Gcf&QRW1L(* zg%gw1K=&$Pbl+rS$Qfl}b!fVD6~Tp0I#pPZ_(ARF%HaFyb1EfAS#mi{f(M~FrmlQx zGS8ZCRQ1L3h8%Q@^0Z?U4b=|0pu@&OO>pw3onMY{OlfJ8wM;8b&SWLbJ?x#RsyFI4pm+aD zUF@8wjJ;c5y@F|bqc@koE;f68jBYVj_>m5#0N{Ga?z$QS!}Hl3icxn}k~87K zosvQhTz;lK=9NBm_~kLjCF=e}&B^9%8nHd6$`;hjhkZFujCB!yZAT(F_}=>6t}VbN zyb*9(SyLQIhlVrpsH~S;zkklK&YflKcn}lEjSgY1PR&Quk(FG74h)d+PM5z)fEAQCwGIf4z0v1O#)!2grNkBni$RryeV|C*5&-2neRf-9j zYy)2+yt&^HK17M7>wg*jvV6|le=C)d7aA}qEEq$kZ`Zk)r<5BSw(=D-MN?>Q-K^>x#5zHPFlYW38t+lzX751Ouw-_PL)!{qSwpd z9eCAnkEw`cc<{A2e13jN9%~C7jh4tk1O@jlto>qQtq!y4K~e0Xkj0h{s382rpKCuF zPtm!u#>SnTJoY0jgJst$ylUzo?R{P5iuKY$_9vd_s)M_Z3GSyf5l*iN?+icIu9vBB zXUroY;rZ(ZPWSST(XEX(ZKo@Hp}*)Og;Y=~Ezf)3VSH9y>y>8X**nZpX3f&3mS_)i zCE26cIS=W22O`K$f2eV#AiqD#-1c%Eyj%UVV0LaMI;6KkDA3Gr+bUp7A^GniP^5B_ z$KxBcm0zI+2Y{NI&8hajfg+27#q7J`IFdK7%{ZgMctaDUj}1>7{aDR{DsnM5mNIuH z2)^nY{^EUj!MfH&aH?Nzr6*h*o3EtYi?fkSfDn!P!Q{X2{frmiIW*rCi*8%J05#Ly zb~ryWHKB_Wc*ne!yIFqQ=Q*{^4mUJK=uP5~+DhKc$!F&4PMZFu@<51VQ~cT53+~gK zM)quJsk}MRR>ggp$J_55yDBzg>gq15)og>=D^>InY8XAquBHMzPHehZh7kLfdzPy9 zS#@&fx0go0{CQ(vuKNXQTfZCf_Ay4 zPB6;YSeJ_(W3-_}10#~10U~})oeHCvbxt^hHbpNp&%iYPNRYlht9#EhW8MBF+pPQ# z3iGJ*&C*&1<-1Aczs{8dTIJ$-k)%DzArh8i6|>|y*%P%PiDwx&^>7hvvWC`AEn=3@ z7kxs#nxG2niucghj5P4(>qjIL*-SFByM43u(mIwFqnD){ujUEv)J>pwB|W#-aL{tW zm=*X1`-~7`vZ z%GCXr*XY55&MP~IyM0$Mk1iwVuh5_HD<7Ga^)jQ3LdCk@?mDm89CixPxO@-gf_l(2 z0q8#bh={+lLKMm{Fia$r^=!=6?(5K_LA__7JNzFIwQ}-??+20W);~=v%(2z?pcA`l zep=B}GP!GGyn;*yfE!CnW6&<&vfgx%M^b| zu|t2>N{A`J#YQ(D-r};QmRBp^N~}0{ls#h@9CUwYd>sP-imgCWw$*H0YpzTuO-PL?)J&xjNdig@U1=Ga8b zks`<1Nv!9Gy&5Ql_9VYMSJUg`yx-g48$-WR(ek3p-gV1=>C4g1_}r7)3O1AmtNHW$6@JZC4#vv-i6;lTOa zRcmNf>$H~DKIO`w>Q(%-dcw`OGV(m(ErX8C(H+HMf?{=%iA#T@NXx#Nq;m6iU#4E# z;sw&QJ}cgyO3+8CiuzZ&ma>Zv1M~ZYY3kta`%yb!@o2_NxCy>(*!AlH0LG8iTlXq-n%iZ@U6RkzpoTw-XOw)cf zeQ9$|+6>bI8Wp-)rq=lU6zbq||A!e1M;$EYLETX{d)Bs zcUjfAkcKZfvC<}fSC8=Gw$v-tQfOIfG?<%{UuUwuZRn}JtJ1ReO4gE|nJF1`>j9C_ z^Fw`1#Th+(gr^}Ovm-&{q}0K=ey7&iczC>*-GPm#tMk(>%F(8Xy=1qfWKep%%8#Ns z3CjatDL$*mW?%Z5pM;k`KiA-WhPNHvOLHT1_AVnmM%$$Qnu2Xwcl2~ik?{uvz*kK) zCGyQlFV7`VI?k?xxDA1+oq@*=v{{jyDJY@E+PyeE!%huwH<~W2e{ea> z-)KVZ*W8SfF#C)Q9<{Nf8OAFqt^_{(PdpkB08Kp!w{5C)f((si7xh{(PR@L~ThOKI zc)Itf=hs5>_v_$`Ap;-rYR|5ayy%tE!F{A#nIa8EWjhPF{7aqXi!F~w*OSdRV;L5c z*`KF;dmAs}=p#i1L_Kb>jfv3Ck~!MUzhTFI1$CZoKW%hl8$uRFu-261#@Sj4Ncix+ zX?xx}jMy$Tp8sp^uOaD)UmcoOTNubJ2$+)at}XmMgFAy^>J@#LsD;0|(F_%>ZFWp3 z?rWD6I9#A2wdUc2Dwi}a8{VjJl2@(dtcWl;GsDh+uLEIqbfwjJdTg|PK1d?@hvmq9 zMQV|(?X#8mS2TwwcHZ(^XWO%G_Q&DWsQbphdGfrq5I4r+dMq=3Syql;z-dDCYvV`j z*E@18=103#xhNpB*zIdri%5aN;Oma%^4}4+ro>t0&HL!$36R0jqRY6D+r?`QD5k{Q zT&T=$Q)-)1GybKMWJ?W7WH*)qh+jpw_0Orc`8B4Z{d&Z=3P$>RKeF(w1CPMQCj|Ed z&t~mOfi|tl?W)`Vvbb~8N3mF?Up`r4b)f+=nv}dS`RcX|$jC}K!-N!?0(ar_Zv}Ny z27*a|JPo&cuFKm=7qsMN{0RvsuS{2-bE{}8 zAob90jyU$$n9Y3%ihhe9p;iX>Z4DF4fgl!YvZIwZ8LKWgUe}>1{ zX4h7vb@L(tKTj=k6WU*jEOBl&+!PQjHMtqrm-tqvQ$KOD)smx1YmuiukWbOqHn3;Q z3yuZ=B?l9as4@^r z=9zMH$5SJ`Cum)ZWj<|KeS54+>FbB{-x~pQi~q=+LtaQe**SIlp*z`WO{~(44^z?) zbf?;g-kZe4JeC$jD98B_Lp!$!tiAiKwmkk5K{ILqFUE)z=vb;WF%r}ta?@-c?Z623 z&p#VJ+4v{+riCwcTF_^bJ{eLId*Lyjblzy!7u&eND{3m5P+}@u-Raj<3N7#4tpGfm z#Z6cw7Y1jI?sW@B)AlQECBY%OG z7K4sc(Ir6a__JTiaT$f_tH z(skUD%<4gl0dEM1{loz1WgWNychmJucJVRFg%sBp{~VF3sxMTXQl{8GdmS^ZT`!(8 zv^z&E)^Yixz{<7cDw=ytO^B_j2SmfMFJVClhcnhpvm$_W&ckblJ^WWh0?%mMOX8mPP3KEjS|@)cwbh zWXJz^)8dHYBfIt;wD+k!MY(X`e;SMY&H^|BEeDKnbJrXk^YAQzY!kgV+y)J+3VvH8 z{C1z{HmGUI4LH~=+x_i<{zDp8HX3!iXzGt)_CpRDT~=AP({;Dsl$P=*x`3F>Rv!oz z<`NOtv0Xim=1wa|6`~1&w=_?}>D3jSM2@)7F#x0jy$Uz~?@YsAa?+S7Kx!mUomdLn zuJX_zX4`^>G2!nblts}e+U~dRCTez8J9(zOIgsDlv^svY&IqufZ+qk~i||1dz%Y|=8ku5C zQ9+>|1;X}8q?H@5&;t&a*5qElH-J2HK8ea|pOsj@@e-k?3U!hs^s; z8ABvZgh`oSya)A>7zIc^-J3gKMT#<0v@nTlXL)vAn7@kCwun9ZWQ zQ1pkTgrbn4^~(aOZKe3{IQcqmIgJJrs}C|9oq3)WalNy;Vkn?uDYoypk<}LN3#vk$ z4;Q6LL>6U8E|k8QS#i`TzQIp=uT=l8Q!)uM@`8XsjsEBnP?V!2g>f(x_Khqsl2cgP zx&}^?GRF0vCM4mTH2W?=xg8sZwzTN5G%^87O%H`C@e-MJh$(U*%{dP_O#SjivaXtA zu82CaGRh}Z4my~k0{HI-(``wTgF2}UZ`g)j+W4X?8@XMfh*U?dfxnJZo$o*c7#z+a zb*7Q{+yD;ty*H@s9|e=Valv*%V0){Sdu4fc*(JbW>(u^ZaR??JYSnOAI(_DTyq~g7 zbGhAg_{KvRwkSTue74Cz>k#spl|^J0{p_Tr4e(?*|vMnqQ0{6R8d4B=PqK}P68_r`PB`wz$JrE zECQ8(TnI4*v(D>51MK~blN*^5Dql^%MNUJJrr(U@{fP$`tMJ(zrTD&woC3GnY4iGv z>L>?mxrf3R;bb)gmP$bMeAip$UVlCc|c zRsLyFhdj=6R1cz@9Q#+MeRttG|8;*a6StJ~tBAth+ZA2uh8O1Y4$)0|(+bsHlv+IR z=TVjnEJ2cg0dVe{WSrVo?L-&a8_hAa4v!Q+#f=#ZO=cf*AlWRW zLPiI9Nk9CGL6!Lj4`YLxX44>c0)XK+bK~=YzC&B7bqh7*}K&2r*t$m$ATH6*@p zZx;->>-(7&_;DjDs*Gb~2{`GFH=SHo)P$O6yQO$i;8MoJXo@yN=TjU)11nq*7Dn~B zG*|pQ)m^R;#}qla5gg!`C}3NT$RTEm;NvKWAtA;R^M@vEB)|Q6x;JihM{MT2UAAd% zG^|ioCz+L=Kolb|dyM~8Bvs8Xs_sA`$g4mka&?FQ!Tfq7L+k)6$k;s~A{0D587qIO zGWujp5KP+EhurGlAU$o*cuoRN!|ZJ||v4 zl2auUB(WqC?!UIToC`Ux9wRMyCzz%r-7^?B6=c@U_4#em!1l!ZUJ};1H1%Y~Ry`?YJ7H zhZxTi653iEt{oTE&deU6+*YvQ5ikv-VI?8J{Hfml9UOI8;_eN`m~E}qWg=>~K-!Tt z@^&!CQaGe;$TqlsYN>%54<$xFBZU+BVe<0w34s>ZVzp5*VF6F^_ZJBR7RbZKc_+gj z+2Z)z=S+KNAovkio)=kK;|9@L4g#Ceg3OasiC_3 z<#AQN_2qz(NWKSh2y<%<9DScLMDN-CesorW-o(?Z$SlVtwYLAFfyD|y4eX5fWCc7r zfaKuuRO{cFF#@w#I(Sp{%$wes5pqy5W%!Axr5xxqP=0;hgY~|rMrr_`W9UG{ak1Pc z3MLT?)X+WtB_g@and=W+8bJ*d{YP&7-5i{l_N<8`husXX@Bg?#tT&Z}0L>C;MNXFt zRzFMFDuFNr8MA|p7*w2|IiIJjcXJ3SENV|NaOj@}@;wU@9&3+S;`$GA^JagPPiSap zj$K$R+w4Yy83K1^2(7#J$f77@QW2a`bsaoweGn2#EJrpNJXHSnIB|jrlN*Ef$e(c( zd-9G32o6IPiEW#EMLjO-UGBvByr&n9NM{j zdKXG$@cN?wefs)kyXc1q>Rp(XFg#U3K|#4@9rUjxJx^KGqrMzNdvg)uokKAy#C|AX45HAm^{4K*+e z;A&UT z{)KTS4BHz@67*PyHq+C8#-67-6bSyRgoW%-1-#?iuhtdH4FE1-VFh*%1bTRBfT?=` z!n(!e!y;2vkHDnK_Z;Su>0oI%3&!jh4OTmsN*dc^+vUQmF;bqoOJ!B@b7SE<;OtyBNF2}E1n=ZxkF)If4FaHMvK3197R-;aQYE?{KF zrcjlqT%H2ki^^6kYh>owtY;pw^Z|)czzT#~>RZmxJ^WkqVSyrOpj{X^W6at9Fto)` z%v9^3M1dF2cB1Zfi>pQ@9c-_>oES8E(rU0&3D~fJNmQc0;a=|`?Xm@LCp$9;Y8V+{ zg~Xb%49Nk>+>Hdr|p11$u?4~qS%a0YJ9z!V_K%MZoWY2v%^=Kt{$ zO^s!M8Wi(|6sP|a1DT~Piob9Xn~|HQi01@2cj$9;<4^L!jpi6CBn>w3CYlmq<)m=E zp_HVgV>$3NsJA07&Epn-b8mi;d~;mnlEIItCL=M(&?_ zk}r}fp=E!+tAJasZPJ{@J_aDTW)6!S>`Ui_e|#kNN}G=OZO3!Pby8 z+4(1VBT52kC>RW-M-0VZt|$yiQ#NiGj!G^ZycAGOp7Pj|Lpi{!u{FFH?KGgYM{YM+XT;wKTregwX^v=u?+^s!3d9w#{mwl<;4lP zFJMu}saf`)9m9<@kWnQMyZ@n3^!slWz*N7OSJ!vgiR29sbC%121JVEHoc|?tNawvhKNb#i8h;zXq zQO;rJWfB=Qds&AF09%bi*pf%zT&?`y zWa0c-mh6*A6&^iB5|J4rq+$aZ#`M77%SM?k*P4Rq2ySfrXxTTwv8dD64@6&Xu)=2U ze8@d7qd)zaFQl_>f{Z>~}uv&2$pj5Ck`=4vMkbwWTF@d+LL3BZeEB z&&=RnbZcumA3#c1V6lIO>2E0TuY>nqDLtB{)!_Z@RZt{}{7Jq9fepp~-|xWt=eNIGo+EW@Z{UWG O5R&3@VwEBW{{IIT4ptuk diff --git a/docs/images/chapters/control/c7cebd1c54c120c3a9513062e562f3a6.png b/docs/images/chapters/control/c7cebd1c54c120c3a9513062e562f3a6.png new file mode 100644 index 0000000000000000000000000000000000000000..29e2128f971ebe8fe5ee636776f79db6c08534bc GIT binary patch literal 13971 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 U&QA8=lo^Vch?H=VppN(d15@YJegFUf literal 0 HcmV?d00001 diff --git a/docs/images/chapters/control/ecc15848fbe7b2176b0c89973f07c694.png b/docs/images/chapters/control/ecc15848fbe7b2176b0c89973f07c694.png deleted file mode 100644 index 35cc064a5d1f9c040b649953f141137b670ccd59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13779 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 C-&1k` diff --git a/docs/images/chapters/curveintersection/3689ed0c15eace45a1f6ae03909ad8ed.png b/docs/images/chapters/curveintersection/3689ed0c15eace45a1f6ae03909ad8ed.png deleted file mode 100644 index c48f987fe0c01628ca8bb61d863a4049aaaa0a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30413 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

v;7^&fs6@&Zi2or!Kv) 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 mgbya6XW=(^{C6LJK<%XZ_|5OeKwMolding a curve

  • Curve fitting
  • Bézier curves and Catmull-Rom curves
  • -
  • Creating a Catmull-Rom curve from three points
  • +
  • Creating a Catmull-Rom curve from three points
  • Forming poly-Bézier curves
  • Boolean shape operations
  • Curve offsetting
  • @@ -333,7 +333,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -342,7 +342,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -351,7 +351,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -1589,7 +1589,7 @@ lli = function(line1, line2): Scripts are disabled. Showing fallback image. - + @@ -1744,7 +1744,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1753,7 +1753,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1762,7 +1762,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1860,35 +1860,61 @@ for (coordinate, index) in LUT:

    Bézier curves and Catmull-Rom curves

    -

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through the points you define. In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, or you can click/tap somewhere to extend the curve.

    +

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through each control point, so they offer a kind of "nuilt-in" curve fitting.

    +

    In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, and lets you add points by clicking/tapping the background, as well as let you control "how fast" the curve passes through its point using the tension slider. The tenser the curve, the more the curve tends towards straight lines from one point to the next.

    Scripts are disabled. Showing fallback image. - + -

    You may have noticed the slider that seems to control the "tension" of the curve: that's a feature of Catmull-Rom curves; because Catmull-Rom curves pass through points, the curve tightness is controlled by a tension factor, rather than by moving control points around.

    -

    What you may also have noticed is that the Catmull-Rom curve seems to just go on forever: add as many points as you like, same curve, rigth? Well, sort of. Catmull-Rom curves are splines, a type of curve with arbitrary number of points, technically consisting of "segments between sets of points", but with maths that makes all the segments line up neatly. As such, at its core a Catmull-Rom consists of two points, and draws a curve between them based on the tangents at those points.

    -

    Now, a Catmull-Rom spline is a form of cubic Hermite spline, and as it so happens, the cubic Bézier curve is also a cubic Hermite spline, so in an interesting bit of programming maths: we can losslessly convert between the two, and the maths (well, the final maths) is surprisingly simple!

    -

    The main difference between Catmull-Rom curves and Bezier curves is "what the points mean". A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point. A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point. Those are very similar, so let's see exactly how similar they are.

    -

    We start with the matrix form of thee Catmull-Rom curve, which looks similar to the Bézier matrix form, with slightly different values in the matrix, and a slightly different coordinate vector:

    +

    Now, it may look like Catmull-Rom curves are very different from Bézier curves, because these curves can get very long indeed, but what looks like a single Catmull-Rom curve is actually a spline: a single curve built up of lots of identically-computed pieces, similar to if you just took a whole bunch of Bézier curves, placed them end to end, and lined up their control points so that things look like a single curve. For a Catmull-Rom curve, each "piece" between two points is defined by the point's coordinates, and the tangent for those points, the latter of which can trivially be derived from knowing the previous and next point:

    + +

    One downside of this is that—as you may have noticed from the graphic—the first and last point of the overall curve don't actually join up with the rest of the curve: they don't have a previous/next point respectively, and so there is no way to calculate what their tangent should be. Which also makes it rather tricky to fit a Camull-Rom curve to three points like we were able to do for Bézier curves. More on that in the next section.

    +

    In fact, before we move on, let's look at how to actually draw the basic form of these curves (I say basic, because there are a number of variations that make things considerable more complex):

    +
    tension = some value greater than 0, defaulting to 1
    +points = a list of at least 4 coordinates
    +
    +for p = 1 to points.length-3 (inclusive):
    +       p0 = points[p-1]
    +  v1 = p1 = points[p]
    +  v2 = p2 = points[p+1]
    +       p3 = points[p+2]
    +
    +  s = 2 * tension
    +  dv1 = (p2-p0) / s
    +  dv2 = (p3-p1) / s
    +
    +  for t = 0 to 1 (inclusive):
    +    c0 = 2*t^3 - 3*t^2 + 1,
    +    c1 = t^3 - 2*t^2 + t,
    +    c2 = -2*t^3 + 3*t^2,
    +    c3 = t^3 - t^2
    +    point(c0 * v1 + c1 * dv1 + c2 * v2 + c3 * dv2)
    +

    Now, since a Catmull-Rom curve is a form of cubic Hermite spline, and as cubic Bézier curves are also a form of cubic Hermite spline, we run into an interesting bit of maths programming: we can losslessly convert between the two, and the maths for doing so is surprisingly simple!

    +

    The main difference between Catmull-Rom curves and Bézier curves is "what the points mean":

    +
      +
    • A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point, plus a characterising matrix that we can multiply by that point vector to get on-curve coordinates.
    • +
    • A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point, plus a characteristic matrix that we can multiple by the point vector to get on-curve coordinates.
    • +
    +

    Those are very similar, so let's see exactly how similar they are. We've already see the matrix form for Bézier curves, so how different is the matrix form for Catmull-Rom curves?:

    -

    So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression that uses Bézier matrix and vector? The short answer is of course "by using linear algebra", but the real answer is a bit longer, and involves some maths that you may not even care for: just skip over the next bit to see the incredibly simple conversions between the formats, but if you want to know why... let's go!

    +

    That's pretty dang similar. So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression of the Bézier matrix and vector? The short answer is of course "by using linear algebra", but the longer answer is the rest of this section, and involves some maths that you may not even care for: if you just want to know the (incredibly simple) conversions between the two curve forms, feel free to skip to the end of the following explanation, but if you want to how we can get one from the other... let's get mathing!

    Deriving the conversion formulae

    In order to convert between Catmull-Rom curves and Bézier curves, we need to know two things. Firstly, how to express the Catmull-Rom curve using a "set of four coordinates", rather than a mix of coordinates and tangents, and secondly, how to convert those Catmull-Rom coordinates to and from Bézier form.

    -

    So, let's start with the first, where we want to satisfy the following equality:

    +

    We start with the first part, to figure out how we can go from Catmull-Rom V coordinates to Bézier P coordinates, by applying "some matrix T". We don't know what that T is yet, but we'll get to that:

    -

    This mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    +

    So, this mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    Computing T is really more "arranging the numbers":

    Thus:

    -

    However, we're not quite done, because Catmull-Rom curves have a parameter called "tension", written as τ ("tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    +

    However, we're not quite done, because Catmull-Rom curves have that "tension" parameter, written as τ (a lowercase"tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    With the mapping matrix properly done, let's rewrite the "point + tangent" Catmull-Rom matrix form to a matrix form in terms of four coordinates, and see what we end up with:

    @@ -1948,15 +1974,11 @@ for (coordinate, index) in LUT:
    -
    -

    Creating a Catmull-Rom curve from three points

    -

    Now, we saw how to fit a Bézier curve to three points, but if Catmull-Rom curves go through points, why can't we just use those to do curve fitting, instead?

    -

    As a matter of fact, we can, but there's a difference between the kind of curve fitting we did in the previous section, and the kind of curve fitting that we can do with Catmull-Rom curves. In the previous section we came up with a single curve that goes through three points. There was a decent amount of maths and computation involved, and the end result was three or four coordinates that described a single curve, depending on whether we were fitting a quadratic or cubic curve.

    -

    Using Catmull-Rom curves, we need virtually no computation, but even though we end up with one Catmull-Rom curve of n points, in order to draw the equivalent curve using cubic Bézier curves we need a massive 3n-2 points (and that's without double-counting points that are shared by consecutive cubic curves).

    -

    In the following graphic, on the left we see three points that we want to draw a Catmull-Rom curve through (which we can move around freely, by the way), with in the second panel some of the "interesting" Catmull-Rom information: in black there's the baseline start--end, which will act as tangent orientation for the curve at point p2. We also see a virtual point p0 and p4, which are initially just point p2 reflected over the baseline. However, by using the up and down cursor key we can offset these points parallel to the baseline. Why would we want to do this? Because the line p0--p2 acts as departure tangent at p1, and the line p2--p4 acts as arrival tangent at p3. Play around with the graphic a bit to get an idea of what all of that meant:

    - - -

    As should be obvious by now, Catmull-Rom curves are great for "fitting a curvature to some points", but if we want to convert that curve to Bézier form we're going to end up with a lot of separate (but visually joined) Bézier curves. Depending on what we want to do, that'll be either unnecessary work, or exactly what we want: which it is depends entirely on you.

    +
    +

    Creating a Catmull-Rom curve from three points

    +

    Much shorter than the previous section: we saw that Catmull-Rom curves need at least 4 points to draw anything sensible, so how do we create a Catmull-Rom curve from three points?

    +

    Short and sweet: we don't.

    +

    We run through the maths that lets us create a cubic Bézier curve, and then convert its coordinates to Catmull-Rom form using the conversion formulae we saw above.

    diff --git a/docs/ja-JP/index.html b/docs/ja-JP/index.html index e85b189b..0a7dae7e 100644 --- a/docs/ja-JP/index.html +++ b/docs/ja-JP/index.html @@ -100,7 +100,7 @@
  • Molding a curve
  • Curve fitting
  • Bézier curves and Catmull-Rom curves
  • -
  • Creating a Catmull-Rom curve from three points
  • +
  • Creating a Catmull-Rom curve from three points
  • Forming poly-Bézier curves
  • Boolean shape operations
  • Curve offsetting
  • @@ -335,7 +335,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -344,7 +344,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -353,7 +353,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -1585,7 +1585,7 @@ lli = function(line1, line2): Scripts are disabled. Showing fallback image. - + @@ -1740,7 +1740,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1749,7 +1749,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1758,7 +1758,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1856,35 +1856,61 @@ for (coordinate, index) in LUT:

    Bézier curves and Catmull-Rom curves

    -

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through the points you define. In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, or you can click/tap somewhere to extend the curve.

    +

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through each control point, so they offer a kind of "nuilt-in" curve fitting.

    +

    In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, and lets you add points by clicking/tapping the background, as well as let you control "how fast" the curve passes through its point using the tension slider. The tenser the curve, the more the curve tends towards straight lines from one point to the next.

    Scripts are disabled. Showing fallback image. - + -

    You may have noticed the slider that seems to control the "tension" of the curve: that's a feature of Catmull-Rom curves; because Catmull-Rom curves pass through points, the curve tightness is controlled by a tension factor, rather than by moving control points around.

    -

    What you may also have noticed is that the Catmull-Rom curve seems to just go on forever: add as many points as you like, same curve, rigth? Well, sort of. Catmull-Rom curves are splines, a type of curve with arbitrary number of points, technically consisting of "segments between sets of points", but with maths that makes all the segments line up neatly. As such, at its core a Catmull-Rom consists of two points, and draws a curve between them based on the tangents at those points.

    -

    Now, a Catmull-Rom spline is a form of cubic Hermite spline, and as it so happens, the cubic Bézier curve is also a cubic Hermite spline, so in an interesting bit of programming maths: we can losslessly convert between the two, and the maths (well, the final maths) is surprisingly simple!

    -

    The main difference between Catmull-Rom curves and Bezier curves is "what the points mean". A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point. A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point. Those are very similar, so let's see exactly how similar they are.

    -

    We start with the matrix form of thee Catmull-Rom curve, which looks similar to the Bézier matrix form, with slightly different values in the matrix, and a slightly different coordinate vector:

    +

    Now, it may look like Catmull-Rom curves are very different from Bézier curves, because these curves can get very long indeed, but what looks like a single Catmull-Rom curve is actually a spline: a single curve built up of lots of identically-computed pieces, similar to if you just took a whole bunch of Bézier curves, placed them end to end, and lined up their control points so that things look like a single curve. For a Catmull-Rom curve, each "piece" between two points is defined by the point's coordinates, and the tangent for those points, the latter of which can trivially be derived from knowing the previous and next point:

    + +

    One downside of this is that—as you may have noticed from the graphic—the first and last point of the overall curve don't actually join up with the rest of the curve: they don't have a previous/next point respectively, and so there is no way to calculate what their tangent should be. Which also makes it rather tricky to fit a Camull-Rom curve to three points like we were able to do for Bézier curves. More on that in the next section.

    +

    In fact, before we move on, let's look at how to actually draw the basic form of these curves (I say basic, because there are a number of variations that make things considerable more complex):

    +
    tension = some value greater than 0, defaulting to 1
    +points = a list of at least 4 coordinates
    +
    +for p = 1 to points.length-3 (inclusive):
    +       p0 = points[p-1]
    +  v1 = p1 = points[p]
    +  v2 = p2 = points[p+1]
    +       p3 = points[p+2]
    +
    +  s = 2 * tension
    +  dv1 = (p2-p0) / s
    +  dv2 = (p3-p1) / s
    +
    +  for t = 0 to 1 (inclusive):
    +    c0 = 2*t^3 - 3*t^2 + 1,
    +    c1 = t^3 - 2*t^2 + t,
    +    c2 = -2*t^3 + 3*t^2,
    +    c3 = t^3 - t^2
    +    point(c0 * v1 + c1 * dv1 + c2 * v2 + c3 * dv2)
    +

    Now, since a Catmull-Rom curve is a form of cubic Hermite spline, and as cubic Bézier curves are also a form of cubic Hermite spline, we run into an interesting bit of maths programming: we can losslessly convert between the two, and the maths for doing so is surprisingly simple!

    +

    The main difference between Catmull-Rom curves and Bézier curves is "what the points mean":

    +
      +
    • A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point, plus a characterising matrix that we can multiply by that point vector to get on-curve coordinates.
    • +
    • A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point, plus a characteristic matrix that we can multiple by the point vector to get on-curve coordinates.
    • +
    +

    Those are very similar, so let's see exactly how similar they are. We've already see the matrix form for Bézier curves, so how different is the matrix form for Catmull-Rom curves?:

    -

    So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression that uses Bézier matrix and vector? The short answer is of course "by using linear algebra", but the real answer is a bit longer, and involves some maths that you may not even care for: just skip over the next bit to see the incredibly simple conversions between the formats, but if you want to know why... let's go!

    +

    That's pretty dang similar. So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression of the Bézier matrix and vector? The short answer is of course "by using linear algebra", but the longer answer is the rest of this section, and involves some maths that you may not even care for: if you just want to know the (incredibly simple) conversions between the two curve forms, feel free to skip to the end of the following explanation, but if you want to how we can get one from the other... let's get mathing!

    Deriving the conversion formulae

    In order to convert between Catmull-Rom curves and Bézier curves, we need to know two things. Firstly, how to express the Catmull-Rom curve using a "set of four coordinates", rather than a mix of coordinates and tangents, and secondly, how to convert those Catmull-Rom coordinates to and from Bézier form.

    -

    So, let's start with the first, where we want to satisfy the following equality:

    +

    We start with the first part, to figure out how we can go from Catmull-Rom V coordinates to Bézier P coordinates, by applying "some matrix T". We don't know what that T is yet, but we'll get to that:

    -

    This mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    +

    So, this mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    Computing T is really more "arranging the numbers":

    Thus:

    -

    However, we're not quite done, because Catmull-Rom curves have a parameter called "tension", written as τ ("tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    +

    However, we're not quite done, because Catmull-Rom curves have that "tension" parameter, written as τ (a lowercase"tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    With the mapping matrix properly done, let's rewrite the "point + tangent" Catmull-Rom matrix form to a matrix form in terms of four coordinates, and see what we end up with:

    @@ -1944,15 +1970,11 @@ for (coordinate, index) in LUT:
    -
    -

    Creating a Catmull-Rom curve from three points

    -

    Now, we saw how to fit a Bézier curve to three points, but if Catmull-Rom curves go through points, why can't we just use those to do curve fitting, instead?

    -

    As a matter of fact, we can, but there's a difference between the kind of curve fitting we did in the previous section, and the kind of curve fitting that we can do with Catmull-Rom curves. In the previous section we came up with a single curve that goes through three points. There was a decent amount of maths and computation involved, and the end result was three or four coordinates that described a single curve, depending on whether we were fitting a quadratic or cubic curve.

    -

    Using Catmull-Rom curves, we need virtually no computation, but even though we end up with one Catmull-Rom curve of n points, in order to draw the equivalent curve using cubic Bézier curves we need a massive 3n-2 points (and that's without double-counting points that are shared by consecutive cubic curves).

    -

    In the following graphic, on the left we see three points that we want to draw a Catmull-Rom curve through (which we can move around freely, by the way), with in the second panel some of the "interesting" Catmull-Rom information: in black there's the baseline start--end, which will act as tangent orientation for the curve at point p2. We also see a virtual point p0 and p4, which are initially just point p2 reflected over the baseline. However, by using the up and down cursor key we can offset these points parallel to the baseline. Why would we want to do this? Because the line p0--p2 acts as departure tangent at p1, and the line p2--p4 acts as arrival tangent at p3. Play around with the graphic a bit to get an idea of what all of that meant:

    - - -

    As should be obvious by now, Catmull-Rom curves are great for "fitting a curvature to some points", but if we want to convert that curve to Bézier form we're going to end up with a lot of separate (but visually joined) Bézier curves. Depending on what we want to do, that'll be either unnecessary work, or exactly what we want: which it is depends entirely on you.

    +
    +

    Creating a Catmull-Rom curve from three points

    +

    Much shorter than the previous section: we saw that Catmull-Rom curves need at least 4 points to draw anything sensible, so how do we create a Catmull-Rom curve from three points?

    +

    Short and sweet: we don't.

    +

    We run through the maths that lets us create a cubic Bézier curve, and then convert its coordinates to Catmull-Rom form using the conversion formulae we saw above.

    diff --git a/docs/js/custom-element/api/graphics-api.js b/docs/js/custom-element/api/graphics-api.js index dee015e7..6853145e 100644 --- a/docs/js/custom-element/api/graphics-api.js +++ b/docs/js/custom-element/api/graphics-api.js @@ -157,7 +157,7 @@ class GraphicsAPI extends BaseAPI { * @param {float} initial the initial value for this property. * @param {boolean} redraw whether or not to redraw after updating the value from the slider. */ - setSlider(qs, propname, initial, redraw = true) { + setSlider(qs, propname, initial, transform) { if (typeof this[propname] !== `undefined`) { throw new Error(`this.${propname} already exists: cannot bind slider.`); } @@ -170,23 +170,16 @@ class GraphicsAPI extends BaseAPI { return undefined; } - this[propname] = parseFloat(slider.value); + const updateProperty = (evt) => { + let value = parseFloat(slider.value); + slider.setAttribute(`value`, value); + this[propname] = transform ? transform(value) : value; + if (!this.redrawing) this.redraw(); + }; - let handlerName = `on${propname[0].toUpperCase()}${propname - .substring(1) - .toLowerCase()}`; - - if (this[handlerName]) { - this[handlerName](initial); - } else { - slider.value = initial; - } - - slider.listen(`input`, (evt) => { - this[propname] = parseFloat(evt.target.value); - if (this[handlerName]) this[handlerName](this[propname]); - if (redraw && !this.redrawing) this.redraw(); - }); + slider.value = initial; + updateProperty({ target: { value: initial } }); + slider.listen(`input`, updateProperty); return slider; } @@ -308,8 +301,8 @@ class GraphicsAPI extends BaseAPI { /** * Get a random color */ - randomColor(a = 1.0) { - CURRENT_HUE = (CURRENT_HUE + 73) % 360; + randomColor(a = 1.0, cycle = true) { + if (cycle) CURRENT_HUE = (CURRENT_HUE + 73) % 360; return `hsla(${CURRENT_HUE},50%,50%,${a})`; } @@ -375,6 +368,20 @@ class GraphicsAPI extends BaseAPI { this.strokeWeight = false; } + /** + * Set the line-dash pattern + */ + setLineDash(...values) { + this.ctx.setLineDash(values); + } + + /** + * disable line-dash + */ + noLineDash() { + this.ctx.setLineDash([]); + } + /** * Set the context lineWidth */ diff --git a/docs/zh-CN/index.html b/docs/zh-CN/index.html index f22bd465..a8d82090 100644 --- a/docs/zh-CN/index.html +++ b/docs/zh-CN/index.html @@ -100,7 +100,7 @@
  • Molding a curve
  • Curve fitting
  • Bézier curves and Catmull-Rom curves
  • -
  • Creating a Catmull-Rom curve from three points
  • +
  • Creating a Catmull-Rom curve from three points
  • Forming poly-Bézier curves
  • Boolean shape operations
  • Curve offsetting
  • @@ -329,7 +329,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -338,7 +338,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -347,7 +347,7 @@ function Bezier(3,t): Scripts are disabled. Showing fallback image. - + @@ -1579,7 +1579,7 @@ lli = function(line1, line2): Scripts are disabled. Showing fallback image. - + @@ -1734,7 +1734,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1743,7 +1743,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1752,7 +1752,7 @@ for (coordinate, index) in LUT: Scripts are disabled. Showing fallback image. - + @@ -1850,35 +1850,61 @@ for (coordinate, index) in LUT:

    Bézier curves and Catmull-Rom curves

    -

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through the points you define. In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, or you can click/tap somewhere to extend the curve.

    +

    Taking an excursion to different splines, the other common design curve is the Catmull-Rom spline, which unlike Bézier curves pass through each control point, so they offer a kind of "nuilt-in" curve fitting.

    +

    In fact, let's start with just playing with one: the following graphic has a predefined curve that you manipulate the points for, and lets you add points by clicking/tapping the background, as well as let you control "how fast" the curve passes through its point using the tension slider. The tenser the curve, the more the curve tends towards straight lines from one point to the next.

    Scripts are disabled. Showing fallback image. - + -

    You may have noticed the slider that seems to control the "tension" of the curve: that's a feature of Catmull-Rom curves; because Catmull-Rom curves pass through points, the curve tightness is controlled by a tension factor, rather than by moving control points around.

    -

    What you may also have noticed is that the Catmull-Rom curve seems to just go on forever: add as many points as you like, same curve, rigth? Well, sort of. Catmull-Rom curves are splines, a type of curve with arbitrary number of points, technically consisting of "segments between sets of points", but with maths that makes all the segments line up neatly. As such, at its core a Catmull-Rom consists of two points, and draws a curve between them based on the tangents at those points.

    -

    Now, a Catmull-Rom spline is a form of cubic Hermite spline, and as it so happens, the cubic Bézier curve is also a cubic Hermite spline, so in an interesting bit of programming maths: we can losslessly convert between the two, and the maths (well, the final maths) is surprisingly simple!

    -

    The main difference between Catmull-Rom curves and Bezier curves is "what the points mean". A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point. A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point. Those are very similar, so let's see exactly how similar they are.

    -

    We start with the matrix form of thee Catmull-Rom curve, which looks similar to the Bézier matrix form, with slightly different values in the matrix, and a slightly different coordinate vector:

    +

    Now, it may look like Catmull-Rom curves are very different from Bézier curves, because these curves can get very long indeed, but what looks like a single Catmull-Rom curve is actually a spline: a single curve built up of lots of identically-computed pieces, similar to if you just took a whole bunch of Bézier curves, placed them end to end, and lined up their control points so that things look like a single curve. For a Catmull-Rom curve, each "piece" between two points is defined by the point's coordinates, and the tangent for those points, the latter of which can trivially be derived from knowing the previous and next point:

    + +

    One downside of this is that—as you may have noticed from the graphic—the first and last point of the overall curve don't actually join up with the rest of the curve: they don't have a previous/next point respectively, and so there is no way to calculate what their tangent should be. Which also makes it rather tricky to fit a Camull-Rom curve to three points like we were able to do for Bézier curves. More on that in the next section.

    +

    In fact, before we move on, let's look at how to actually draw the basic form of these curves (I say basic, because there are a number of variations that make things considerable more complex):

    +
    tension = some value greater than 0, defaulting to 1
    +points = a list of at least 4 coordinates
    +
    +for p = 1 to points.length-3 (inclusive):
    +       p0 = points[p-1]
    +  v1 = p1 = points[p]
    +  v2 = p2 = points[p+1]
    +       p3 = points[p+2]
    +
    +  s = 2 * tension
    +  dv1 = (p2-p0) / s
    +  dv2 = (p3-p1) / s
    +
    +  for t = 0 to 1 (inclusive):
    +    c0 = 2*t^3 - 3*t^2 + 1,
    +    c1 = t^3 - 2*t^2 + t,
    +    c2 = -2*t^3 + 3*t^2,
    +    c3 = t^3 - t^2
    +    point(c0 * v1 + c1 * dv1 + c2 * v2 + c3 * dv2)
    +

    Now, since a Catmull-Rom curve is a form of cubic Hermite spline, and as cubic Bézier curves are also a form of cubic Hermite spline, we run into an interesting bit of maths programming: we can losslessly convert between the two, and the maths for doing so is surprisingly simple!

    +

    The main difference between Catmull-Rom curves and Bézier curves is "what the points mean":

    +
      +
    • A cubic Bézier curve is defined by a start point, a control point that implies the tangent at the start, a control point that implies the tangent at the end, and an end point, plus a characterising matrix that we can multiply by that point vector to get on-curve coordinates.
    • +
    • A Catmull-Rom curve is defined by a start point, a tangent that for that starting point, an end point, and a tangent for that end point, plus a characteristic matrix that we can multiple by the point vector to get on-curve coordinates.
    • +
    +

    Those are very similar, so let's see exactly how similar they are. We've already see the matrix form for Bézier curves, so how different is the matrix form for Catmull-Rom curves?:

    -

    So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression that uses Bézier matrix and vector? The short answer is of course "by using linear algebra", but the real answer is a bit longer, and involves some maths that you may not even care for: just skip over the next bit to see the incredibly simple conversions between the formats, but if you want to know why... let's go!

    +

    That's pretty dang similar. So the question is: how can we convert that expression with Catmull-Rom matrix and vector into an expression of the Bézier matrix and vector? The short answer is of course "by using linear algebra", but the longer answer is the rest of this section, and involves some maths that you may not even care for: if you just want to know the (incredibly simple) conversions between the two curve forms, feel free to skip to the end of the following explanation, but if you want to how we can get one from the other... let's get mathing!

    Deriving the conversion formulae

    In order to convert between Catmull-Rom curves and Bézier curves, we need to know two things. Firstly, how to express the Catmull-Rom curve using a "set of four coordinates", rather than a mix of coordinates and tangents, and secondly, how to convert those Catmull-Rom coordinates to and from Bézier form.

    -

    So, let's start with the first, where we want to satisfy the following equality:

    +

    We start with the first part, to figure out how we can go from Catmull-Rom V coordinates to Bézier P coordinates, by applying "some matrix T". We don't know what that T is yet, but we'll get to that:

    -

    This mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    +

    So, this mapping says that in order to map a Catmull-Rom "point + tangent" vector to something based on an "all coordinates" vector, we need to determine the mapping matrix such that applying T yields P2 as start point, P3 as end point, and two tangents based on the lines between P1 and P3, and P2 nd P4, respectively.

    Computing T is really more "arranging the numbers":

    Thus:

    -

    However, we're not quite done, because Catmull-Rom curves have a parameter called "tension", written as τ ("tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    +

    However, we're not quite done, because Catmull-Rom curves have that "tension" parameter, written as τ (a lowercase"tau"), which is a scaling factor for the tangent vectors: the bigger the tension, the smaller the tangents, and the smaller the tension, the bigger the tangents. As such, the tension factor goes in the denominator for the tangents, and before we continue, let's add that tension factor into both our coordinate vector representation, and mapping matrix T:

    With the mapping matrix properly done, let's rewrite the "point + tangent" Catmull-Rom matrix form to a matrix form in terms of four coordinates, and see what we end up with:

    @@ -1938,15 +1964,11 @@ for (coordinate, index) in LUT:
    -
    -

    Creating a Catmull-Rom curve from three points

    -

    Now, we saw how to fit a Bézier curve to three points, but if Catmull-Rom curves go through points, why can't we just use those to do curve fitting, instead?

    -

    As a matter of fact, we can, but there's a difference between the kind of curve fitting we did in the previous section, and the kind of curve fitting that we can do with Catmull-Rom curves. In the previous section we came up with a single curve that goes through three points. There was a decent amount of maths and computation involved, and the end result was three or four coordinates that described a single curve, depending on whether we were fitting a quadratic or cubic curve.

    -

    Using Catmull-Rom curves, we need virtually no computation, but even though we end up with one Catmull-Rom curve of n points, in order to draw the equivalent curve using cubic Bézier curves we need a massive 3n-2 points (and that's without double-counting points that are shared by consecutive cubic curves).

    -

    In the following graphic, on the left we see three points that we want to draw a Catmull-Rom curve through (which we can move around freely, by the way), with in the second panel some of the "interesting" Catmull-Rom information: in black there's the baseline start--end, which will act as tangent orientation for the curve at point p2. We also see a virtual point p0 and p4, which are initially just point p2 reflected over the baseline. However, by using the up and down cursor key we can offset these points parallel to the baseline. Why would we want to do this? Because the line p0--p2 acts as departure tangent at p1, and the line p2--p4 acts as arrival tangent at p3. Play around with the graphic a bit to get an idea of what all of that meant:

    - - -

    As should be obvious by now, Catmull-Rom curves are great for "fitting a curvature to some points", but if we want to convert that curve to Bézier form we're going to end up with a lot of separate (but visually joined) Bézier curves. Depending on what we want to do, that'll be either unnecessary work, or exactly what we want: which it is depends entirely on you.

    +
    +

    Creating a Catmull-Rom curve from three points

    +

    Much shorter than the previous section: we saw that Catmull-Rom curves need at least 4 points to draw anything sensible, so how do we create a Catmull-Rom curve from three points?

    +

    Short and sweet: we don't.

    +

    We run through the maths that lets us create a cubic Bézier curve, and then convert its coordinates to Catmull-Rom form using the conversion formulae we saw above.

    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 _0 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 AO8@`> literal 0 HcmV?d00001 diff --git a/docs/images/chapters/molding/502de5e21415ee75ab5d2cffbc921a77.png b/docs/images/chapters/molding/502de5e21415ee75ab5d2cffbc921a77.png new file mode 100644 index 0000000000000000000000000000000000000000..84cc7218c6fe2eeabd9c0fb8b3e8f1418ebb74d1 GIT binary patch literal 20804 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 B&=UXv literal 0 HcmV?d00001 diff --git a/docs/images/chapters/molding/522f1edd37163772b81acb86d3a4f423.png b/docs/images/chapters/molding/522f1edd37163772b81acb86d3a4f423.png deleted file mode 100644 index 07b52bf4f9e17c3f84de789d533788631fbe896d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20003 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 B&=UXv literal 0 HcmV?d00001 diff --git a/docs/images/chapters/molding/6b91671c2962530b863ae0da5789a9cc.png b/docs/images/chapters/molding/6b91671c2962530b863ae0da5789a9cc.png deleted file mode 100644 index 0da8d01e35f92ed192f4f661655b7692ebd930b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17641 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