# Editing Libpg : A parametrics/constraint library

From BRL-CAD

**Warning:** You are not logged in. Your IP address will be publicly visible if you make any edits. If you **log in** or **create an account**, your edits will be attributed to your username, along with other benefits.

The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision | Your text | ||

Line 1: | Line 1: | ||

{{DesignDocument}} | {{DesignDocument}} | ||

− | = | + | |

+ | = libpg : A parametrics/ constraint library = | ||

Proposed sytem for parametrics and constraint implementation | Proposed sytem for parametrics and constraint implementation | ||

Line 18: | Line 19: | ||

acts as a library which sits above librt using the librt methods for creation and modification of geometry | acts as a library which sits above librt using the librt methods for creation and modification of geometry | ||

− | |||

− | == | + | ==Architecture== |

A constraint system can be looked upon as a system of variables, their associated domains and set of constraints/relationships between the variables. | A constraint system can be looked upon as a system of variables, their associated domains and set of constraints/relationships between the variables. | ||

− | Fundamentally this can be visualised using a constraint network which is a 3-tuple. Further we can have a graph based visualization of the same using vertices as variables and edges connecting vertices as constraints. It would be intuitive only for networks having binary (between two variables) or unary ( | + | Fundamentally this can be visualised using a constraint network which is a 3-tuple.For a mathematical review please see ( Constraint Networks by Dawn Thomas ). Further we can have a graph based visualization of the same using vertices as variables and edges connecting vertices as constraints. It would be intuitive only for networks having binary (between two variables) or unary (constraints on self) constraints. Otherwise, one has to visualize hypergraphs which contain hyperedges which is basically a line connecting multiple vertices for example. |

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | + | Implementation of the above constraint network in the BRL-CAD system, involves 3 fundamental aspects. | |

− | + | 1. Domain extraction | |

− | + | 2. Solution | |

− | + | 3. Geometry updation | |

− | + | Prerequisites for such a state is of course | |

− | |||

− | |||

− | |||

− | + | 1."Handle" generation and storage | |

+ | 2. Updated geometry storage | ||

− | + | A typical constraint solution operation is shown below. | |

− | + | ==Object Architecture== | |

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | == | ||

An object oriented method of implementation would be the creation of a mixed ( in the sense that they contain both geometric and non-geometric information ) object. The object architecture is as shown below which shows the data types as well as the public and private methods. | An object oriented method of implementation would be the creation of a mixed ( in the sense that they contain both geometric and non-geometric information ) object. The object architecture is as shown below which shows the data types as well as the public and private methods. | ||

Line 64: | Line 49: | ||

The above method is efficient and useful only in the generation, modification and analysis of new geometry based on existing parametric/ non-parametric geometry. The evaluation method for constraints between already existing independent geometry would require special constraint objects. The effective difference between these objects and the earlier arises from the fact that generation of the parametric geometric objects depend on parametrics whereas constraints may or may not be feasible and thus evaluation would result in multiple solutions and they represent relationship between two independently defined elements ( parametrically or not ) | The above method is efficient and useful only in the generation, modification and analysis of new geometry based on existing parametric/ non-parametric geometry. The evaluation method for constraints between already existing independent geometry would require special constraint objects. The effective difference between these objects and the earlier arises from the fact that generation of the parametric geometric objects depend on parametrics whereas constraints may or may not be feasible and thus evaluation would result in multiple solutions and they represent relationship between two independently defined elements ( parametrically or not ) | ||

+ | ===Evaluation System=== | ||

− | + | It would be ideal to provide both analytical and numeric evaluation methods the second one being of primary importance in terms of constraint based calculations. | |

− | + | Considering the standard methods of parametrization ( see Enumeration below ) I think the implementation of an analytic solving system would be easier. Though for the solution of more complex equation as well as majority of constraints , libpg will have to provide support for numerical solutions. | |

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | |||

− | === | + | ==Enumeration of Parameters and Constraints== |

− | + | ''Various standard methods of parametrics and constraints available in CAD Programs ( CATIA as a case study )'' | |

− | # | + | ===Parametrics=== |

− | # | + | #Point |

− | # | + | ##Coordinates |

− | # | + | ##On Curve |

+ | ##On Plane | ||

+ | ##On Surface | ||

+ | ##Circle/Sphere Centre | ||

+ | ##Tangent on Curve | ||

+ | ##Between (2 points) | ||

+ | ##Extremum | ||

+ | ##Extremum Polar | ||

+ | #Line | ||

+ | ##Point-Point | ||

+ | ##Point-Direction | ||

+ | ##Angle/Normal to the curve | ||

+ | ##Tangent to the Curve | ||

+ | ##Normal to the surface | ||

+ | ##Bisecting | ||

+ | #Plane | ||

+ | ##Offset from plane | ||

+ | ##Parallel through Point | ||

+ | ##Angle/Normal to Plane | ||

+ | ##Three points | ||

+ | ##Two Lines | ||

+ | ##Point and Line | ||

+ | ##Planar Curve | ||

+ | ##Normal to Curve | ||

+ | ##Tangent to Surface | ||

+ | ##Equation | ||

+ | ##Mean through points | ||

+ | #Axis | ||

+ | #Polyline | ||

+ | #Circle | ||

+ | #Corner | ||

+ | #Connect Curve | ||

+ | #Conic | ||

+ | #Spline | ||

+ | #Helix | ||

+ | #Spiral | ||

+ | ===Constraints=== | ||

+ | #Distance | ||

+ | #Length | ||

+ | #Angle | ||

+ | #Radius/Diameter | ||

+ | #Semimajor axis | ||

+ | #Semiminor axis | ||

+ | #Symmetry | ||

+ | #Midpoint | ||

+ | #Equidistant point | ||

+ | #Fix | ||

+ | #Coincidence | ||

+ | #Cocentricity | ||

+ | #Tangency | ||

+ | #Parallelism | ||

+ | #Perpendicular | ||

+ | #Horizontal | ||

+ | #Vertical | ||

+ | #Angle with axis | ||

− | + | ==Notes== | |

− | + | ===Object Overlay=== | |

− | + | ===Extensibility=== | |

− | + | ===Interoperability=== | |

− | |||

− |