# Geometry for Programmers Reading Index
## Metadata
**Status**:: #x
**Kind**:: #reading-index
**Zettel**:: #zettel/fleeting
**Created**:: [[2024-03-15]]
**Topic**:: [[♯ Graphics Programming]]
**Highlights**:: [[Oleksandr Kaleniuk - Geometry for Programmers (Highlights)]]
## Terminology
- Line, Point, Vector, Vertex, Triangle, Matrix
- Degenerate triangles
- Functions
- Geometry Transformation
- Vector Field
- Scalar Field (see also [[#Signed Distance Function & Surrogates]])
- Algebra and Isomorphic
- (**supports**:: [[RareSkills Authors - Elementary Group Theory for Programmers (Highlights)#^692141487]])
## Transformations
- Gaussian elimination & LU-decomposition
- Homogeneous coordinates
- Extend one extra dimension as the common denominator.
- Denominator indicates an infinity point.
- Cofactor matrix and inverse matrix.
## Calculus
- Derivative
- `diff` in `sympy`
- Curvature
- Practice: biarc curve
## Polynomial Approximation
- Polynomial approximation
- Least squares method
- [Polynomial Regression](https://visualize-it.github.io/polynomial_regression/simulation.html)
- Maclaurin series
- Approximate a function by computing derivatives at 0
- $\displaystyle y = \frac{y'''(0)}{3!}x^3+\frac{y''(0)}{2!}x^2+\frac{y'(0)}{1!}x+y(0)$
- Taylor series, derivatives not at 0
- SymPy: `series(E**x, x, x0 = 0, n = 6)`
- Vandermonde system
- Lagrange interpolation
- $L(x) = \sum{y_ig_i(x)}$
- where $g_i(x) = 1$ when $x = x_i$, and = 0 when $x = x_j$ where $j \neq i$.
- so $\displaystyle g_i(x) = \prod_{j=1,j \neq i}^N\frac{x - x_j}{x_i - x_j}$
## Spines
Functions split into sections, each section is a simple function.
- Bézier
- NURBS
## Nonlinear Transformations
## Vector Algebra
## Signed Distance Function & Surrogates
## Boundary Representations & Triangle Meshes
- [x] Exercise: Smooth contouring
## Image & Voxels
## Actions
- Summarize sympy tutorials