• Stars
    star
    189
  • Rank 204,649 (Top 5 %)
  • Language
    TeX
  • License
    Do What The F*ck ...
  • Created almost 5 years ago
  • Updated 11 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++
20,126
star
2

tinyraytracer

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

tinykaboom

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

tinyraycaster

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

triador

Ternary computer emulator
C++
227
star
6

glsltuto

GLSL shaders tutorial
C++
217
star
7

tinycompiler

Writing a compiler in a week-end
Python
96
star
8

hellOGL

Yet another (but better) modern OpenGL hello world
C
82
star
9

sdl2-demo

sdl2 platformer game blank repository
C++
48
star
10

ultimaille

The ultimate mesh handling library
C
47
star
11

tutorials

C++
44
star
12

penny

3 servos, 10 dollars hexapod
HTML
31
star
13

invertible-maps

C++
25
star
14

stlbfgs

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

neato-xv11-lidar

Protocol description and linux implementation
C++
23
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
14
star
18

fast-and-tiny

A very basic raytracer in python
Python
10
star
19

QIS

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

quadruped

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

harlequin

ZX spectrum 48k Harlequin Superfo clone
7
star
22

mathfun

C
6
star
23

winslow2d

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

ENSG

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

stroll

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

pentominos

L2 programmation avancรฉe support
C++
1
star
27

ternary

triador hardware
C
1
star
28

NuPogodi

C++
1
star
29

ifs

iterated function systems small programs
C++
1
star
30

jfig2020

rendering contest entries
1
star