Revision as of 08:34, 28 March 2009 by Homovulgaris (talk | contribs) (Structure)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Design icon.png This page contains the design document for an enhancement or feature. The design should be considered a work in progress and may not represent the final design. As this is a collaborative design, contributions and participation from other developers and users is encouraged. Use the discussion page for providing comments and suggestions.

libpc: Introduction


The objectives encompassed by libpc are the following

  • Front-end
  1. An Abstraction of Parameters over the present components of primitives
  2. Representation of complex (see examples) constraints between Parameters
  3. Framework for selection of Design/Alternative Configurations
  • Back-end
  1. Fast Geometric Constraint Solution


  1. Reduction of Modeling time in case of Iterative designs
  2. Logic of Design represented in the geometry file itself
  3. Capability for complex geometry generation

Constraint Satisfaction Process

Possible Approaches in BRL-CAD


libpc is composed of the following modules

  1. Reprsentation of Parameters and Constraints in Storage
  2. Representation of Parameters in Memory
  3. Representation of Constraints in Memory / DataStructure
    1. Associated MathGrammar and MathVM
  4. Generation of 2 and 3 from 1
  5. Solution System
    1. Constraint Network Generation from 4
    2. Constraint Satisfaction
  6. Parameter and Geometry updation

Overall Hierarchy

Libpc Hierarchy

Object Hierarchy

Use-case Scenarios