Giter Site home page Giter Site logo

geometry-processing's Introduction

Geometry Processing Course

Course material for a grad-level course in geometry processing.

Course designed by Prof. Alec Jacobson, University of Toronto, with assistance from Klint Qinami and Prof. Eitan Grinspun, Columbia University.

Prerequisites and dependencies

In general, the materials in this course assume that students should have already taken Linear Algebra and Calculus.

Students should have already taken Introduction to Computer Science and should be proficient in computer programming (in any language) and should feel comfortable programming in C++.

All course assignments are conducted in C++, however none rely on nitty gritty memory management or complicated object-oriented data-structures.

While knowledge of Partial Differential Equations is not required, it will certainly be very handy for derivations. Similarly, previous experience with Computer Graphics is not required but recommended.

All coding assignments make use of Eigen, an open-source linear algebra library; and libigl, an open-source geometry processing library. Each assigment is built using CMake.

Organization

The original run of this course structured weekly assignments in the following order:

  1. Introduction
  2. Mesh Reconstruction
  3. Surface Registration
  4. Smoothing
  5. Parameterization
  6. Deformation
  7. Curvature

Besides the introduction, there is no strict ordering to these topics.

Each topic has its own git repository. Inside each, there is a README.md file contains background information necessary for understanding the topic's coding assignment.

The Introduction README.md contains detailed information about compilation, file layout and assignment protocols.

Wikipedia

The background materials link heavily to Wikipedia articles. Sometimes the wikipedia articles relating to geomtry processing are less informative than they could be. Edit them!

In university offerings of this course, 5% credit has been awarded to the entire class for collaboratively improving Wikipedia's entries on geometry processing topics.

Are you an instructor?

There are instructor repositories for all of the assignments above. If you're an instructor for a geometry processing course, send an email to [email protected] for an invitation.

Homework Submission via GitHub Pull Requests

When used for a formal course, it is intended that students fork each assignments repository, commit their solutions to their own forks, and then submit their assignment via pull request to the public repo of the assignment.

More details on this structure are found on Alec's weblog.

Honor System

Since pull requests are public, students will be able to see each other's completed solutions as soon as their posted. Students will not cheat because they are honorable ๐Ÿ‘. Actually, since most of the assignments are standard algorithms there are many implmentations online already. In particular, libigl contains ready-made implementations using Eigen with similar function APIs. Why cheat from other students when you can cheat from the professor? But, really, why cheat?

geometry-processing's People

Contributors

alecjacobson avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.