From 17d71c7d70ff3e61201f788e5df45362151565b9 Mon Sep 17 00:00:00 2001 From: Pomax Date: Thu, 27 Aug 2020 14:59:08 -0700 Subject: [PATCH] curvature --- docs/chapters/curvature/content.en-GB.md | 67 ++++++++------- docs/chapters/curvature/curvature.js | 77 +++++++++++++++++ docs/chapters/curvature/handler.js | 70 --------------- docs/chapters/flattening/content.en-GB.md | 2 +- .../0d7138b99f5986332a050a8479eefa57.png | Bin 10248 -> 10254 bytes .../475547c773a7279dc037c9ced2c8c6dc.png | Bin 10589 -> 10589 bytes .../580c33f599b70de44b17c546098508aa.png | Bin 9833 -> 9844 bytes .../fe32474b4616ee9478e1308308f1b6bf.svg | 1 - .../14cb9fbbaae9e7d87ae6bef3ea7a782e.svg | 1 - .../1b2e086966d7e8088e4b51a11d9ec063.png | Bin 0 -> 99649 bytes .../6ed4fd2ead35c57984caddf9fe375a5f.svg | 2 +- .../828333034b4fed8e248683760d6bc6f4.svg | 2 +- .../a98d37a0653461ad4e6065d8277c8834.png | Bin 0 -> 50386 bytes .../d9c893051586eb8d9de51c0ae1ef8fae.svg | 2 +- .../77a11d65d7cffc4b84a85c4bec837792.svg | 1 - .../387f931043aabd6c467985c568482636.png | Bin 9921 -> 10689 bytes docs/index.html | 81 ++++++++++-------- docs/ja-JP/index.html | 77 +++++++++-------- docs/js/custom-element/api/base-api.js | 12 ++- docs/js/custom-element/lib/bezierjs/bezier.js | 30 ++----- docs/js/custom-element/lib/bezierjs/utils.js | 10 +-- docs/zh-CN/index.html | 79 +++++++++-------- 22 files changed, 265 insertions(+), 249 deletions(-) create mode 100644 docs/chapters/curvature/curvature.js delete mode 100644 docs/chapters/curvature/handler.js delete mode 100644 docs/images/chapters/circles/fe32474b4616ee9478e1308308f1b6bf.svg delete mode 100644 docs/images/chapters/control/14cb9fbbaae9e7d87ae6bef3ea7a782e.svg create mode 100644 docs/images/chapters/curvature/1b2e086966d7e8088e4b51a11d9ec063.png create mode 100644 docs/images/chapters/curvature/a98d37a0653461ad4e6065d8277c8834.png delete mode 100644 docs/images/chapters/matrixsplit/77a11d65d7cffc4b84a85c4bec837792.svg diff --git a/docs/chapters/curvature/content.en-GB.md b/docs/chapters/curvature/content.en-GB.md index e2c649c0..e5348ac8 100644 --- a/docs/chapters/curvature/content.en-GB.md +++ b/docs/chapters/curvature/content.en-GB.md @@ -1,30 +1,39 @@ # Curvature of a curve -Imagine we have two curves, and we want to line them in up in a way that "looks right". What would we use as metric to let a computer decide what "looks right" means? For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between leaving one curve and entering the next, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next. What we want is to ensure that the [_curvature_](https://en.wikipedia.org/wiki/Curvature) at the transition from one curve to the next "looks good". So, we could have them share an end coordinate, and then ensure that the derivatives for both curves match at that coordinate, and at a casual glance, that seems the perfect solution: if we make the derivatives match, then both the "direction" in which we travel from one curve to the next is the same, and the "speed" at which we travel the curve will be the same. +If we have two curves, and we want to line them in up in a way that "looks right", what would we use as metric to let a computer decide what "looks right" means? + +For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between the end of one and the start of the next curve, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next. + +What we want is to ensure that the [curvature](https://en.wikipedia.org/wiki/Curvature) at the transition from one curve to the next "looks good". So, we start with a shared coordinate, and then also require that derivatives for both curves match at that coordinate. That way, we're assured that their tangents line up, which must mean the curve transition is perfectly smooth. We can even make the second, third, etc. derivatives match up for better and better transitions. Problem solved! -But, if we think about this a little more, this cannot possible work, because of something that you may have noticed in the section on [reordering curves](#reordering): what a curve looks like, and the function that draws that curve, are not in some kind of universal, fixed, one-to-one relation. If we have some quadratic curve, then simply by raising the curve order we can get corresponding cubic, quartic, and higher and higher mathematical expressions that all draw the _exact same curve_ but with wildly different derivatives. So: if we want to make a transition from one curve to the next look good, and we want to use the derivative, then we suddenly need to answer the question: "Which derivative?". +However, there's a problem with this approach: if we think about this a little more, we realise that "what a curve looks like" and its derivative values are pretty much entirely unrelated. After all, the section on [reordering curves](#reordering) showed us that the same looking curve can have an infinite number of curve expressions of arbitraryly high Bezier degree, and each of those will have _widly_ different derivative values. -How would you even decide? What makes the cubic derivatives better or less suited than, say, quintic derivatives? Wouldn't it be nicer if we could use something that was inherent to the curve, without being tied to the functions that yield that curve? And (of course) as it turns out, there is a way to define curvature in such a way that it only relies on what the curve actually looks like, and given where this section is in the larger body of this Primer, it should hopefully not be surprising that the thing we can use to define curvature is the thing we talked about in the previous section: arc length. +So what we really want is some kind of expression that's not based on any particular expression of `t`, but is based on something that is invariant to the _kind_ of function(s) we use to draw our curve. And the prime candidate for this is our curve expression, reparameterised for distance: no matter what order of Bezier curve we use, if we were able to rewrite it as a function of distance-along-the-curve, all those different degree Bezier functions would end up being _the same_ function for "coordinate at some distance D along the curve". -Intuitively, this should make sense, even if we have no idea what the maths would look like: if we travel some fixed distance along some curve, then the point at that distance is simply the point at that distance. It doesn't matter what function we used to draw the curve: once we know what the curve looks like, the function(s) used to draw it become irrelevant: a point a third along the full distance of the curve is simply the point a third along the distance of the curve. +We've seen this before... that's the arc length function. -You might think that in order to find the curvature of a curve, we now need to find and then solve the arc length function, and that would be a problem because we just saw that there is no way to actually do that: don't worry, we don't. We do need to know the _form_ of the arc length function, which we saw above, but it's not the thing we're actually interested in, and we're going to be rewriting it in a way that makes most of the crazy complex things about it just... disappear. +So you might think that in order to find the curvature of a curve, we now need to solve the arc length function itself, and that this would be quite a problem because we just saw that there is no way to actually do that. Thankfully, we don't. We only need to know the _form_ of the arc length function, which we saw above and is fairly simple, rather than needing to _solve_ the arc length function. If we start with the arc length expression and the [run through the steps necessary](http://mathworld.wolfram.com/Curvature.html) to determine _its_ derivative (with an alternative, shorter demonstration of how to do this found [over on Stackexchange](https://math.stackexchange.com/a/275324/71940)), then the integral that was giving us so much problems in solving the arc length function disappears entirely (because of the [fundamental theorem of calculus](https://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus)), and what we're left with us some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function. -In fact, after [running through the steps necessary](http://mathworld.wolfram.com/Curvature.html) to determine what we're left with if we use the arclength function's derivative (with another run-through of the maths [here](https://math.stackexchange.com/a/275324/71940)), rather than the curve's original function's derivative, then the integral disappears entirely (because of the [fundamental theorem of calculus](https://en.wikipedia.org/wiki/Fundamental_theorem_of_calculus)), and we're left with some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function. +Let me highlight what just happened, because it's pretty special: -Let me just highlight that before we move on: we calculate the curvature of a curve using the arc length function derivative, because the original function's derivative is entirely unreliable, and in doing so we end up with a formula that expresses curvature in terms of the original function's derivatives. +1. we wanted to make curves line up, and initially thought to match the curves' derivatives, but +2. that turned out to be a really bad choice, so instead +3. we picked a function that is basically impossible to work with, and then _worked with that_, which +4. gives us a simple formula that is _and expression using the curves' derivatives_. *That's crazy!* -But, that's what makes maths such an interesting thing: it can show you that all your assumptions are completely wrong, only to then go "but actually, you were on the right track all along, here: ..." with a solution that is so easy to work with as to almost seem mundane. So: enough of all this text, how do we calculate curvature? What is the function for κ? Concisely, the function is this: +But that's also one of the things that makes maths so powerful: even if your initial ideas are off the mark, you might be much closer than you thought you were, and the journey from "thinking we're completely wrong" to "actually being remarkably close to being right" is where we can find a lot of insight. + +So, what does the function look like? This: \[ \kappa = \frac{{x}'{y}'' - {x}''{y}'}{({x}'^2+{y}'^2)^{\frac{3}{2}}} \] -Which is really just a "short form" that glosses over the fact that we're dealing with functions: +Which is really just a "short form" that glosses over the fact that we're dealing with functions of `t`, so let's expand that a tiny bit: \[ \kappa(t) = \frac{{B_x}'(t){B_y}''(t) - {B_x}''(t){B_y}'(t)}{({B_x}'(t)^2+{B_y}'(t)^2)^{\frac{3}{2}}} @@ -32,40 +41,32 @@ Which is really just a "short form" that glosses over the fact that we're dealin And while that's a litte more verbose, it's still just as simple to work with as the first function: the curvature at some point on any (and this cannot be overstated: _any_) curve is a ratio between the first and second derivative cross product, and something that looks oddly similar to the standard Euclidean distance function. And nothing in these functions is hard to calculate either: for Bézier curves, simply knowing our curve coordinates means [we know what the first and second derivatives are](#derivatives), and so evaluating this function for any **t** value is just a matter of basic arithematics. -
- -### Implement the kappa function - In fact, let's just implement it right now: ``` function kappa(t, B): - d = B.getDerivative() - dd = d.getDerivative() - dx = d.getX(t) - dy = d.getY(t) - ddx = dd.getX(t) - ddy = dd.getY(t) - numerator = dx * ddy - ddx * dy - denominator = pow(dx*dx + dy*dy, 1.5) + d = B.getDerivative(t) + dd = B.getSecondDerivative(t) + numerator = d.x * dd.y - dd.x * d.y + denominator = pow(d.x*d.x + d.y*d.y, 3/2) + if denominator is 0: return NaN; return numerator / denominator ``` -That was easy! -In fact, it stays easy because we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest relation in this entire primer: +That was easy! (Well okay, that "not a number" value will need to be taken into account by downstream code, but that's a reality of programming anwyay) + +With all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest transition. + + + +One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. A way around that, of course, is to show the curvature on both sides of the curve, so let's just do that. But let's take it one step further: we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest bit of maths found in this entire primer: \[ R(t) = \frac{1}{\kappa(t)} \] -So that's a rather convenient fact to know, too. +So let's revisit the previous graphic with the curvature visualised on both sides of our curves, as well as showing the circle that "fits" our curve at some point that we can control by using a slider: -
- -So with all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest looking transition we could ask for. - - - -One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. In your code you typically solve this by matching absolute values, but that's not super easy to program visually... however, we _can_ just show the curvature on both sides of the curve, making lining things up a bit easier: - - + + + diff --git a/docs/chapters/curvature/curvature.js b/docs/chapters/curvature/curvature.js new file mode 100644 index 00000000..4e97212c --- /dev/null +++ b/docs/chapters/curvature/curvature.js @@ -0,0 +1,77 @@ +let q, c; + +setup() { + q = new Bezier(this, 60,55, 125,160, 365,165); + c = new Bezier(this, 385,165, 645,165, 645,70, 750,165); + + setSlider(`.slide-control`, `position`, 0); + setMovable(q.points.concat(c.points)); +} + +draw() { + clear(); + + [q, c].forEach(curve => { + curve.drawSkeleton(); + curve.drawCurve(); + this.drawCurvature(curve); + curve.drawPoints(); + }); + + if (this.parameters.omni) { + let t = this.position; + let curve = q; + if (t>1) { t -= 1; curve = c; } + this.drawIncidentCircle(curve, t) + } +} + +drawCurvature(curve) { + let s, t, p, n, k, ox, oy; + for(s=0; s<256; s++) { + setStroke(`rgba(255,127,${s},0.6)`); + t = s/255; + p = curve.get(t); + n = curve.normal(t); + k = this.computeCurvature(curve, t) * 10000; + + ox = k * n.x; + oy = k * n.y; + line(p.x, p.y, p.x + ox, p.y + oy); + + // And if requested, also draw it along the anti-normal. + if (this.parameters.omni) { + setStroke(`rgba(${s},127,255,0.6)`); + line(p.x, p.y, p.x - ox, p.y - oy); + } + } +} + +computeCurvature(curve, t) { + const d = curve.derivative(t), + dd = curve.dderivative(t), + num = d.x * dd.y - d.y * dd.x, + qdsum = d.x * d.x + d.y * d.y, + dnm = pow(qdsum, 3 / 2); + + if (num === 0 || dnm === 0) return 0; + + return num / dnm; +} + +drawIncidentCircle(curve, t) { + let p = curve.get(t), + n = curve.normal(t), + k = this.computeCurvature(curve, t), + r = 1 / k, + rx = p.x + n.x * r, + ry = p.y + n.y * r; + + setFill(`rgba(200,200,255,0.4)`); + setStroke(`red`); + + line(p.x, p.y, rx, ry); + circle(p.x, p.y, 3); + circle(rx, ry, 3); + circle(rx, ry, abs(r)); +} diff --git a/docs/chapters/curvature/handler.js b/docs/chapters/curvature/handler.js deleted file mode 100644 index 7560a1eb..00000000 --- a/docs/chapters/curvature/handler.js +++ /dev/null @@ -1,70 +0,0 @@ -module.exports = { - setup: function(api) { - let d = api.defaultWidth; - api.setSize(d*3, api.defaultHeight); - - // Set up two curves with identical form, but different functions: - var q = this.q = new api.Bezier(115, 250, 10, 35, 190, 45); - var c = this.c = q.raise(); - q.points.forEach(p => (p.x += d/2)); - c.points.forEach(p => (p.x += 3*d/2)); - - // And "fake" a master curve that we'll never draw, but which - // will allow us to move interact with the curve points. - api.setCurve({ - points: q.points.concat(c.points) - }); - }, - - updateCurves(api, curve) { - // update the quadratic and cubic curves by grabbing - // whatever the points in our "fake" master curve are - - let q = this.q; - q.points = curve.points.slice(0,3); - q.update(); - - let c = this.c; - c.points = curve.points.slice(3,7); - c.update(); - }, - - drawCurvature(api, curve, omni) { - api.drawSkeleton(curve); - api.drawCurve(curve); - - var s, t, p, n, c, ox, oy; - for( s=0; s<256; s++) { - // Draw the curvature as a coloured line at the - // current point, along the normal. - api.setColor('rgba(255,127,'+s+',0.6)'); - t = s/255; - p = curve.get(t); - n = curve.normal(t); - c = curve.curvature(t); - ox = c.k * n.x; - oy = c.k * n.y; - api.drawLine(p, { x: p.x + ox, y: p.y + oy }); - - // And if requested, also draw it along the anti-normal. - if (omni) { - api.setColor('rgba('+s+',127,255,0.6)'); - api.drawLine(p, { x: p.x - ox, y: p.y - oy }); - } - } - }, - - proxyDraw: function(api, curve, omni) { - api.reset(); - this.updateCurves(api, curve); - [this.q, this.c].forEach(curve => this.drawCurvature(api, curve, omni)); - }, - - draw: function(api, curve) { - this.proxyDraw(api, curve); - }, - - drawOmni: function(api, curve) { - this.proxyDraw(api, curve, true); - } -}; diff --git a/docs/chapters/flattening/content.en-GB.md b/docs/chapters/flattening/content.en-GB.md index 03110157..b0dec664 100644 --- a/docs/chapters/flattening/content.en-GB.md +++ b/docs/chapters/flattening/content.en-GB.md @@ -2,7 +2,7 @@ We can also simplify the drawing process by "sampling" the curve at certain points, and then joining those points up with straight lines, a process known as "flattening", as we are reducing a curve to a simple sequence of straight, "flat" lines. -We can do this is by saying "we want X segments", and then sampling the curve at intervals that are spaced such that we end up with the number of segments we wanted. The advantage of this method is that it's fast: instead of evaluating 100 or even 1000 curve coordinates, we can sample a much lower number and still end up with a curve that sort-of-kind-of looks good enough. The disadvantage of course is that we lose the precision of working with "the real curve", so we usually can't use the flattened for for doing true intersection detection, or curvature alignment. +We can do this is by saying "we want X segments", and then sampling the curve at intervals that are spaced such that we end up with the number of segments we wanted. The advantage of this method is that it's fast: instead of evaluating 100 or even 1000 curve coordinates, we can sample a much lower number and still end up with a curve that sort-of-kind-of looks good enough. The disadvantage of course is that we lose the precision of working with "the real curve", so we usually can't use the flattened for doing true intersection detection, or curvature alignment.
diff --git a/docs/images/chapters/arclength/0d7138b99f5986332a050a8479eefa57.png b/docs/images/chapters/arclength/0d7138b99f5986332a050a8479eefa57.png index d56ea5a166f104e187018209a5ec3b8e4c3c7d95..fcbfc54a2389296b41561f8ebca8ca55da420b94 100644 GIT binary patch literal 10254 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 literal 10248 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 literal 10589 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 diff --git a/docs/images/chapters/arclength/580c33f599b70de44b17c546098508aa.png b/docs/images/chapters/arclength/580c33f599b70de44b17c546098508aa.png index 7ecf5fa70d9b26de4ec8a96fe51afa82c9c7b2be..7859e733902bfb00677856d9541e77b5195167de 100644 GIT binary patch literal 9844 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 diff --git a/docs/images/chapters/circles/fe32474b4616ee9478e1308308f1b6bf.svg b/docs/images/chapters/circles/fe32474b4616ee9478e1308308f1b6bf.svg deleted file mode 100644 index 0a70cf4b..00000000 --- a/docs/images/chapters/circles/fe32474b4616ee9478e1308308f1b6bf.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/images/chapters/control/14cb9fbbaae9e7d87ae6bef3ea7a782e.svg b/docs/images/chapters/control/14cb9fbbaae9e7d87ae6bef3ea7a782e.svg deleted file mode 100644 index 7e17c4e5..00000000 --- a/docs/images/chapters/control/14cb9fbbaae9e7d87ae6bef3ea7a782e.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/images/chapters/curvature/1b2e086966d7e8088e4b51a11d9ec063.png b/docs/images/chapters/curvature/1b2e086966d7e8088e4b51a11d9ec063.png new file mode 100644 index 0000000000000000000000000000000000000000..198b6bfd4cbecfbeef5d5c3c18394f460529b636 GIT binary patch literal 99649 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 \ No newline at end of file + \ No newline at end of file diff --git a/docs/images/chapters/curvature/828333034b4fed8e248683760d6bc6f4.svg b/docs/images/chapters/curvature/828333034b4fed8e248683760d6bc6f4.svg index 91730194..d9251b93 100644 --- a/docs/images/chapters/curvature/828333034b4fed8e248683760d6bc6f4.svg +++ b/docs/images/chapters/curvature/828333034b4fed8e248683760d6bc6f4.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/images/chapters/curvature/a98d37a0653461ad4e6065d8277c8834.png b/docs/images/chapters/curvature/a98d37a0653461ad4e6065d8277c8834.png new file mode 100644 index 0000000000000000000000000000000000000000..98fc1f360ed4cf388c8a336514966d0c1f47f6e2 GIT binary patch literal 50386 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 \ No newline at end of file + \ No newline at end of file diff --git a/docs/images/chapters/matrixsplit/77a11d65d7cffc4b84a85c4bec837792.svg b/docs/images/chapters/matrixsplit/77a11d65d7cffc4b84a85c4bec837792.svg deleted file mode 100644 index 36cae683..00000000 --- a/docs/images/chapters/matrixsplit/77a11d65d7cffc4b84a85c4bec837792.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/images/chapters/reordering/387f931043aabd6c467985c568482636.png b/docs/images/chapters/reordering/387f931043aabd6c467985c568482636.png index bb2201ff623b3e7a0a790a7739aa1c0e390d3e05..38b1af3d173e55b9349105ffefd2e7eb28248589 100644 GIT binary patch literal 10689 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 shown is the interpolation function for a 15th order Bézier function. As you can see, the start and end point contribute considerably more to the curve's shape than any other point in the control point set.

