{
  "aliases": null,
  "backlinks": [
    {
      "field": "defines",
      "target": "99SCT623E8"
    }
  ],
  "body": "\n## Summary\n\nDe Boor's algorithm evaluates a spline written in the [[B-spline|62AFX32JGT]] basis at a point.\nIt replaces the coefficients of the B-splines that are active at the point by repeated [[convex combinations|21SXYJYC59]], until a single value remains.\nIt needs no explicit B-spline values, is numerically stable, and generalizes [[de Casteljau's algorithm|HT4Q9K3P2Z]] for Bézier curves.\n\n## Explanations\n\n### L1 human\n\nA spline curve is controlled by a list of control points, but only a few of them affect a given parameter value.\nDe Boor's algorithm takes those few points and repeatedly replaces each pair of neighbours by a point on the segment between them.\nAfter as many rounds as the degree, one point is left, and that point lies on the curve.\nFor a quadratic spline, three control points are blended into two, and the two into one.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "kind": "concept",
    "msc": [
      "65D07",
      "41A15",
      "65D17"
    ],
    "name": "de Boor's algorithm",
    "same_as": {
      "wikidata": "Q5244271",
      "wikipedia": "De Boor's algorithm"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/De_Boor%27s_algorithm"
      }
    ],
    "tag": "5JHFB384BF"
  },
  "kind": "concept",
  "link": "https://tamnd.github.io/math2/node/5JHFB384BF/",
  "links": null,
  "markdown": "https://tamnd.github.io/math2/node/5JHFB384BF.md",
  "msc": [
    "65D07",
    "41A15",
    "65D17"
  ],
  "name": "de Boor's algorithm",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/5JH/5JHFB384BF.md",
  "status": null,
  "tag": "5JHFB384BF",
  "uri": "m2://5JHFB384BF",
  "url": "https://tamnd.github.io/math2/wiki/de-boors-algorithm/",
  "writing": {
    "tag": "5JHFB384BF",
    "kind": "concept",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
