@math.gl/geometry 5.0.0-alpha.11 → 5.0.0-alpha.13

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.
Files changed (60) hide show
  1. package/LICENSE +7 -0
  2. package/dist/geometries/box-geometry.js +1 -1
  3. package/dist/geometries/box-geometry.js.map +1 -1
  4. package/dist/geometries/capsule-geometry.js +1 -1
  5. package/dist/geometries/capsule-geometry.js.map +1 -1
  6. package/dist/geometries/cylinder-geometry.js +1 -1
  7. package/dist/geometries/cylinder-geometry.js.map +1 -1
  8. package/dist/geometries/geometry-helpers.js +1 -1
  9. package/dist/geometries/geometry-helpers.js.map +1 -1
  10. package/dist/geometries/ico-sphere-geometry.js +1 -1
  11. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  12. package/dist/geometries/plane-geometry.js +1 -1
  13. package/dist/geometries/plane-geometry.js.map +1 -1
  14. package/dist/geometries/sphere-geometry.js +1 -1
  15. package/dist/geometries/sphere-geometry.js.map +1 -1
  16. package/dist/geometries/surface-of-revolution.js +1 -1
  17. package/dist/geometries/surface-of-revolution.js.map +1 -1
  18. package/dist/geometries/truncated-cone-geometry.js +1 -1
  19. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/geometry-utils.js +1 -1
  23. package/dist/lib/geometry-utils.js.map +1 -1
  24. package/dist/lib/geometry.js +1 -1
  25. package/dist/lib/geometry.js.map +1 -1
  26. package/dist/parametric/lathe-geometry.d.ts +14 -0
  27. package/dist/parametric/lathe-geometry.d.ts.map +1 -0
  28. package/dist/parametric/lathe-geometry.js +48 -0
  29. package/dist/parametric/lathe-geometry.js.map +1 -0
  30. package/dist/parametric/parametric-geometry.d.ts +20 -0
  31. package/dist/parametric/parametric-geometry.d.ts.map +1 -0
  32. package/dist/parametric/parametric-geometry.js +88 -0
  33. package/dist/parametric/parametric-geometry.js.map +1 -0
  34. package/dist/parametric/torus-geometry.d.ts +15 -0
  35. package/dist/parametric/torus-geometry.d.ts.map +1 -0
  36. package/dist/parametric/torus-geometry.js +36 -0
  37. package/dist/parametric/torus-geometry.js.map +1 -0
  38. package/dist/parametric.cjs +276 -0
  39. package/dist/parametric.cjs.map +6 -0
  40. package/dist/parametric.d.ts +7 -0
  41. package/dist/parametric.d.ts.map +1 -0
  42. package/dist/parametric.js +7 -0
  43. package/dist/parametric.js.map +1 -0
  44. package/package.json +8 -3
  45. package/src/geometries/box-geometry.ts +1 -1
  46. package/src/geometries/capsule-geometry.ts +1 -1
  47. package/src/geometries/cylinder-geometry.ts +1 -1
  48. package/src/geometries/geometry-helpers.ts +1 -1
  49. package/src/geometries/ico-sphere-geometry.ts +1 -1
  50. package/src/geometries/plane-geometry.ts +1 -1
  51. package/src/geometries/sphere-geometry.ts +1 -1
  52. package/src/geometries/surface-of-revolution.ts +1 -1
  53. package/src/geometries/truncated-cone-geometry.ts +1 -1
  54. package/src/index.ts +1 -1
  55. package/src/lib/geometry-utils.ts +1 -1
  56. package/src/lib/geometry.ts +1 -1
  57. package/src/parametric/lathe-geometry.ts +70 -0
  58. package/src/parametric/parametric-geometry.ts +118 -0
  59. package/src/parametric/torus-geometry.ts +51 -0
  60. package/src/parametric.ts +9 -0
@@ -0,0 +1,51 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ import {assertPositive, type PrimitiveGeometryProps} from '../geometries/geometry-helpers';
5
+ import {ParametricGeometry} from './parametric-geometry';
6
+ export type TorusGeometryProps = PrimitiveGeometryProps & {
7
+ majorRadius?: number;
8
+ minorRadius?: number;
9
+ majorSegments?: number;
10
+ minorSegments?: number;
11
+ /** Sweep in radians, (0, 2π]. Partial sweeps have open ends. */
12
+ arc?: number;
13
+ };
14
+ /** Ring torus around Y, with outward analytic normals and separate UV seam rows. */
15
+ export class TorusGeometry extends ParametricGeometry {
16
+ constructor(props: TorusGeometryProps = {}) {
17
+ const {
18
+ majorRadius = 1,
19
+ minorRadius = 0.3,
20
+ majorSegments = 48,
21
+ minorSegments = 24,
22
+ arc = Math.PI * 2
23
+ } = props;
24
+ assertPositive(majorRadius, 'majorRadius');
25
+ assertPositive(minorRadius, 'minorRadius');
26
+ if (minorRadius >= majorRadius)
27
+ throw new RangeError('Ring torus requires minorRadius < majorRadius');
28
+ if (!Number.isFinite(arc) || arc <= 0 || arc > Math.PI * 2)
29
+ throw new RangeError('arc must be in (0, 2π]');
30
+ if (majorSegments < 3 || minorSegments < 3)
31
+ throw new RangeError('Torus requires at least three segments per axis');
32
+ super({
33
+ ...props,
34
+ uSegments: majorSegments,
35
+ vSegments: minorSegments,
36
+ periodicU: arc === Math.PI * 2,
37
+ periodicV: true,
38
+ sample: (u, v) => {
39
+ const theta = u * arc,
40
+ phi = v * Math.PI * 2,
41
+ radius = majorRadius + minorRadius * Math.cos(phi);
42
+ return [radius * Math.cos(theta), minorRadius * Math.sin(phi), -radius * Math.sin(theta)];
43
+ },
44
+ normal: (u, v) => [
45
+ Math.cos(v * Math.PI * 2) * Math.cos(u * arc),
46
+ Math.sin(v * Math.PI * 2),
47
+ -Math.cos(v * Math.PI * 2) * Math.sin(u * arc)
48
+ ]
49
+ });
50
+ }
51
+ }
@@ -0,0 +1,9 @@
1
+ // math.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
4
+ export {ParametricGeometry} from './parametric/parametric-geometry';
5
+ export type {ParametricGeometryProps, SurfaceSampler} from './parametric/parametric-geometry';
6
+ export {TorusGeometry} from './parametric/torus-geometry';
7
+ export type {TorusGeometryProps} from './parametric/torus-geometry';
8
+ export {LatheGeometry} from './parametric/lathe-geometry';
9
+ export type {LatheGeometryProps} from './parametric/lathe-geometry';