Skip to content

TobiasJacob/geop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Geop: Geometric Operations CAD Kernel

A modern CAD kernel using Riemannian Manifolds

Geop is a modern CAD Kernel. It uses Riemannian Manifolds to be numerically stable and accurate. It is designed to be fast and efficient. It is designed to be used in a variety of applications, including CAD, CAM, and CAE.

Documentation: Modern Brep Kernel Book

Shell

  • Testing and documenting as a book: CAD Kernels are hard to debug and to explain, as the algorithms become very theoretical. This is what the Modern Brep Kernel Book is for. The graphics do not only serve as a visual representation of the algorithms, but also as a way to test them. The book is written in markdown and is meant to be an introduction for new developers and users.
  • 💬 Accurate results: Makes use of Rusts expressive type system to ensure correctness. For example, the intersection result of two lines is
    pub enum LineLineIntersection {
        Line(Line),
        Point(Point),
        None,
    }
    
    pub fn line_line_intersection(a: &Line, b: &Line) -> LineLineIntersection;
  • 🪨 Solid mathematical foundation: We use Riemannian Manifolds to ensure numerical stability and accuracy.
  • ❤️ Simplicity is key: We avoid the half edge datastructure. Topological structures are contained by simple structs. We also avoid the use of abstract data types, instead curves and surfaces are represented as enum. This makes the code easier to understand and to use. Last but not least, we make sure to never expose the parameters of the geometric objects, but always work with reference points in 3D.
  • 💯 Code coverage: We aim for 100% code coverage.

Geop-Geometry

  1. Point: A simple point in 3D space.
  2. Curves: 1D objects
    1. Line: An infinite line.
    2. Circle: A circle in 3D space.
  3. Surfaces: 2D objects
    1. Plane: An infinite plane.
    2. Sphere: A sphere in 3D space.
    3. Cylinder (WIP): A cylinder in 3D space.

This crate also defines all intersections between any two combination of these objects.

Geodesics LogExp

Geop-Topology

  1. Edge: A curve bounded by two optional points.
  2. Contour: A connected set of edges.
  3. Face: A surface optionally bounded by a contour and with a set of holes.
  4. Shell: A set of faces that close up a defined area in space.
  5. Volume: A area in space bounded by a shell, with optional holes bounded by a shell.

This crate also defines the contains operation, and has functions to create simple primitives.

Topolog

Geop-Boolean

A crate that defines the boolean operations (intersection, union, difference) between two volumes or faces.

Boolean

Geop-Rasterize

This is used to convert the topological structures into triangles.

Rasterize

Geop-Wgpu

A crate that uses wgpu to render the topological structures.

Modern-Brep-Kernel-Book

A crate used to render the graphics for the book, and contains the book.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages