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

Objectives

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

  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

Structure

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