• Stars
    star
    181
  • Rank 204,625 (Top 5 %)
  • Language
    TeX
  • License
    Do What The F*ck ...
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

By a programmer for programmers

Least squares for programmers

with illustrations

This repository contains the course notes as well as the source code for the long course I gave at SIGGRAPH 2021.

You can find the full video of the course on youtube:

This course explains least squares optimization, nowadays a simple and well-mastered technology. We show how this simple method can solve a large number of problems that would be difficult to approach in any other way. This course provides a simple, understandable yet powerful tool that most coders can use, in the contrast with other algorithms sharing this paradigm (numerical simulation and deep learning) which are more complex to master.

Linear regression is often underestimated being considered only as a sub-domain of statistics / data analysis, but it is much more than that. We propose to discover how the same method (least squares) applies to the manipulation of geometric objects. This first step into the numerical optimization world can be done without strong applied mathematics background; while being simple, this step suffices for many applications, and is a good starting point for learning more advanced algorithms. We strive to communicate the underlying intuitions through numerous examples of classic problems, we show different choices of variables and the ways the energies are built. Over the last two decades, the geometry processing community have used it for computing 2D maps, deformations, geodesic paths, frame fields, etc. Our examples provide many examples of applications that can be directly solved by the least squares method. Note that linear regression is an efficient tool that has deep connections to other scientific domains; we show a few such links to broaden reader's horizons.

This course is intended for students/engineers/researchers who know how to program in the traditional way: by breaking down complex tasks into elementary operations that manipulate combinatorial structures (trees, graphs, meshes...). Here we present a different paradigm, in which we describe what a good result looks like, and let numerical optimization algorithms find it for us.

More Repositories

1

tinyrenderer

A brief computer graphics / rendering course
C++
19,058
star
2

tinyraytracer

A brief computer graphics / rendering course
C++
4,856
star
3

tinykaboom

A brief computer graphics / rendering course
C++
2,314
star
4

tinyraycaster

486 lines of C++: old-school FPS in a weekend
C++
1,840
star
5

triador

Ternary computer emulator
C++
220
star
6

glsltuto

GLSL shaders tutorial
C++
213
star
7

hellOGL

Yet another (but better) modern OpenGL hello world
C
81
star
8

tinycompiler

Writing a compiler in a week-end
Python
69
star
9

ultimaille

The ultimate mesh handling library
C
47
star
10

sdl2-demo

sdl2 platformer game blank repository
C++
45
star
11

tutorials

C++
42
star
12

penny

3 servos, 10 dollars hexapod
HTML
30
star
13

stlbfgs

C++ L-BFGS implementation using plain STL
C++
24
star
14

invertible-maps

C++
24
star
15

neato-xv11-lidar

Protocol description and linux implementation
C++
22
star
16

instantangle

2D mesh deformation interactive demo
C
20
star
17

tinyrenderer-java

Just a java implementation of https://github.com/ssloy/tinyrenderer/wiki
Java
15
star
18

QIS

Quasi-isometric stiffening C++ implementation
C++
9
star
19

quadruped

TRIK + dynamixel ax-12a
C++
7
star
20

harlequin

ZX spectrum 48k Harlequin Superfo clone
7
star
21

mathfun

C
6
star
22

winslow2d

Winslow elliptic smoothing for 2d unstructured triangular meshes
C++
6
star
23

ENSG

Support c++ code for lectures on numerical geology
Python
3
star
24

stroll

code example for bachelor programming class
C++
2
star
25

pentominos

L2 programmation avancée support
C++
1
star
26

ternary

triador hardware
C
1
star
27

NuPogodi

C++
1
star
28

ifs

iterated function systems small programs
C++
1
star
29

jfig2020

rendering contest entries
1
star