GitXplorerGitXplorer
e

ImplicitSystem

public
0 stars
1 forks
0 issues

Commits

List of commits on branch master.
Unverified
b6f4b6fd6dd0aeabd11b5e843e24e7702e923ee4

Merge branch 'master' of github.com:etcwilde/ImplicitSystem

committed 9 years ago
Unverified
4f395e238ba36e50442bbfb267bf0f13ec83d77f

Placing relative paths in doxyfile

committed 9 years ago
Unverified
257fbab81a78975c50187834c5030d6a8fe94a88

Hotfix: Removed buggy difference operation

committed 9 years ago
Unverified
935348d9fd30fb20a2d84a0a61e9a34b8a221ff9

Bug fix: Doxyfile will work when directory structure is moved

committed 9 years ago
Unverified
76b3a39186ae79d48f9878f05c6b62baeafeb4bd

Merge branch 'master' of github.com:etcwilde/ImplicitSystem

committed 9 years ago
Unverified
7d1c6c6db427277ce95795e6d304fb8ad71b6aa1

Release 0.2.1 : Major and Minor axis for AABB

committed 9 years ago

README

The README file for this repository.

ImplicitSystem

Implementing the blob tree

Evan Wilde | 2015

History of the Blob Tree

Blobs are a form of implicit surface defined by a point a filter field falloff function, and an iso to define where the surface exists. A "well behaved" field function will have a value of 1 at radius 0, and at some max radius, will have a value of 0.

Jim Blinn origianlly used Blobs, or "Blobby Molecules" to model electron density fields.

Since then they have evolved to handle other more complex geometries, including the concept of skeletal shapes, which allow the definition of the blob to come from the definition of a skeleton. This is useful for creating more primitive objects, such as a line or a torus.

Features

  • Axis-aligned Bounding Box Bounding Volume Hierarchies
  • Multiple Primitive types
    • Sphere
    • Torus
    • Line
  • Multiple Field Falloff Functions
    • Linear Function
    • Geoff Function (Soft Objects)
    • Metaball Function
  • Four operations
    • Blend
    • Difference
    • Intersect
    • Union
  • Three transformations
    • Translate
    • Rotate
    • Scale
  • Curvature Calculations
  • Normal Calculations

Building The Blob Tree

Requirements

  • make
  • g++
  • glm
  • doxygen
  • cppunit (optional, for unit testing purposes)

Compiling

As a library

make library

It will result in a directory release/ containing libImplicit.a, html/, and inc/.
libImplicit.a is the static library to link to.
inc/ contains the header files.
html/ contains the html documentation.

For Developers

The makefile contains multiple ways of compiling the library for testing. When compiling as a library, it will not compile main.cpp, which allows you to implement tests without having them show up in the library itself.

For debugging

make debug will compile the program for debugging purposes with flags -Wall, -g, and -DDEBUG set

For unit testing

make test will compile tests in test/ as well as setting flags -Wall, -DTEST. It will link again cppunit and dl

For Testing

make release will compile with optimization flag -O3 set

To Generate documentaiton

make docs will create a directory docs/html/ containing the documentation for the implicit system.

Structure

  • The master branch is for working, apparently stable, code.
  • The dev branch is for ideas being developed. This code will probably work.
  • Assume all branches off of dev to be experimental and don't work.

Naming Scheme

We will begin using the standard version scheme of major.minor.bug

  • major number will be updated any time
  • minor number will be incremented any time there is a public api-breaking change
  • bug number will be incremented with immediate bug fixes

The bug number will most likely remain zero, as most development will occur in the dev branch. Changes to the dev branch will not be counted toward the bug number, and will only be incremented if an immediate bug needs to be attended to directly in the master branch.