{"version":3,"file":"buildArcTo.mjs","sources":["../../../../../src/scene/graphics/shared/buildCommands/buildArcTo.ts"],"sourcesContent":["import { buildArc } from './buildArc';\n\n/**\n * The arcTo() method creates an arc/curve between two tangents on the canvas.\n *\n * \"borrowed\" from https://code.google.com/p/fxcanvas/ - thanks google!\n * @param points\n * @param x1\n * @param y1\n * @param x2\n * @param y2\n * @param radius\n * @internal\n */\nexport function buildArcTo(\n    points: number[],\n    x1: number, y1: number,\n    x2: number, y2: number,\n    radius: number,\n): void\n{\n    const fromX = points[points.length - 2];\n    const fromY = points[points.length - 1];\n\n    const a1 = fromY - y1;\n    const b1 = fromX - x1;\n    const a2 = y2 - y1;\n    const b2 = x2 - x1;\n    const mm = Math.abs((a1 * b2) - (b1 * a2));\n\n    if (mm < 1.0e-8 || radius === 0)\n    {\n        if (points[points.length - 2] !== x1 || points[points.length - 1] !== y1)\n        {\n            points.push(x1, y1);\n        }\n\n        return;\n    }\n\n    const dd = (a1 * a1) + (b1 * b1);\n    const cc = (a2 * a2) + (b2 * b2);\n    const tt = (a1 * a2) + (b1 * b2);\n    const k1 = radius * Math.sqrt(dd) / mm;\n    const k2 = radius * Math.sqrt(cc) / mm;\n    const j1 = k1 * tt / dd;\n    const j2 = k2 * tt / cc;\n    const cx = (k1 * b2) + (k2 * b1);\n    const cy = (k1 * a2) + (k2 * a1);\n    const px = b1 * (k2 + j1);\n    const py = a1 * (k2 + j1);\n    const qx = b2 * (k1 + j2);\n    const qy = a2 * (k1 + j2);\n    const startAngle = Math.atan2(py - cy, px - cx);\n    const endAngle = Math.atan2(qy - cy, qx - cx);\n\n    buildArc(points,\n        (cx + x1),\n        (cy + y1),\n        radius,\n        startAngle,\n        endAngle,\n        b1 * a2 > b2 * a1\n    );\n}\n"],"names":[],"mappings":";;;AAcO,SAAS,WACZ,MAAA,EACA,EAAA,EAAY,EAAA,EACZ,EAAA,EAAY,IACZ,MAAA,EAEJ;AACI,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AACtC,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AAEtC,EAAA,MAAM,KAAK,KAAA,GAAQ,EAAA;AACnB,EAAA,MAAM,KAAK,KAAA,GAAQ,EAAA;AACnB,EAAA,MAAM,KAAK,EAAA,GAAK,EAAA;AAChB,EAAA,MAAM,KAAK,EAAA,GAAK,EAAA;AAChB,EAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,EAAA,GAAO,KAAK,EAAG,CAAA;AAEzC,EAAA,IAAI,EAAA,GAAK,IAAA,IAAU,MAAA,KAAW,CAAA,EAC9B;AACI,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,KAAM,EAAA,IAAM,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA,KAAM,EAAA,EACtE;AACI,MAAA,MAAA,CAAO,IAAA,CAAK,IAAI,EAAE,CAAA;AAAA,IACtB;AAEA,IAAA;AAAA,EACJ;AAEA,EAAA,MAAM,EAAA,GAAM,EAAA,GAAK,EAAA,GAAO,EAAA,GAAK,EAAA;AAC7B,EAAA,MAAM,EAAA,GAAM,EAAA,GAAK,EAAA,GAAO,EAAA,GAAK,EAAA;AAC7B,EAAA,MAAM,EAAA,GAAM,EAAA,GAAK,EAAA,GAAO,EAAA,GAAK,EAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,EAAA;AACpC,EAAA,MAAM,EAAA,GAAK,MAAA,GAAS,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,GAAI,EAAA;AACpC,EAAA,MAAM,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA;AACrB,EAAA,MAAM,EAAA,GAAK,KAAK,EAAA,GAAK,EAAA;AACrB,EAAA,MAAM,EAAA,GAAM,EAAA,GAAK,EAAA,GAAO,EAAA,GAAK,EAAA;AAC7B,EAAA,MAAM,EAAA,GAAM,EAAA,GAAK,EAAA,GAAO,EAAA,GAAK,EAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,GAAK,EAAA,CAAA;AACtB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,GAAK,EAAA,CAAA;AACtB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,GAAK,EAAA,CAAA;AACtB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,GAAK,EAAA,CAAA;AACtB,EAAA,MAAM,aAAa,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,EAAA,EAAI,KAAK,EAAE,CAAA;AAC9C,EAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,EAAA,EAAI,KAAK,EAAE,CAAA;AAE5C,EAAA,QAAA;AAAA,IAAS,MAAA;AAAA,IACJ,EAAA,GAAK,EAAA;AAAA,IACL,EAAA,GAAK,EAAA;AAAA,IACN,MAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA,GAAK,KAAK,EAAA,GAAK;AAAA,GACnB;AACJ;;;;"}