@johnhenry/math 0.0.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -139,7 +139,7 @@ Well beyond the original ActionScript scope, the library now spans:
139
139
  | Area | Module(s) | Highlights |
140
140
  |------|-----------|------------|
141
141
  | Numerical linear algebra | `MatrixMath` | LU, QR, Cholesky, symmetric eigen (Jacobi), SVD; `solve`, RREF, rank, null space, least squares, pseudo-inverse, norms, condition number |
142
- | Symbolic calculus | `Symbolic` | expression parser (41 unary elementary functions incl. inverse-trig, reciprocal-trig, hyperbolic/inverse-hyperbolic, `abs`/`log10`/`log2`/`cbrt`/`floor`/`ceil`/`round`/`sign`/`trunc`, and `expm1`/`log1p`/`sigmoid`/`erf`/`relu`, with `arcsin`/`logistic`-style aliases and `\|x\|` bar syntax, plus N-ary `atan2`/`hypot`/`min`/`max`/`gcd`/`lcm`, `log(base, x)`/`clamp(x, lo, hi)`, and `piecewise(cond, expr, ..., otherwise)` with `<`/`<=`/`>`/`>=`/`==`/`!=` comparisons), symbolic differentiation (incl. the multivariate chain rule for the N-ary functions and branch-wise piecewise differentiation) with a u-substitution fallback for `integrate`, algebraic simplification with like-term collection and constant-folding, elementary integration (incl. by-parts, arctan/arcsin forms, and u-substitution), `integrateDefinite` (closed-form first, adaptive-quadrature fallback), `sumSeries` (finite/infinite, closed-form geometric recognition + numeric fallback), Taylor series, `expand`/`substitute`, polynomial `solve`/`factor`, linear `solveSystem`, L'Hopital `limit` (incl. limits at infinity), LaTeX round-trip (`toLatex`/`fromLatex`, incl. `\operatorname{...}`, bracket notation for `abs`/`floor`/`ceil`/`cbrt`, and `\begin{cases}` for piecewise), `evaluateExact` (exact `Rational` evaluation), `evaluateOverStructure` (folds an `Expr` through an arbitrary `Structure`'s own algebra, e.g. for plotting over Z/7Z), and `freeVariables`/`assertVariables` (auto-detect an expression's variables, or opt into strict mode and throw `UndeclaredVariableError` instead of silently resolving an undeclared one to `NaN`) |
142
+ | Symbolic calculus | `Symbolic` | expression parser (41 unary elementary functions incl. inverse-trig, reciprocal-trig, hyperbolic/inverse-hyperbolic, `abs`/`log10`/`log2`/`cbrt`/`floor`/`ceil`/`round`/`sign`/`trunc`, and `expm1`/`log1p`/`sigmoid`/`erf`/`relu`, with `arcsin`/`logistic`-style aliases and `\|x\|` bar syntax, plus N-ary `atan2`/`hypot`/`min`/`max`/`gcd`/`lcm`, `log(base, x)`/`clamp(x, lo, hi)`, and `piecewise(cond, expr, ..., otherwise)` with `<`/`<=`/`>`/`>=`/`==`/`!=` comparisons), symbolic differentiation (incl. the multivariate chain rule for the N-ary functions and branch-wise piecewise differentiation) with a u-substitution fallback for `integrate`, algebraic simplification with like-term collection and constant-folding, elementary integration (incl. by-parts, arctan/arcsin forms, and u-substitution), `integrateDefinite` (closed-form first, adaptive-quadrature fallback), `sumSeries` (finite/infinite, closed-form geometric recognition + numeric fallback), Taylor series, `expand`/`substitute`, polynomial `solve`/`factor`, linear `solveSystem`, L'Hopital `limit` (incl. limits at infinity), LaTeX round-trip (`toLatex`/`fromLatex`, incl. `\operatorname{...}`, bracket notation for `abs`/`floor`/`ceil`/`cbrt`, and `\begin{cases}` for piecewise), `toGLSL`/`toWGSL` (compile an `Expr` to a GLSL ES 3.0 / WGSL expression over float or, with `{ complex: true }`, `vec2` complex numbers; deterministic output, unsupported nodes refused with `ShaderUnsupportedError`), `evaluateExact` (exact `Rational` evaluation), `evaluateOverStructure` (folds an `Expr` through an arbitrary `Structure`'s own algebra, e.g. for plotting over Z/7Z), and `freeVariables`/`assertVariables` (auto-detect an expression's variables, or opt into strict mode and throw `UndeclaredVariableError` instead of silently resolving an undeclared one to `NaN`) |
143
143
  | Number types | `Rational`, `Quaternion`, `DualNumber`, `Interval` | exact bigint rationals, 3D-rotation quaternions, forward-mode autodiff, rigorous interval arithmetic — each also a `Structure` preset |
144
144
  | 4D geometric algebra | `Vec4`, `Bivector4`, `Rotor4`, `GeometricAlgebra4` | a genuine fourth *spatial* dimension (not time): 4D vectors, 6-component bivectors (the 2-planes of 4D), and rotors that generalize `Quaternion` to 4D — including 4D-only **double rotations** (simultaneous, independent rotation in two orthogonal planes at once); built on an internal Cl(4,0) blade engine for correctness (verified against `Quaternion` on their shared 3D subspace). `GeometricAlgebra4` also has the `commutatorProduct` and `leftContraction` operations n-dimensional rigid-body dynamics needs (generalized Euler's equation, point velocity). `Rotor4.factor()`/`renormalize()` implement Perwass-style rotor factorization — the proper fix for numerical drift on a double rotation, where naive magnitude normalization silently produces an invalid rotor (verified against 200+ random plane orientations/angles, including the isoclinic and right-isoclinic degenerate cases) |
145
145
  | Number theory | `NumberTheory` | `bigint` modPow, extended GCD, CRT, Miller–Rabin, Pollard-rho factorization, Legendre/Jacobi |
@@ -14,6 +14,13 @@ export declare class DualNumber {
14
14
  static constant(x: number): DualNumber;
15
15
  /** An independent variable at `x` (unit derivative). */
16
16
  static variable(x: number): DualNumber;
17
+ /**
18
+ * Builds a dual number whose value may be outside the function's domain. A
19
+ * NaN value (e.g. `log` of a negative) makes the derivative NaN too, rather
20
+ * than leaving a finite-looking derivative (`x.deriv / x.value`) next to a
21
+ * meaningless value.
22
+ */
23
+ private static domain;
17
24
  private static lift;
18
25
  add(o: DualNumber | number): DualNumber;
19
26
  subtract(o: DualNumber | number): DualNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"DualNumber.d.ts","sourceRoot":"","sources":["../src/DualNumber.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,SAAI,EAAE,KAAK,SAAI;IAKhC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAItC,wDAAwD;IACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAItC,OAAO,CAAC,MAAM,CAAC,IAAI;IAInB,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAKvC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK5C,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK5C,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK1C,MAAM,IAAI,UAAU;IAIpB,8CAA8C;IAC9C,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAW1B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAIrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAIrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAKtC,wEAAwE;IACxE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAItE,uDAAuD;IACvD,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAK7G,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAO/E,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"DualNumber.d.ts","sourceRoot":"","sources":["../src/DualNumber.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,SAAI,EAAE,KAAK,SAAI;IAKhC,oCAAoC;IACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAItC,wDAAwD;IACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAItC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB,OAAO,CAAC,MAAM,CAAC,IAAI;IAInB,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAKvC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK5C,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK5C,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAK1C,MAAM,IAAI,UAAU;IAIpB,8CAA8C;IAC9C,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU;IAW1B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAIrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAIrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAGrC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAKtC,wEAAwE;IACxE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAItE,uDAAuD;IACvD,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAK7G,oFAAoF;IACpF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAO/E,QAAQ,IAAI,MAAM;CAGnB"}
@@ -21,6 +21,15 @@ export class DualNumber {
21
21
  static variable(x) {
22
22
  return new DualNumber(x, 1);
23
23
  }
24
+ /**
25
+ * Builds a dual number whose value may be outside the function's domain. A
26
+ * NaN value (e.g. `log` of a negative) makes the derivative NaN too, rather
27
+ * than leaving a finite-looking derivative (`x.deriv / x.value`) next to a
28
+ * meaningless value.
29
+ */
30
+ static domain(value, deriv) {
31
+ return new DualNumber(value, Number.isNaN(value) ? Number.NaN : deriv);
32
+ }
24
33
  static lift(x) {
25
34
  return x instanceof DualNumber ? x : new DualNumber(x, 0);
26
35
  }
@@ -53,7 +62,7 @@ export class DualNumber {
53
62
  // form (issue #74).
54
63
  if (n === 0)
55
64
  return new DualNumber(1, 0);
56
- return new DualNumber(this.value ** n, n * this.value ** (n - 1) * this.deriv);
65
+ return DualNumber.domain(this.value ** n, n * this.value ** (n - 1) * this.deriv);
57
66
  }
58
67
  static sin(x) {
59
68
  return new DualNumber(Math.sin(x.value), Math.cos(x.value) * x.deriv);
@@ -70,11 +79,11 @@ export class DualNumber {
70
79
  return new DualNumber(e, e * x.deriv);
71
80
  }
72
81
  static log(x) {
73
- return new DualNumber(Math.log(x.value), x.deriv / x.value);
82
+ return DualNumber.domain(Math.log(x.value), x.deriv / x.value);
74
83
  }
75
84
  static sqrt(x) {
76
85
  const s = Math.sqrt(x.value);
77
- return new DualNumber(s, x.deriv / (2 * s));
86
+ return DualNumber.domain(s, x.deriv / (2 * s));
78
87
  }
79
88
  /** The derivative of `f` at `x`, evaluated exactly via dual numbers. */
80
89
  static derivative(f, x) {
@@ -1 +1 @@
1
- {"version":3,"file":"DualNumber.js","sourceRoot":"","sources":["../src/DualNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DualNumber.js","sourceRoot":"","sources":["../src/DualNumber.ts"],"names":[],"mappings":"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"}
@@ -74,6 +74,8 @@ export declare class Graph3DUtils {
74
74
  /**
75
75
  * Build a surface mesh from a grid (matrix) of points, as two triangle
76
76
  * sweeps with distinct materials (bug fix: the first sweep now uses `alpha1`).
77
+ * Triangles touching a NaN or infinite vertex are omitted, so the surface
78
+ * breaks into pieces around them.
77
79
  */
78
80
  static pointMatrixToMesh3D(vector: Vector<Vector<Vector<number>>>, color1?: number, alpha1?: number, color2?: number, alpha2?: number): Mesh[];
79
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Graph3DUtils.d.ts","sourceRoot":"","sources":["../src/Graph3DUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Graph3DUtils.d.ts","sourceRoot":"","sources":["../src/Graph3DUtils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  import { VectorUtils } from "./VectorUtils.js";
2
2
  const v3 = (x, y, z = 0) => ({ x, y, z });
3
3
  const asPoint = (p) => ({ x: p.x, y: p.y, z: p.z });
4
+ const isFinitePoint = (p) => Number.isFinite(p.x) && Number.isFinite(p.y) && Number.isFinite(p.z);
5
+ /** A triangle face, or `null` when any vertex is NaN / infinite (so the surface breaks there instead of drawing garbage). */
6
+ const finiteFace = (a, b, c) => {
7
+ const face = [asPoint(a), asPoint(b), asPoint(c)];
8
+ return face.every(isFinitePoint) ? face : null;
9
+ };
4
10
  export class Graph3DUtils {
5
11
  /** Sample `binaryOperation` over a 2D grid, returning a matrix of results. */
6
12
  static dualRangeVector(binaryOperation, xMin = -10, xMax = 10, xStep = 1, yMin = -10, yMax = 10, yStep = 1) {
@@ -118,6 +124,8 @@ export class Graph3DUtils {
118
124
  /**
119
125
  * Build a surface mesh from a grid (matrix) of points, as two triangle
120
126
  * sweeps with distinct materials (bug fix: the first sweep now uses `alpha1`).
127
+ * Triangles touching a NaN or infinite vertex are omitted, so the surface
128
+ * breaks into pieces around them.
121
129
  */
122
130
  static pointMatrixToMesh3D(vector, color1 = 0, alpha1 = 1, color2 = 0xffffff, alpha2 = 1) {
123
131
  const width = VectorUtils.width(vector);
@@ -127,11 +135,9 @@ export class Graph3DUtils {
127
135
  for (let i = 0; i < width - 1; i++) {
128
136
  for (let j = 0; j < height - 1; j++) {
129
137
  if (at(i, j) && vector[i + 1] && at(i, j + 1)) {
130
- faces1.push([
131
- asPoint(at(i, j)),
132
- asPoint(at(i + 1, j)),
133
- asPoint(at(i, j + 1)),
134
- ]);
138
+ const face = finiteFace(at(i, j), at(i + 1, j), at(i, j + 1));
139
+ if (face)
140
+ faces1.push(face);
135
141
  }
136
142
  }
137
143
  }
@@ -139,11 +145,9 @@ export class Graph3DUtils {
139
145
  for (let i = 1; i < width; i++) {
140
146
  for (let j = 1; j < height; j++) {
141
147
  if (at(i, j) && vector[i - 1] && at(i, j - 1)) {
142
- faces2.push([
143
- asPoint(at(i, j)),
144
- asPoint(at(i - 1, j)),
145
- asPoint(at(i, j - 1)),
146
- ]);
148
+ const face = finiteFace(at(i, j), at(i - 1, j), at(i, j - 1));
149
+ if (face)
150
+ faces2.push(face);
147
151
  }
148
152
  }
149
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Graph3DUtils.js","sourceRoot":"","sources":["../src/Graph3DUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Graph3DUtils.js","sourceRoot":"","sources":["../src/Graph3DUtils.ts"],"names":[],"mappings":"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AC,CAAC,CAAC,CAAC,CAAC;QAE3D,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,EA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"}
@@ -59,7 +59,10 @@ export declare class GraphUtils {
59
59
  static barPlacement(p: Vector<number>, barWidth?: number): BarPlacement2D;
60
60
  static placements(points: Vector<Vector<number>>, altProperties?: string[] | null): Array<Placement2D | Record<string, number>>;
61
61
  static barPlacements(points: Vector<Vector<number>>, barWidth?: number): BarPlacement2D[];
62
- /** A poly-line path through the given points. */
62
+ /**
63
+ * A poly-line path through the given points. Points with a non-finite x or y
64
+ * (NaN, +/-Infinity) are skipped and split the line into separate segments.
65
+ */
63
66
  static vectorToCurve(points: Vector<Vector<number>>, thickness?: number, color?: number, alpha?: number, pixelHinting?: boolean, scaleMode?: string, caps?: string | null, joints?: string | null, miterLimit?: number): Path2D;
64
67
  /** A filled, closed path tracing a polygon's edges. */
65
68
  static polygonToCurve(polygon: Polygon, strokeThickness?: number, strokeColor?: number, strokeAlpha?: number, fillColor?: number, fillAlpha?: number, pixelHinting?: boolean, scaleMode?: string, caps?: string | null, joints?: string | null, miterLimit?: number): Path2D;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphUtils.d.ts","sourceRoot":"","sources":["../src/GraphUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphUtils.d.ts","sourceRoot":"","sources":["../src/GraphUtils.ts"],"names":[],"mappings":"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"}
@@ -33,17 +33,25 @@ export class GraphUtils {
33
33
  static barPlacements(points, barWidth = 40) {
34
34
  return [...points].map((p) => GraphUtils.barPlacement(p, barWidth));
35
35
  }
36
- /** A poly-line path through the given points. */
36
+ /**
37
+ * A poly-line path through the given points. Points with a non-finite x or y
38
+ * (NaN, +/-Infinity) are skipped and split the line into separate segments.
39
+ */
37
40
  static vectorToCurve(points, thickness = 0, color = 0, alpha = 1, pixelHinting = false, scaleMode = "normal", caps = null, joints = null, miterLimit = 3) {
38
41
  const stroke = { thickness, color, alpha, pixelHinting, scaleMode, caps, joints, miterLimit };
39
42
  const commands = [];
40
- if (points.length > 0) {
41
- const first = point(points[0]);
42
- commands.push({ op: "moveTo", x: first.x, y: first.y });
43
- for (let i = 1; i < points.length; i++) {
44
- const pt = point(points[i]);
45
- commands.push({ op: "lineTo", x: pt.x, y: pt.y });
43
+ // A NaN or +/-Infinity coordinate (a pole, a domain error) breaks the path: the
44
+ // run before it ends, and the next finite point starts a new run with `moveTo`
45
+ // rather than a `lineTo` drawn through the gap.
46
+ let penDown = false;
47
+ for (let i = 0; i < points.length; i++) {
48
+ const pt = point(points[i]);
49
+ if (!Number.isFinite(pt.x) || !Number.isFinite(pt.y)) {
50
+ penDown = false;
51
+ continue;
46
52
  }
53
+ commands.push({ op: penDown ? "lineTo" : "moveTo", x: pt.x, y: pt.y });
54
+ penDown = true;
47
55
  }
48
56
  return { stroke, commands };
49
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GraphUtils.js","sourceRoot":"","sources":["../src/GraphUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphUtils.js","sourceRoot":"","sources":["../src/GraphUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shader code generation for `Expr` trees: GLSL ES 3.0 and WGSL.
3
+ *
4
+ * Output is deterministic (no timestamps, ids or hash ordering): the same tree
5
+ * and options always give the same strings, so callers can golden-test them
6
+ * and cache compiled programs by source text.
7
+ */
8
+ import type { Expr } from "./Symbolic.ts";
9
+ export type ShaderDialect = "glsl" | "wgsl";
10
+ export interface ShaderOptions {
11
+ /**
12
+ * `false` (default): every value is a scalar `float` / `f32`.
13
+ * `true`: every value is a complex number held in a `vec2` (x = real,
14
+ * y = imaginary); the variable `i` (unless listed in `variables`) is the
15
+ * imaginary unit and the helper functions the expression needs are emitted once.
16
+ */
17
+ complex?: boolean;
18
+ /**
19
+ * Free variables the expression may mention; they are emitted as identifiers of the
20
+ * same name and must be in scope where the expression is pasted. Default
21
+ * `["x"]` (real) or `["z"]` (complex). A variable not listed is an error.
22
+ */
23
+ variables?: string[];
24
+ /** When set, `source` is a complete function `name(<variables>)` wrapping the expression. */
25
+ functionName?: string;
26
+ }
27
+ export interface ShaderResult {
28
+ /** The expression text, e.g. `sin(x) * 2.0`. Paste it where a float (or vec2) is wanted. */
29
+ expression: string;
30
+ /** Helper function definitions the expression calls, in dependency order; empty when none are needed. */
31
+ helpers: string;
32
+ /** Complete source: `helpers` followed by the wrapping function when `functionName` was given, else `helpers` and nothing more. */
33
+ source: string;
34
+ /** The free variables actually used, sorted. */
35
+ variables: string[];
36
+ }
37
+ export declare class ShaderUnsupportedError extends Error {
38
+ constructor(message: string);
39
+ }
40
+ export declare function compileShader(expr: Expr, dialect: ShaderDialect, options?: ShaderOptions): ShaderResult;
41
+ //# sourceMappingURL=Shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shader.d.ts","sourceRoot":"","sources":["../src/Shader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB,yGAAyG;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,mIAAmI;IACnI,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AA0uBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CA6C3G"}