If we want to change the curve, we need to change the weights of each point, effectively changing the interpolations. The way to do this is about as straightforward as possible: just multiply each point with a value that changes its strength. These values are conventionally called "weights", and we can add them to our original Bézier function:

- +

That looks complicated, but as it so happens, the "weights" are actually just the coordinate values we want our curve to have: for an nth order curve, w0 is our start coordinate, wn is our last coordinate, and everything in between is a controlling coordinate. Say we want a cubic curve that starts at (110,150), is controlled by (25,190) and (210,250) and ends at (210,30), we use this Bézier curve:

Which gives us the curve we saw at the top of the article:

@@ -556,7 +556,7 @@ function RationalBezier(3,t,w[],r[]):

Simplified drawing

We can also simplify the drawing process by "sampling" the curve at certain points, and then joining those points up with straight lines, a process known as "flattening", as we are reducing a curve to a simple sequence of straight, "flat" lines.

-

We can do this is by saying "we want X segments", and then sampling the curve at intervals that are spaced such that we end up with the number of segments we wanted. The advantage of this method is that it's fast: instead of evaluating 100 or even 1000 curve coordinates, we can sample a much lower number and still end up with a curve that sort-of-kind-of looks good enough. The disadvantage of course is that we lose the precision of working with "the real curve", so we usually can't use the flattened for for doing true intersection detection, or curvature alignment.

