Skip to content

Commit db38de0

Browse files
committed
docs(modeling): adjusted docs to use imports, added more examples
1 parent 7f89de1 commit db38de0

110 files changed

Lines changed: 577 additions & 299 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/modeling/src/geometries/geom2/applyTransforms.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import * as vec2 from '../../maths/vec2/index.js'
33

44
/*
55
* Apply the transforms of the given geometry.
6+
*
67
* NOTE: This function must be called BEFORE exposing any data. See toOutlines().
8+
*
79
* @param {Geom2} geometry - the geometry to transform
810
* @returns {Geom2} the given geometry
911
*
1012
* @example
11-
* geometry = applyTransforms(geometry)
13+
* const geometry = geom2.applyTransforms(geometry)
1214
*/
1315
export const applyTransforms = (geometry) => {
1416
if (mat4.isIdentity(geometry.transforms)) return geometry
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
/**
22
* Performs a shallow clone of the given geometry.
3+
*
34
* @param {Geom2} geometry - the geometry to clone
45
* @returns {Geom2} new geometry
5-
* @alias module:modeling/geometries/geom2.clone
6+
* @alias module:modeling/geom2.clone
7+
*
8+
* @example
9+
* const geometry = geom2.clone(geometry)
610
*/
711
export const clone = (geometry) => Object.assign({}, geometry)

packages/modeling/src/geometries/geom2/create.js

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
import * as mat4 from '../../maths/mat4/index.js'
22

3-
/**
4-
* Represents a 2D geometry consisting of outlines, where each outline is an ordered list of points.
5-
* @property {Array} outlines - list of polygon outlines
6-
* @property {Mat4} transforms - transforms to apply to the geometry, see transform()
7-
* @example
8-
* // data structure
9-
* {
10-
* "outlines": [[[-1,-1],[1,-1],[1,1],[-1,1]]],
11-
* "transforms": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]
12-
* }
13-
*/
14-
153
/**
164
* Create a new 2D geometry composed of polygon outlines.
5+
*
176
* @param {Array} [outlines] - list of outlines where each outline is an array of points
187
* @returns {Geom2} a new geometry
19-
* @alias module:modeling/geometries/geom2.create
8+
* @alias module:modeling/geom2.create
9+
*
2010
* @example
21-
* let myShape = create([ [[-1,-1], [1,-1], [1,1], [-1,1]] ])
11+
* let myShape = geom2.create([ [[-1,-1], [1,-1], [1,1], [-1,1]] ])
2212
*/
2313
export const create = (outlines = []) => ({
2414
outlines,

packages/modeling/src/geometries/geom2/fromSides.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const toSharedPoints = (sides) => {
2626
*/
2727
const toPointMap = (sides) => {
2828
const pointMap = new Map()
29-
// first map to edges with shared vertices
29+
// first map to edges with shared points
3030
const edges = toSharedPoints(sides)
3131
// construct adjacent edges map
3232
edges.forEach((edge) => {
@@ -41,11 +41,13 @@ const toPointMap = (sides) => {
4141

4242
/**
4343
* Create a new 2D geometry from a list of sides.
44+
*
4445
* @param {Array} sides - list of sides to create outlines from
4546
* @returns {Geom2} a new geometry
47+
* @alias module:modeling/geom2.fromSides
4648
*
4749
* @example
48-
* let geometry = fromSides([[[0, 0], [1, 0]], [[1, 0], [1, 1]], [[1, 1], [0, 0]]])
50+
* let geometry = geom2.fromSides([[[0, 0], [1, 0]], [[1, 0], [1, 1]], [[1, 1], [0, 0]]])
4951
*/
5052
export const fromSides = (sides) => {
5153
const pointMap = toPointMap(sides) // {point: [edges]}

packages/modeling/src/geometries/geom2/index.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,28 @@
11
/**
22
* Represents a 2D geometry consisting of outlines, where each outline is an ordered list of points.
3-
* The outline is always closed between the first and last points.
4-
* @see {@link geom2} for data structure information.
5-
* @module modeling/geometries/geom2
3+
*
4+
* Each outline is always closed between the first and last points.
5+
*
6+
* @see {@link Geom2} for data structure information.
7+
* @module modeling/geom2
8+
*
9+
* @example
10+
* import { geom2 } from '@jscad/modeling'
11+
* let myShape = geom2.create([ [[-1,-1], [1,-1], [1,1], [-1,1]] ])
12+
*/
13+
14+
/**
15+
* @typedef Geom2
16+
* @type {Object}
17+
* @property {Array} outlines - list of outlines, each outline is an ordered list of points
18+
* @property {Mat4} transforms - transforms to apply to the polygons, see transform()
619
*
720
* @example
8-
* import { geometries } from '@jscad/modeling'
9-
* let myShape = geometries.geom2.create([ [[-1,-1], [1,-1], [1,1], [-1,1]] ])
21+
* // data structure
22+
* {
23+
* "outlines": [[[-1,-1],[1,-1],[1,1],[-1,1]]],
24+
* "transforms": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]
25+
* }
1026
*/
1127
export { clone } from './clone.js'
1228
export { create } from './create.js'

packages/modeling/src/geometries/geom2/isA.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
/**
22
* Determine if the given object is a 2D geometry.
3+
*
34
* @param {object} object - the object to interrogate
45
* @returns {Boolean} true, if the object matches a geom2 based object
5-
* @alias module:modeling/geometries/geom2.isA
6+
* @alias module:modeling/geom2.isA
7+
*
8+
* @example
9+
* const geometry = geom2.isA(geometry)
610
*/
711
export const isA = (object) => {
812
if (object && typeof object === 'object') {

packages/modeling/src/geometries/geom2/reverse.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import { toOutlines } from './toOutlines.js'
33

44
/**
55
* Reverses the given geometry so that the outline points are flipped in the opposite order.
6+
*
67
* This swaps the left (interior) and right (exterior) edges.
8+
*
79
* @param {Geom2} geometry - the geometry to reverse
810
* @returns {Geom2} the new reversed geometry
9-
* @alias module:modeling/geometries/geom2.reverse
11+
* @alias module:modeling/geom2.reverse
1012
*
1113
* @example
12-
* let newGeometry = reverse(geometry)
14+
* let newGeometry = geom2.reverse(geometry)
1315
*/
1416
export const reverse = (geometry) => {
1517
const outlines = toOutlines(geometry)

packages/modeling/src/geometries/geom2/toOutlines.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import { applyTransforms } from './applyTransforms.js'
22

33
/**
44
* Create the outline(s) of the given geometry.
5+
*
56
* @param {Geom2} geometry - geometry to create outlines from
67
* @returns {Array} an array of outlines, where each outline is an array of ordered points
7-
* @alias module:modeling/geometries/geom2.toOutlines
8+
* @alias module:modeling/geom2.toOutlines
89
*
910
* @example
1011
* let geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))

packages/modeling/src/geometries/geom2/toPoints.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ import { toOutlines } from './toOutlines.js'
22

33
/**
44
* Produces an array of points from the given geometry.
5+
*
56
* The returned array should not be modified as the points are shared with the geometry.
7+
*
68
* NOTE: The points returned do NOT define an order. Use toOutlines() for ordered points.
9+
*
710
* @param {Geom2} geometry - the geometry
811
* @returns {Array} an array of points
9-
* @alias module:modeling/geometries/geom2.toPoints
12+
* @alias module:modeling/geom2.toPoints
1013
*
1114
* @example
12-
* let sharedPoints = toPoints(geometry)
15+
* let sharedPoints = geom2.toPoints(geometry)
1316
*/
1417
export const toPoints = (geometry) => {
1518
const points = []

packages/modeling/src/geometries/geom2/toSides.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import { toOutlines } from './toOutlines.js'
22

33
/**
44
* Produces an array of sides from the given geometry.
5-
* The returned array should not be modified as the data is shared with the geometry.
5+
*
66
* NOTE: The sides returned do NOT define an order. Use toOutlines() for ordered points.
7+
*
78
* @param {Geom2} geometry - the geometry
89
* @returns {Array} an array of sides
9-
* @alias module:modeling/geometries/geom2.toSides
10+
* @alias module:modeling/geom2.toSides
1011
*
1112
* @example
12-
* let sharedSides = toSides(geometry)
13+
* let sharedSides = geom2.toSides(geometry)
1314
*/
1415
export const toSides = (geometry) => {
1516
const sides = []

0 commit comments

Comments
 (0)