# `woo.gts`¶

A package for constructing and manipulating triangulated surfaces.

PyGTS is a python binding for the GNU Triangulated Surface (GTS) Library, which may be used to build, manipulate, and perform computations on triangulated surfaces.

The following geometric primitives are provided:

• Point - a point in 3D space

• Vertex - a Point in 3D space that may be used to define a Segment

• Segment - a line defined by two Vertex end-points

• Edge - a Segment that may be used to define the edge of a Triangle

• Triangle - a triangle defined by three Edges

• Face - a Triangle that may be used to define a face on a Surface

• Surface - a surface composed of Faces

A tetrahedron is assembled from these primitives as follows. First, create Vertices for each of the tetrahedron’s points:

```import gts

v1 = gts.Vertex(1,1,1)
v2 = gts.Vertex(-1,-1,1)
v3 = gts.Vertex(-1,1,-1)
v4 = gts.Vertex(1,-1,-1)
```

Next, connect the four vertices to create six unique Edges:

```e1 = gts.Edge(v1,v2)
e2 = gts.Edge(v2,v3)
e3 = gts.Edge(v3,v1)
e4 = gts.Edge(v1,v4)
e5 = gts.Edge(v4,v2)
e6 = gts.Edge(v4,v3)
```

The four triangular faces are composed using three edges each:

```f1 = gts.Face(e1,e2,e3)
f2 = gts.Face(e1,e4,e5)
f3 = gts.Face(e2,e5,e6)
f4 = gts.Face(e3,e4,e6)
```

Finally, the surface is assembled from the faces:

```s = gts.Surface()
for face in [f1,f2,f3,f4]:
```

Some care must be taken in the orientation of the faces. In the above example, the surface normals are pointing inward, and so the surface technically defines a void, rather than a solid. To create a tetrahedron with surface normals pointing outward, use the following instead:

```f1.revert()
s = Surface()
for face in [f1,f2,f3,f4]:
if not face.is_compatible(s):
face.revert()
```

Once the Surface is constructed, there are many different operations that can be performed. For example, the volume can be calculated using:

```s.volume()
```

The difference between two Surfaces s1 and s2 is given by:

```s3 = s2.difference(s1)
```

Etc.

It is also possible to read in GTS data files and plot surfaces to the screen. See the example programs packaged with PyGTS for more information.

## `woo.gts.pygts`¶

`woo.gts.pygts.``cube`()[source]

Returns a cube of side length 2 centered at the origin.

`woo.gts.pygts.``get_coords_and_face_indices`(s, unzip=False)[source]

Returns the coordinates and face indices of Surface s.

If unzip is True then four tuples are returned. The first three are the x, y, and z coordinates for each Vertex on the Surface. The last is a list of tuples, one for each Face on the Surface, containing 3 indices linking the Face Vertices to the coordinate lists.

If unzip is False then the coordinates are given in a single list of 3-tuples.

`woo.gts.pygts.``tetrahedron`()[source]

Returns a tetrahedron of side length 2*sqrt(2) centered at origin.

The edges of the tetrahedron are perpendicular to the cardinal directions.

Tip

Report issues or inclarities to github.