+

We can do this is by saying "we want X segments", and then sampling the curve at intervals that are spaced such that we end up with the number of segments we wanted. The advantage of this method is that it's fast: instead of evaluating 100 or even 1000 curve coordinates, we can sample a much lower number and still end up with a curve that sort-of-kind-of looks good enough. The disadvantage of course is that we lose the precision of working with "the real curve", so we usually can't use the flattened for doing true intersection detection, or curvature alignment.

@@ -637,7 +637,7 @@ function drawCurve(points[], t):

Splitting curves using matrices

Another way to split curves is to exploit the matrix representation of a Bézier curve. In the section on matrices, we saw that we can represent curves as matrix multiplications. Specifically, we saw these two forms for the quadratic and cubic curves respectively: (we'll reverse the Bézier coefficients vector for legibility)

- +

and

Let's say we want to split the curve at some point t = z, forming two new (obviously smaller) Bézier curves. To find the coordinates for these two Bézier curves, we can use the matrix representation and some linear algebra. First, we separate out the actual "point on the curve" information into a new matrix multiplication:

@@ -1391,45 +1391,54 @@ y = curve.get(t).y

Curvature of a curve

-

Imagine we have two curves, and we want to line them in up in a way that "looks right". What would we use as metric to let a computer decide what "looks right" means? For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between leaving one curve and entering the next, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next. What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we could have them share an end coordinate, and then ensure that the derivatives for both curves match at that coordinate, and at a casual glance, that seems the perfect solution: if we make the derivatives match, then both the "direction" in which we travel from one curve to the next is the same, and the "speed" at which we travel the curve will be the same.

+

If we have two curves, and we want to line them in up in a way that "looks right", what would we use as metric to let a computer decide what "looks right" means?

+

For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between the end of one and the start of the next curve, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next.

+

What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we start with a shared coordinate, and then also require that derivatives for both curves match at that coordinate. That way, we're assured that their tangents line up, which must mean the curve transition is perfectly smooth. We can even make the second, third, etc. derivatives match up for better and better transitions.

Problem solved!

-

But, if we think about this a little more, this cannot possible work, because of something that you may have noticed in the section on reordering curves: what a curve looks like, and the function that draws that curve, are not in some kind of universal, fixed, one-to-one relation. If we have some quadratic curve, then simply by raising the curve order we can get corresponding cubic, quartic, and higher and higher mathematical expressions that all draw the exact same curve but with wildly different derivatives. So: if we want to make a transition from one curve to the next look good, and we want to use the derivative, then we suddenly need to answer the question: "Which derivative?".

-

How would you even decide? What makes the cubic derivatives better or less suited than, say, quintic derivatives? Wouldn't it be nicer if we could use something that was inherent to the curve, without being tied to the functions that yield that curve? And (of course) as it turns out, there is a way to define curvature in such a way that it only relies on what the curve actually looks like, and given where this section is in the larger body of this Primer, it should hopefully not be surprising that the thing we can use to define curvature is the thing we talked about in the previous section: arc length.

-

Intuitively, this should make sense, even if we have no idea what the maths would look like: if we travel some fixed distance along some curve, then the point at that distance is simply the point at that distance. It doesn't matter what function we used to draw the curve: once we know what the curve looks like, the function(s) used to draw it become irrelevant: a point a third along the full distance of the curve is simply the point a third along the distance of the curve.

-

You might think that in order to find the curvature of a curve, we now need to find and then solve the arc length function, and that would be a problem because we just saw that there is no way to actually do that: don't worry, we don't. We do need to know the form of the arc length function, which we saw above, but it's not the thing we're actually interested in, and we're going to be rewriting it in a way that makes most of the crazy complex things about it just... disappear.

-

In fact, after running through the steps necessary to determine what we're left with if we use the arclength function's derivative (with another run-through of the maths here), rather than the curve's original function's derivative, then the integral disappears entirely (because of the fundamental theorem of calculus), and we're left with some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

-

Let me just highlight that before we move on: we calculate the curvature of a curve using the arc length function derivative, because the original function's derivative is entirely unreliable, and in doing so we end up with a formula that expresses curvature in terms of the original function's derivatives.

+

However, there's a problem with this approach: if we think about this a little more, we realise that "what a curve looks like" and its derivative values are pretty much entirely unrelated. After all, the section on reordering curves showed us that the same looking curve can have an infinite number of curve expressions of arbitraryly high Bezier degree, and each of those will have widly different derivative values.

+

So what we really want is some kind of expression that's not based on any particular expression of t, but is based on something that is invariant to the kind of function(s) we use to draw our curve. And the prime candidate for this is our curve expression, reparameterised for distance: no matter what order of Bezier curve we use, if we were able to rewrite it as a function of distance-along-the-curve, all those different degree Bezier functions would end up being the same function for "coordinate at some distance D along the curve".

+

We've seen this before... that's the arc length function.

+

So you might think that in order to find the curvature of a curve, we now need to solve the arc length function itself, and that this would be quite a problem because we just saw that there is no way to actually do that. Thankfully, we don't. We only need to know the form of the arc length function, which we saw above and is fairly simple, rather than needing to solve the arc length function. If we start with the arc length expression and the run through the steps necessary to determine its derivative (with an alternative, shorter demonstration of how to do this found over on Stackexchange), then the integral that was giving us so much problems in solving the arc length function disappears entirely (because of the fundamental theorem of calculus), and what we're left with us some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

+

Let me highlight what just happened, because it's pretty special:

+
    +
  1. we wanted to make curves line up, and initially thought to match the curves' derivatives, but
  2. +
  3. that turned out to be a really bad choice, so instead
  4. +
  5. we picked a function that is basically impossible to work with, and then worked with that, which
  6. +
  7. gives us a simple formula that is based on the curves' derivatives.
  8. +

That's crazy!

-

But, that's what makes maths such an interesting thing: it can show you that all your assumptions are completely wrong, only to then go "but actually, you were on the right track all along, here: ..." with a solution that is so easy to work with as to almost seem mundane. So: enough of all this text, how do we calculate curvature? What is the function for κ? Concisely, the function is this:

- -

Which is really just a "short form" that glosses over the fact that we're dealing with functions:

- +

But that's also one of the things that makes maths so powerful: even if your initial ideas are off the mark, you might be much closer than you thought you were, and the journey from "thinking we're completely wrong" to "actually being remarkably close to being right" is where we can find a lot of insight.

+

So, what does the function look like? This:

+ +

Which is really just a "short form" that glosses over the fact that we're dealing with functions of t, so let's expand that a tiny bit:

+

And while that's a litte more verbose, it's still just as simple to work with as the first function: the curvature at some point on any (and this cannot be overstated: any) curve is a ratio between the first and second derivative cross product, and something that looks oddly similar to the standard Euclidean distance function. And nothing in these functions is hard to calculate either: for Bézier curves, simply knowing our curve coordinates means we know what the first and second derivatives are, and so evaluating this function for any t value is just a matter of basic arithematics.

-
- -

Implement the kappa function

In fact, let's just implement it right now:

function kappa(t, B):
-  d = B.getDerivative()
-  dd = d.getDerivative()
-  dx = d.getX(t)
-  dy = d.getY(t)
-  ddx = dd.getX(t)
-  ddy = dd.getY(t)
-  numerator = dx * ddy - ddx * dy
-  denominator = pow(dx*dx + dy*dy, 1.5)
+  d = B.getDerivative(t)
+  dd = B.getSecondDerivative(t)
+  numerator = d.x * dd.y - dd.x * d.y
+  denominator = pow(d.x*d.x + d.y*d.y, 3/2)
+  if denominator is 0: return NaN;
   return numerator / denominator
-

That was easy!

-

In fact, it stays easy because we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest relation in this entire primer:

+

That was easy! (Well okay, that "not a number" value will need to be taken into account by downstream code, but that's a reality of programming anwyay)

+

With all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest transition.

+ + + + Scripts are disabled. Showing fallback image. + + +

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. A way around that, of course, is to show the curvature on both sides of the curve, so let's just do that. But let's take it one step further: we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest bit of maths found in this entire primer:

-

So that's a rather convenient fact to know, too.

-
- -

So with all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest looking transition we could ask for.

- - -

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. In your code you typically solve this by matching absolute values, but that's not super easy to program visually... however, we can just show the curvature on both sides of the curve, making lining things up a bit easier:

- +

So let's revisit the previous graphic with the curvature visualised on both sides of our curves, as well as showing the circle that "fits" our curve at some point that we can control by using a slider:

+ + + + Scripts are disabled. Showing fallback image. + + +
@@ -1936,7 +1945,7 @@ with quadratic or cubic curves:

which we can then substitute in the expression for a:

A quick check shows that plugging these values for a and b into the expressions for Cx and Cy give the same x/y coordinates for both "a away from A" and "b away from B", so let's continue: now that we know the coordinate values for C, we know where our on-curve point T for t=0.5 (or angle φ/2) is, because we can just evaluate the Bézier polynomial, and we know where the circle arc's actual point P is for angle φ/2:

- +

We compute T, observing that if t=0.5, the polynomial values (1-t)², 2(1-t)t, and t² are 0.25, 0.5, and 0.25 respectively:

Which, worked out for the x and y components, gives:

diff --git a/docs/ja-JP/index.html b/docs/ja-JP/index.html index 73192be4..3433cbea 100644 --- a/docs/ja-JP/index.html +++ b/docs/ja-JP/index.html @@ -634,7 +634,7 @@ function drawCurve(points[], t):

行列による曲線の分割

曲線分割には、ベジエ曲線の行列表現を利用する方法もあります。行列についての節では、行列の乗算で曲線が表現できることを確認しました。特に2次・3次のベジエ曲線に関しては、それぞれ以下のような形になりました(読みやすさのため、ベジエの係数ベクトルを反転させています)。

- +

ならびに

曲線をある点t = zで分割し、新しく2つの(自明ですが、より短い)ベジエ曲線を作ることを考えましょう。曲線の行列表現と線形代数を利用すると、この2つのベジエ曲線の座標を求めることができます。まず、実際の「曲線上の点」の情報を分解し、新しい行列の積のかたちにします。

@@ -1388,45 +1388,54 @@ y = curve.get(t).y

Curvature of a curve

-

Imagine we have two curves, and we want to line them in up in a way that "looks right". What would we use as metric to let a computer decide what "looks right" means? For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between leaving one curve and entering the next, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next. What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we could have them share an end coordinate, and then ensure that the derivatives for both curves match at that coordinate, and at a casual glance, that seems the perfect solution: if we make the derivatives match, then both the "direction" in which we travel from one curve to the next is the same, and the "speed" at which we travel the curve will be the same.

+

If we have two curves, and we want to line them in up in a way that "looks right", what would we use as metric to let a computer decide what "looks right" means?

+

For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between the end of one and the start of the next curve, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next.

+

What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we start with a shared coordinate, and then also require that derivatives for both curves match at that coordinate. That way, we're assured that their tangents line up, which must mean the curve transition is perfectly smooth. We can even make the second, third, etc. derivatives match up for better and better transitions.

Problem solved!

-

But, if we think about this a little more, this cannot possible work, because of something that you may have noticed in the section on reordering curves: what a curve looks like, and the function that draws that curve, are not in some kind of universal, fixed, one-to-one relation. If we have some quadratic curve, then simply by raising the curve order we can get corresponding cubic, quartic, and higher and higher mathematical expressions that all draw the exact same curve but with wildly different derivatives. So: if we want to make a transition from one curve to the next look good, and we want to use the derivative, then we suddenly need to answer the question: "Which derivative?".

-

How would you even decide? What makes the cubic derivatives better or less suited than, say, quintic derivatives? Wouldn't it be nicer if we could use something that was inherent to the curve, without being tied to the functions that yield that curve? And (of course) as it turns out, there is a way to define curvature in such a way that it only relies on what the curve actually looks like, and given where this section is in the larger body of this Primer, it should hopefully not be surprising that the thing we can use to define curvature is the thing we talked about in the previous section: arc length.

-

Intuitively, this should make sense, even if we have no idea what the maths would look like: if we travel some fixed distance along some curve, then the point at that distance is simply the point at that distance. It doesn't matter what function we used to draw the curve: once we know what the curve looks like, the function(s) used to draw it become irrelevant: a point a third along the full distance of the curve is simply the point a third along the distance of the curve.

-

You might think that in order to find the curvature of a curve, we now need to find and then solve the arc length function, and that would be a problem because we just saw that there is no way to actually do that: don't worry, we don't. We do need to know the form of the arc length function, which we saw above, but it's not the thing we're actually interested in, and we're going to be rewriting it in a way that makes most of the crazy complex things about it just... disappear.

-

In fact, after running through the steps necessary to determine what we're left with if we use the arclength function's derivative (with another run-through of the maths here), rather than the curve's original function's derivative, then the integral disappears entirely (because of the fundamental theorem of calculus), and we're left with some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

-

Let me just highlight that before we move on: we calculate the curvature of a curve using the arc length function derivative, because the original function's derivative is entirely unreliable, and in doing so we end up with a formula that expresses curvature in terms of the original function's derivatives.

+

However, there's a problem with this approach: if we think about this a little more, we realise that "what a curve looks like" and its derivative values are pretty much entirely unrelated. After all, the section on reordering curves showed us that the same looking curve can have an infinite number of curve expressions of arbitraryly high Bezier degree, and each of those will have widly different derivative values.

+

So what we really want is some kind of expression that's not based on any particular expression of t, but is based on something that is invariant to the kind of function(s) we use to draw our curve. And the prime candidate for this is our curve expression, reparameterised for distance: no matter what order of Bezier curve we use, if we were able to rewrite it as a function of distance-along-the-curve, all those different degree Bezier functions would end up being the same function for "coordinate at some distance D along the curve".

+

We've seen this before... that's the arc length function.

+

So you might think that in order to find the curvature of a curve, we now need to solve the arc length function itself, and that this would be quite a problem because we just saw that there is no way to actually do that. Thankfully, we don't. We only need to know the form of the arc length function, which we saw above and is fairly simple, rather than needing to solve the arc length function. If we start with the arc length expression and the run through the steps necessary to determine its derivative (with an alternative, shorter demonstration of how to do this found over on Stackexchange), then the integral that was giving us so much problems in solving the arc length function disappears entirely (because of the fundamental theorem of calculus), and what we're left with us some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

+

Let me highlight what just happened, because it's pretty special:

+
    +
  1. we wanted to make curves line up, and initially thought to match the curves' derivatives, but
  2. +
  3. that turned out to be a really bad choice, so instead
  4. +
  5. we picked a function that is basically impossible to work with, and then worked with that, which
  6. +
  7. gives us a simple formula that is based on the curves' derivatives.
  8. +

That's crazy!

-

But, that's what makes maths such an interesting thing: it can show you that all your assumptions are completely wrong, only to then go "but actually, you were on the right track all along, here: ..." with a solution that is so easy to work with as to almost seem mundane. So: enough of all this text, how do we calculate curvature? What is the function for κ? Concisely, the function is this:

- -

Which is really just a "short form" that glosses over the fact that we're dealing with functions:

- +

But that's also one of the things that makes maths so powerful: even if your initial ideas are off the mark, you might be much closer than you thought you were, and the journey from "thinking we're completely wrong" to "actually being remarkably close to being right" is where we can find a lot of insight.

+

So, what does the function look like? This:

+ +

Which is really just a "short form" that glosses over the fact that we're dealing with functions of t, so let's expand that a tiny bit:

+

And while that's a litte more verbose, it's still just as simple to work with as the first function: the curvature at some point on any (and this cannot be overstated: any) curve is a ratio between the first and second derivative cross product, and something that looks oddly similar to the standard Euclidean distance function. And nothing in these functions is hard to calculate either: for Bézier curves, simply knowing our curve coordinates means we know what the first and second derivatives are, and so evaluating this function for any t value is just a matter of basic arithematics.

-
- -

Implement the kappa function

In fact, let's just implement it right now:

function kappa(t, B):
-  d = B.getDerivative()
-  dd = d.getDerivative()
-  dx = d.getX(t)
-  dy = d.getY(t)
-  ddx = dd.getX(t)
-  ddy = dd.getY(t)
-  numerator = dx * ddy - ddx * dy
-  denominator = pow(dx*dx + dy*dy, 1.5)
+  d = B.getDerivative(t)
+  dd = B.getSecondDerivative(t)
+  numerator = d.x * dd.y - dd.x * d.y
+  denominator = pow(d.x*d.x + d.y*d.y, 3/2)
+  if denominator is 0: return NaN;
   return numerator / denominator
-

That was easy!

-

In fact, it stays easy because we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest relation in this entire primer:

+

That was easy! (Well okay, that "not a number" value will need to be taken into account by downstream code, but that's a reality of programming anwyay)

+

With all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest transition.

+ + + + Scripts are disabled. Showing fallback image. + + +

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. A way around that, of course, is to show the curvature on both sides of the curve, so let's just do that. But let's take it one step further: we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest bit of maths found in this entire primer:

-

So that's a rather convenient fact to know, too.

-
- -

So with all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest looking transition we could ask for.

- - -

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. In your code you typically solve this by matching absolute values, but that's not super easy to program visually... however, we can just show the curvature on both sides of the curve, making lining things up a bit easier:

- +

So let's revisit the previous graphic with the curvature visualised on both sides of our curves, as well as showing the circle that "fits" our curve at some point that we can control by using a slider:

+ + + + Scripts are disabled. Showing fallback image. + + +
@@ -1933,7 +1942,7 @@ with quadratic or cubic curves:

which we can then substitute in the expression for a:

A quick check shows that plugging these values for a and b into the expressions for Cx and Cy give the same x/y coordinates for both "a away from A" and "b away from B", so let's continue: now that we know the coordinate values for C, we know where our on-curve point T for t=0.5 (or angle φ/2) is, because we can just evaluate the Bézier polynomial, and we know where the circle arc's actual point P is for angle φ/2:

- +

We compute T, observing that if t=0.5, the polynomial values (1-t)², 2(1-t)t, and t² are 0.25, 0.5, and 0.25 respectively:

Which, worked out for the x and y components, gives:

diff --git a/docs/js/custom-element/api/base-api.js b/docs/js/custom-element/api/base-api.js index f400f1d0..e34de3b5 100644 --- a/docs/js/custom-element/api/base-api.js +++ b/docs/js/custom-element/api/base-api.js @@ -66,11 +66,17 @@ class BaseAPI { this.parameters = Object.fromEntries( Object.entries(this.dataset) .map((pair) => { + let name = pair[0]; let v = pair[1]; if (v === `null` || v === `undefined`) return []; - let d = parseFloat(v); - // evaluate "string is number" using == rather than === - return [pair[0], v == d ? d : v]; + if (v === `true`) return [name, true]; + else if (v === `false`) return [name, false]; + else { + let d = parseFloat(v); + // Use == to evaluate "is this a string number" + if (v == d) return [name, d]; + } + return [name, v]; }) .filter((v) => v.length) ); diff --git a/docs/js/custom-element/lib/bezierjs/bezier.js b/docs/js/custom-element/lib/bezierjs/bezier.js index 803d1b0f..fd3a96c4 100644 --- a/docs/js/custom-element/lib/bezierjs/bezier.js +++ b/docs/js/custom-element/lib/bezierjs/bezier.js @@ -331,29 +331,11 @@ class Bezier { } derivative(t) { - const mt = 1 - t; - let a, - b, - c = 0, - p = this.dpoints[0]; - if (this.order === 2) { - p = [p[0], p[1], ZERO]; - a = mt; - b = t; - } - if (this.order === 3) { - a = mt * mt; - b = mt * t * 2; - c = t * t; - } - const ret = { - x: a * p[0].x + b * p[1].x + c * p[2].x, - y: a * p[0].y + b * p[1].y + c * p[2].y, - }; - if (this._3d) { - ret.z = a * p[0].z + b * p[1].z + c * p[2].z; - } - return ret; + return utils.compute(t, this.dpoints[0]); + } + + dderivative(t) { + return utils.compute(t, this.dpoints[1]); } align() { @@ -362,7 +344,7 @@ class Bezier { } curvature(t) { - return utils.curvature(t, this.points, this._3d); + return utils.curvature(t, this.dpoints[0], this.dpoints[1], this._3d); } inflections() { diff --git a/docs/js/custom-element/lib/bezierjs/utils.js b/docs/js/custom-element/lib/bezierjs/utils.js index f086cae4..8dc876c8 100644 --- a/docs/js/custom-element/lib/bezierjs/utils.js +++ b/docs/js/custom-element/lib/bezierjs/utils.js @@ -647,11 +647,7 @@ const utils = { return []; }, - curvature: function (t, points, _3d, kOnly) { - const dpoints = utils.derive(points); - const d1 = dpoints[0]; - const d2 = dpoints[1]; - + curvature: function (t, d1, d2, _3d, kOnly) { let num, dnm, adk, @@ -705,8 +701,8 @@ const utils = { if (!kOnly) { // compute k'(t) based on the interval before, and after it, // to at least try to not introduce forward/backward pass bias. - const pk = utils.curvature(t - 0.001, points, _3d, true).k; - const nk = utils.curvature(t + 0.001, points, _3d, true).k; + const pk = utils.curvature(t - 0.001, d1, d2, _3d, true).k; + const nk = utils.curvature(t + 0.001, d1, d2, _3d, true).k; dk = (nk - k + (k - pk)) / 2; adk = (abs(nk - k) + abs(k - pk)) / 2; } diff --git a/docs/zh-CN/index.html b/docs/zh-CN/index.html index b32f00f4..431f3d4e 100644 --- a/docs/zh-CN/index.html +++ b/docs/zh-CN/index.html @@ -349,7 +349,7 @@ function Bezier(3,t):

上面有一张是15th阶的插值方程。如你所见,在所有控制点中,起点和终点对曲线形状的贡献比其他点更大些。

如果我们要改变曲线,就需要改变每个点的权重,有效地改变插值。可以很直接地做到这个:只要用一个值乘以每个点,来改变它的强度。这个值照惯例称为“权重”,我们可以将它加入我们原始的贝塞尔函数:

- +

看起来很复杂,但实际上“权重”只是我们想让曲线所拥有的坐标值:对于一条nth阶曲线,w0是起始坐标,wn是终点坐标,中间的所有点都是控制点坐标。假设说一条曲线的起点为(120,160),终点为(220,40),并受点(35,200)和点(220,260)的控制,贝塞尔曲线方程就为:

这就是我们在文章开头看到的曲线:

@@ -628,7 +628,7 @@ function drawCurve(points[], t):

Splitting curves using matrices

Another way to split curves is to exploit the matrix representation of a Bézier curve. In the section on matrices, we saw that we can represent curves as matrix multiplications. Specifically, we saw these two forms for the quadratic and cubic curves respectively: (we'll reverse the Bézier coefficients vector for legibility)

- +

and

Let's say we want to split the curve at some point t = z, forming two new (obviously smaller) Bézier curves. To find the coordinates for these two Bézier curves, we can use the matrix representation and some linear algebra. First, we separate out the actual "point on the curve" information into a new matrix multiplication:

@@ -1382,45 +1382,54 @@ y = curve.get(t).y

Curvature of a curve

-

Imagine we have two curves, and we want to line them in up in a way that "looks right". What would we use as metric to let a computer decide what "looks right" means? For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between leaving one curve and entering the next, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next. What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we could have them share an end coordinate, and then ensure that the derivatives for both curves match at that coordinate, and at a casual glance, that seems the perfect solution: if we make the derivatives match, then both the "direction" in which we travel from one curve to the next is the same, and the "speed" at which we travel the curve will be the same.

+

If we have two curves, and we want to line them in up in a way that "looks right", what would we use as metric to let a computer decide what "looks right" means?

+

For instance, we can start by ensuring that the two curves share an end coordinate, so that there is no "gap" between the end of one and the start of the next curve, but that won't guarantee that things look right: both curves can be going in wildly different directions, and the resulting joined geometry will have a corner in it, rather than a smooth transition from one curve to the next.

+

What we want is to ensure that the curvature at the transition from one curve to the next "looks good". So, we start with a shared coordinate, and then also require that derivatives for both curves match at that coordinate. That way, we're assured that their tangents line up, which must mean the curve transition is perfectly smooth. We can even make the second, third, etc. derivatives match up for better and better transitions.

Problem solved!

-

But, if we think about this a little more, this cannot possible work, because of something that you may have noticed in the section on reordering curves: what a curve looks like, and the function that draws that curve, are not in some kind of universal, fixed, one-to-one relation. If we have some quadratic curve, then simply by raising the curve order we can get corresponding cubic, quartic, and higher and higher mathematical expressions that all draw the exact same curve but with wildly different derivatives. So: if we want to make a transition from one curve to the next look good, and we want to use the derivative, then we suddenly need to answer the question: "Which derivative?".

-

How would you even decide? What makes the cubic derivatives better or less suited than, say, quintic derivatives? Wouldn't it be nicer if we could use something that was inherent to the curve, without being tied to the functions that yield that curve? And (of course) as it turns out, there is a way to define curvature in such a way that it only relies on what the curve actually looks like, and given where this section is in the larger body of this Primer, it should hopefully not be surprising that the thing we can use to define curvature is the thing we talked about in the previous section: arc length.

-

Intuitively, this should make sense, even if we have no idea what the maths would look like: if we travel some fixed distance along some curve, then the point at that distance is simply the point at that distance. It doesn't matter what function we used to draw the curve: once we know what the curve looks like, the function(s) used to draw it become irrelevant: a point a third along the full distance of the curve is simply the point a third along the distance of the curve.

-

You might think that in order to find the curvature of a curve, we now need to find and then solve the arc length function, and that would be a problem because we just saw that there is no way to actually do that: don't worry, we don't. We do need to know the form of the arc length function, which we saw above, but it's not the thing we're actually interested in, and we're going to be rewriting it in a way that makes most of the crazy complex things about it just... disappear.

-

In fact, after running through the steps necessary to determine what we're left with if we use the arclength function's derivative (with another run-through of the maths here), rather than the curve's original function's derivative, then the integral disappears entirely (because of the fundamental theorem of calculus), and we're left with some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

-

Let me just highlight that before we move on: we calculate the curvature of a curve using the arc length function derivative, because the original function's derivative is entirely unreliable, and in doing so we end up with a formula that expresses curvature in terms of the original function's derivatives.

+

However, there's a problem with this approach: if we think about this a little more, we realise that "what a curve looks like" and its derivative values are pretty much entirely unrelated. After all, the section on reordering curves showed us that the same looking curve can have an infinite number of curve expressions of arbitraryly high Bezier degree, and each of those will have widly different derivative values.

+

So what we really want is some kind of expression that's not based on any particular expression of t, but is based on something that is invariant to the kind of function(s) we use to draw our curve. And the prime candidate for this is our curve expression, reparameterised for distance: no matter what order of Bezier curve we use, if we were able to rewrite it as a function of distance-along-the-curve, all those different degree Bezier functions would end up being the same function for "coordinate at some distance D along the curve".

+

We've seen this before... that's the arc length function.

+

So you might think that in order to find the curvature of a curve, we now need to solve the arc length function itself, and that this would be quite a problem because we just saw that there is no way to actually do that. Thankfully, we don't. We only need to know the form of the arc length function, which we saw above and is fairly simple, rather than needing to solve the arc length function. If we start with the arc length expression and the run through the steps necessary to determine its derivative (with an alternative, shorter demonstration of how to do this found over on Stackexchange), then the integral that was giving us so much problems in solving the arc length function disappears entirely (because of the fundamental theorem of calculus), and what we're left with us some surprisingly simple maths that relates curvature (denoted as κ, "kappa") to—and this is the truly surprising bit—a specific combination of derivatives of our original function.

+

Let me highlight what just happened, because it's pretty special:

+
    +
  1. we wanted to make curves line up, and initially thought to match the curves' derivatives, but
  2. +
  3. that turned out to be a really bad choice, so instead
  4. +
  5. we picked a function that is basically impossible to work with, and then worked with that, which
  6. +
  7. gives us a simple formula that is based on the curves' derivatives.
  8. +

That's crazy!

-

But, that's what makes maths such an interesting thing: it can show you that all your assumptions are completely wrong, only to then go "but actually, you were on the right track all along, here: ..." with a solution that is so easy to work with as to almost seem mundane. So: enough of all this text, how do we calculate curvature? What is the function for κ? Concisely, the function is this:

- -

Which is really just a "short form" that glosses over the fact that we're dealing with functions:

- +

But that's also one of the things that makes maths so powerful: even if your initial ideas are off the mark, you might be much closer than you thought you were, and the journey from "thinking we're completely wrong" to "actually being remarkably close to being right" is where we can find a lot of insight.

+

So, what does the function look like? This:

+ +

Which is really just a "short form" that glosses over the fact that we're dealing with functions of t, so let's expand that a tiny bit:

+

And while that's a litte more verbose, it's still just as simple to work with as the first function: the curvature at some point on any (and this cannot be overstated: any) curve is a ratio between the first and second derivative cross product, and something that looks oddly similar to the standard Euclidean distance function. And nothing in these functions is hard to calculate either: for Bézier curves, simply knowing our curve coordinates means we know what the first and second derivatives are, and so evaluating this function for any t value is just a matter of basic arithematics.

-
- -

Implement the kappa function

In fact, let's just implement it right now:

function kappa(t, B):
-  d = B.getDerivative()
-  dd = d.getDerivative()
-  dx = d.getX(t)
-  dy = d.getY(t)
-  ddx = dd.getX(t)
-  ddy = dd.getY(t)
-  numerator = dx * ddy - ddx * dy
-  denominator = pow(dx*dx + dy*dy, 1.5)
+  d = B.getDerivative(t)
+  dd = B.getSecondDerivative(t)
+  numerator = d.x * dd.y - dd.x * d.y
+  denominator = pow(d.x*d.x + d.y*d.y, 3/2)
+  if denominator is 0: return NaN;
   return numerator / denominator
-

That was easy!

-

In fact, it stays easy because we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest relation in this entire primer:

+

That was easy! (Well okay, that "not a number" value will need to be taken into account by downstream code, but that's a reality of programming anwyay)

+

With all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest transition.

+ + + + Scripts are disabled. Showing fallback image. + + +

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. A way around that, of course, is to show the curvature on both sides of the curve, so let's just do that. But let's take it one step further: we can also compute the associated "radius of curvature", which gives us the implicit circle that "fits" the curve's curvature at any point, using what is possibly the simplest bit of maths found in this entire primer:

-

So that's a rather convenient fact to know, too.

-
- -

So with all of that covered, let's line up some curves! The following graphic gives you two curves that look identical, but use quadratic and cubic functions, respectively. As you can see, despite their derivatives being necessarily different, their curvature (thanks to being derived based on maths that "ignores" specific function derivative, and instead gives a formulat that smooths out any differences) is exactly the same. And because of that, we can put them together such that the point where they overlap has the same curvature for both curves, giving us the smoothest looking transition we could ask for.

- - -

One thing you may have noticed in this sketch is that sometimes the curvature looks fine, but seems to be pointing in the wrong direction, making it hard to line up the curves properly. In your code you typically solve this by matching absolute values, but that's not super easy to program visually... however, we can just show the curvature on both sides of the curve, making lining things up a bit easier:

- +

So let's revisit the previous graphic with the curvature visualised on both sides of our curves, as well as showing the circle that "fits" our curve at some point that we can control by using a slider:

+ + + + Scripts are disabled. Showing fallback image. + + +
@@ -1927,7 +1936,7 @@ with quadratic or cubic curves:

which we can then substitute in the expression for a:

A quick check shows that plugging these values for a and b into the expressions for Cx and Cy give the same x/y coordinates for both "a away from A" and "b away from B", so let's continue: now that we know the coordinate values for C, we know where our on-curve point T for t=0.5 (or angle φ/2) is, because we can just evaluate the Bézier polynomial, and we know where the circle arc's actual point P is for angle φ/2:

- +

We compute T, observing that if t=0.5, the polynomial values (1-t)², 2(1-t)t, and t² are 0.25, 0.5, and 0.25 respectively:

Which, worked out for the x and y components, gives: