# modeling/geometries/geom2

Represents a 2D geometry consisting of a list of sides.

Source:
See:
• geom2 for data structure information.

### Methods

#### (static) clone(geometry) → {geom2}

Source:

Performs a deep clone of the given geometry.

##### Parameters:
Name Type Description
`geometry` geom2

the geometry to clone

new geometry

Type
geom2

#### (static) create(sidesopt) → {geom2}

Source:

Create a new 2D geometry composed of unordered sides (two connected points).

##### Parameters:
Name Type Attributes Description
`sides` Array <optional>

list of sides where each side is an array of two points

a new geometry

Type
geom2

#### (static) fromCompactBinary(data) → {geom2}

Source:

Create a new 2D geometry from the given compact binary data.

##### Parameters:
Name Type Description
`data` Array

compact binary data

a new geometry

Type
geom2

#### (static) fromPoints(points) → {geom2}

Source:

Create a new 2D geometry from the given points. The direction (rotation) of the points is not relevant, as the points can define a convex or a concave polygon. The geometry must not self intersect, i.e. the sides cannot cross.

##### Parameters:
Name Type Description
`points` Array

list of points in 2D space

a new geometry

Type
geom2

#### (static) isA(object) → {Boolean}

Source:

Determin if the given object is a 2D geometry.

##### Parameters:
Name Type Description
`object` Object

the object to interogate

##### Returns:

true, if the object matches a geom2 based object

Type
Boolean

#### (static) reverse(geometry) → {geom2}

Source:

Reverses the given geometry so that the sides are flipped in the opposite order. This swaps the left (interior) and right (exterior) edges.

##### Example
``let newgeometry = reverse(geometry)``
##### Parameters:
Name Type Description
`geometry` geom2

the geometry to reverse

##### Returns:

the new reversed geometry

Type
geom2

#### (static) toCompactBinary(geometry) → {TypedArray}

Source:

Produces a compact binary representation from the given geometry.

##### Parameters:
Name Type Description
`geometry` geom2

the geometry

##### Returns:

compact binary representation

Type
TypedArray

#### (static) toOutlines(geometry) → {Array}

Source:

Create the outline(s) of the given geometry.

##### Example
``````let geometry = subtract(rectangle({size: [5, 5]}), rectangle({size: [3, 3]}))
let outlines = toOutlines(geometry) // returns two outlines``````
##### Parameters:
Name Type Description
`geometry` geom2
##### Returns:

an array of outlines, where each outline is an array of ordered points

Type
Array

#### (static) toPoints(geometry) → {Array}

Source:

Produces an array of points from the given geometry. The returned array should not be modified as the points are shared with the geometry. NOTE: The points returned do NOT define an order. Use toOutlines() for ordered points.

##### Example
``let sharedpoints = toPoints(geometry)``
##### Parameters:
Name Type Description
`geometry` geom2

the geometry

##### Returns:

an array of points

Type
Array

#### (static) toSides(geometry) → {Array}

Source:

Produces an array of sides from the given geometry. The returned array should not be modified as the data is shared with the geometry. NOTE: The sides returned do NOT define an order. Use toOutlines() for ordered points.

##### Example
``let sharedsides = toSides(geometry)``
##### Parameters:
Name Type Description
`geometry` geom2

the geometry

##### Returns:

an array of sides

Type
Array

#### (static) toString(geometry) → {String}

Source:

Create a string representing the contents of the given geometry.

##### Example
``console.out(toString(geometry))``
##### Parameters:
Name Type Description
`geometry` geom2

the geometry

##### Returns:

a representive string

Type
String

#### (static) transform(matrix, geometry) → {geom2}

Source:

Transform the given geometry using the given matrix. This is a lazy transform of the sides, as this function only adjusts the transforms. The transforms are applied when accessing the sides via toSides().

##### Example
``let newgeometry = transform(fromZRotation(degToRad(90)), geometry)``
##### Parameters:
Name Type Description
`matrix` mat4

the matrix to transform with

`geometry` geom2

the geometry to transform

a new geometry

Type
geom2