Libpc

From BRL-CAD
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[edit]

Objectives[edit]

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

Advantages[edit]

  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[edit]

Possible Approaches in BRL-CAD[edit]

Structure[edit]

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[edit]

Libpc Hierarchy[edit]

Object Hierarchy[edit]

Use-case Scenarios[edit]