{
  "aliases": null,
  "backlinks": [
    {
      "field": "defines",
      "target": "DCH91F9YDK"
    }
  ],
  "body": "\n## Summary\n\nDe Casteljau's algorithm computes a point of a [[Bézier curve|NEXBTGYYRG]] by repeated linear interpolation between control points.\nIt also evaluates polynomials in [[Bernstein–Bézier form|Z5Y0VH10YR]].\nIt uses only [[convex combinations|21SXYJYC59]], so it is numerically stable.\nThe intermediate points also give the control points of the two halves of the curve, which is the basis of subdivision methods in computer-aided design.\n\n## Explanations\n\n### L1 human\n\nDraw the polygon through the control points and mark the point a fraction $t$ of the way along each edge.\nJoin the marked points to get a polygon with one fewer vertex, and repeat.\nAfter as many rounds as the degree, a single point is left, and it is the point of the curve at parameter $t$.\nFor three points and $t = 1/2$, one takes the two edge midpoints and then the midpoint between them.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "kind": "concept",
    "msc": [
      "65D17",
      "68U07",
      "41A10"
    ],
    "name": "de Casteljau's algorithm",
    "same_as": {
      "wikidata": "Q1179419",
      "wikipedia": "De Casteljau's algorithm"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm"
      }
    ],
    "tag": "HT4Q9K3P2Z"
  },
  "kind": "concept",
  "link": "https://tamnd.github.io/math2/node/HT4Q9K3P2Z/",
  "links": null,
  "markdown": "https://tamnd.github.io/math2/node/HT4Q9K3P2Z.md",
  "msc": [
    "65D17",
    "68U07",
    "41A10"
  ],
  "name": "de Casteljau's algorithm",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/HT4/HT4Q9K3P2Z.md",
  "status": null,
  "tag": "HT4Q9K3P2Z",
  "uri": "m2://HT4Q9K3P2Z",
  "url": "https://tamnd.github.io/math2/wiki/de-casteljaus-algorithm/",
  "writing": {
    "tag": "HT4Q9K3P2Z",
    "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
      }
    ]
  }
}
