Revision 8cc3dfbb107668181a34abe2a7b89b57ddd2b36a (click the page title to view the current version)

3D Objects in Python

Changes from 8cc3dfbb107668181a34abe2a7b89b57ddd2b36a to dcfc57322ed41d76906acd23d619d88c6b28a0cb

---
title: Session.  3D Objects in Python
categories: session
---

# Learning Objectives

**Key learning outcome**
Improve the understanding of the mathematical descriptions of
3D Motion, by testing implementations in Python.

**Secondary outcomes**
if you have time, it is worth browsing different libraries and frameworks
to build, visualise, and animate scenes using 3D objects.

# Briefing

## Recap: a simple object

Remember, last week we worked with this data structure in Python:

```
In [1]: print(vertices)
[[-1.   0.5  0.5]
 [ 1.   0.5  0.5]
 [ 0.  -0.5  0.5]
 [-1.   0.5  0.5]
 [ 1.   0.5  0.5]
 [ 0.   0.5 -0.5]
 [-1.   0.5  0.5]
 [ 0.  -0.5  0.5]
 [ 0.   0.5 -0.5]
 [ 1.   0.5  0.5]
 [ 0.  -0.5  0.5]
 [ 0.   0.5 -0.5]]
```

The rows are points in 3D. Note that there are only four distinct points.
If we divide the matrix into sets of three rows, each triplet defines a
triangle.  These four triangles form the faces of an irregular tetrahedron.

This is a standard way to define a 3D object.  More complex objects need more
triangles.

Note that the textbook have vertices as *column* vectors, while
we here use row vectors.  This means that we need to transpose
matrices when we translate textbook formulæ to python formulæ.

## STL files and the STL library

# Exercise

## Rotations and translations

## Homogenous Coordinates 

Motion defined by homogenous matrix    

## STL files and the STL library

+ Load Model 
+ View Model
+ Change Model
+ Save Model

# Additional Materials

+ [Other relevant python libraries](Python3D)