Editing User:Hippieindamakin87

From BRL-CAD

User account "Hippieindamakin87" is not registered. Please check if you want to create/edit this page.

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 3: Line 3:
  
 
===Abstract===
 
===Abstract===
I wish to implement a library/routine which computes a B-rep from the given CSG and further does a B-rep on B-rep evaluation generating a resultant (new) B-rep. The library evaluates the B-rep using lazy rational arithmetic such that the tolerances are taken care of with minimal error. Numerical errors are handled at an algorithm-independent level, which is an original exact arithmetic that performs only the necessary precise computations. LiDIA shall be used for the exact precision math and the data structure support is based on MAPC(C++ library for manipulating algebraically defined points and curves in the plane).
+
I wish to implement a library/routine which computes a B-rep from the given CSG and further does a B-rep on B-rep evaluation generating a resultant (new) B-rep. The library evaluates the B-rep using lazy rational arithmetic such that the tolerances are taken care of with minimal error. Numerical errors are handled at an algorithm-independent level, which is an original exact arithmetic that performs only the necessary precise computations.The kernel runs on LiDIA and the data structures are handled by MAPC.(C++ library for manipulating algebraically defined points and curves)
  
 
===Proposal===
 
===Proposal===
we assume rational polyhedral solids.Rational polyhedral solids are polyhedral solids which are represented by their boundaries, in which the coordinates of the vertices and the coefficients of the defining face plane equations are all available as rational numbers, regardless of the way in which these numbers are represented. A rational solid is always numerically consistent; for instance, each vertex-coordinate triple satisfies the plane equation of each incident face.
+
we assume rational polyhedral solids that are polyhedral solids which are represented by their boundaries, in which the coordinates of the vertices and the coefficients of the defining face plane equations are all available as rational numbers, regardless of the way in which these numbers are represented. A rational solid is always numerically consistent; for instance, each vertex-coordinate triple satisfies the plane equation of each incident face.
  
The B-rep is made up of two lists  
+
The B-rep is made up of two lists one for edges and one for faces.
*one for edges  
 
*one for faces.
 
  
 
To be valid, the B-rep must satisfy the following three conditions:
 
To be valid, the B-rep must satisfy the following three conditions:
Line 22: Line 20:
 
For some of the lower-level routines, the algorithms based on floating-point arithmetic are susceptible to failure. These include sign-evaluation of geometric predicates, orientation of points with respect to curves, and component classification. We refer to the resulting set of routines as kernel routines. The efficiency and reliability of the overall evaluation is governed by these routines.
 
For some of the lower-level routines, the algorithms based on floating-point arithmetic are susceptible to failure. These include sign-evaluation of geometric predicates, orientation of points with respect to curves, and component classification. We refer to the resulting set of routines as kernel routines. The efficiency and reliability of the overall evaluation is governed by these routines.
 
Some of the efficient algorithms to implement the kernel routines use exact arithmetic.
 
Some of the efficient algorithms to implement the kernel routines use exact arithmetic.
Kernel routines that shall be used are  
+
Kernel routines that shall be used are Multivariate Sturm Sequences and Multipolynomial resultants.
*Multivariate Sturm Sequences
 
*Multipolynomial resultants.
 
  
 
*'''Multivariate Sturm Sequences'''
 
*'''Multivariate Sturm Sequences'''
Sturm theorem is a procedure to evaluate distinct real roots of a polynomial. Given two polynomials(in our case the equations of the planes/curves),we can define another polynomial which is a combination of these polynomials(volume polynomial in the case of curves). Here the calculations can be done by approximating the resultant polynomial as a univariate sequence in one of the variables and then solving the sequence with respect to the remaining variables.
+
Sturm theorem is a procedure to evaluate distinct real roots of a polynomial. Given two polynomials(in our case the equations of the planes/curves),we can define another polynomial which is a combination of these polynomials(volume polynomial in the case of curves). Here the calculations can be done by approximating the resultant polynomial as a univariate sequence in one of the variables and then solving the sequence w.r.t the remaining variables.
  
 
*'''Comparision of algebraic points '''
 
*'''Comparision of algebraic points '''
Line 55: Line 51:
 
====Challenges of the B-rep evaluation====
 
====Challenges of the B-rep evaluation====
 
'''Exact data structures and algorithms:'''
 
'''Exact data structures and algorithms:'''
MAPC provides routines for handling polynomials (K_POLYs), algebraic plane curves (K_CURVEs), and both 1D points (K_POINT1Ds) and 2D points (K_POINT2Ds) with algebraic coordinates. It includes routines for determining the topology of algebraic plane curves over a limited domain and intersecting two algebraic plane curves.
+
MAPC provides routines for handling polynomials (K_POLYs), algebraic plane curves (K_CURVEs), and both 1D points (K_POINT1Ds) and 2D points (K_POINT2Ds)
 +
with algebraic coordinates. It includes routines for determining the topology of algebraic plane curves over a limited domain and intersecting two algebraic plane curves.
  
 
'''Point inversion:'''
 
'''Point inversion:'''
Line 61: Line 58:
  
 
'''Curve correspondance:'''
 
'''Curve correspondance:'''
Curve correspondence refers to finding the orientation of a curve in one patch domain, relative to the same curve represented in the domain of another patch.
+
Curve correspondence refers to finding the orientation of a curve in one patch domain relative to the same curve represented in the domain of another patch.
  
====Proposed approach====
+
===Proposed approach===
For the conversion of CSG to B-rep, the implementation approach shall be similar the one followed by [http://www.cs.unc.edu/~geom/CSG/boole.html D.Manocha et al].The basic kernel operations shall be implemented using exact arithmetic using lazy evaluation for the operations like solving for the roots using Multivariate Sturm Sequence (with the approximations as mentioned above and this makes it less robust than ESOLID but faster than it) and the comparision of algebraic points. The afore mentioned processes shall be implemented in C++ .To get the work done faster i prefer to tweak the BOOLE souce files.The operations such as point classification can be done using simplified computation and the operations point inversion and curve correspondance.LiDIA shall be used for the exact precision math and the data structure support is based on MAPC(C++ library for manipulating algebraically defined points and curves in the plane).
 
 
 
Efficient geometric modelling needs to be both
 
*robust
 
*computationally economic
 
I am aiming at balancing both the factors in this proposed approach.
 
 
 
====Deliverables====
 
*Efficient routines for B-rep on B-rep evaluation.
 
*Optimised routines for CSG to B-rep conversion.
 
*B-rep generation of the exisiting implicit primitives.
 
*Documentation
 
 
 
====Timeline====
 
#Literature study and mathematical analysis.(Pre-GSOC)
 
#Implementation of the data structures for the surfaces ,curves and points.(~2 weeks)
 
#Implementation of the lazy evaluation based exact arithmetic approach for the kernel routines(the solutions to the sturm sequences and comparision of the geometric points).(~2 weeks)
 
#Optimisation of other kernel routines which already use floating-point arithnmetic.(~1 week)
 
#Implementation of the boundary evaluation over the kernel routines(~4 weeks)
 
#Generic routines to covert the CSG representation to B-rep representation.( ~2.5 weeks)
 
#Implementation of the routines that generate a BREP for all of our implicit primitives.(Post-GSOC)
 
 
 
====References====
 
*John Keyser, Tim Culver, Mark Foskey, Shankar Krishnan, Dinesh Manocha
 
ESOLID-A System for Exact Boundary Evaluation.
 
Proceedings of the ACM Conference on Solid Modeling, June 17-21, 2002.
 
 
 
*John Keyser, Tim Culver, Dinesh Manocha, Shankar Krishnan.
 
Efficient and Exact Manipulation of Algebraic Points and Curves.
 
Special Issue of Computer Aided Design on Robustness. 2000.
 
 
 
*John Keyser, Shankar Krishnan, Dinesh Manocha.
 
Efficient and Accurate B-rep Generation of Low Degree Sculptured Solids Using Exact Arithmetic: I -- Representations
 
Computer Aided Geometric Design. Vol 16, No. 9. pp. 841-859. October, 1999.
 
 
 
*John Keyser, Shankar Krishnan, Dinesh Manocha.
 
Efficient and Accurate B-rep Generation of Low Degree Sculptured Solids Using Exact Arithmetic: II -- Computation
 
Computer Aided Geometric Design. Vol 16, No. 9. pp. 861-882. October, 1999.
 
 
 
*John Keyser, Tim Culver, Dinesh Manocha, Shankar Krishnan.
 
MAPC: A library for Efficient and Exact Manipulation of Algebraic Points and Curves.
 
Proceedings of Fifteenth Annual Symposium on Computational Geometry, pp. 360-369, 1999.
 
 
 
*Shiaofen Fang , Beat Brüderlin, Robustness in Geometric Modeling - Tolerance-Based Methods, Proceedings of the International Workshop on Computational Geometry - Methods, Algorithms and Applications, p.85-101, March 21-22, 1991
 
 
 
*Mohand Ourabah Benouamer, Dominique Michelucci, Bernard Peroche: Error-free boundary evaluation based on a lazy rational arithmetic: a detailed implementation. Computer-Aided Design 26(6): 403-416 (1994)
 
 
 
====Notes====
 
Incase of any licencing issues with respect to either of the dependant libraries,NTL along with GMP(or LiDIA with ) shall be used extensively for the datastructures and the computation.
 
 
 
====Personal profile====
 
[http://suryajith.tp2p.com/ http://suryajith.tp2p.com/]
 
 
 
--------------
 
 
 
IRC nick:hippieindamakin8
 
 
 
--------------
 
 
 
I am sure that I would make a good candidate as I bring a very strong sense of work ethic to each of my endeavors. My project basically requires a very good command of Geometric Modelling  which I can safely say that I have good level of expertise in. Additionally a good theoretical know how of Computational Geometry can prove invaluable to this project which I am very thorough in. Lastly the wide repoirtoire of Geometric Data Structures and applied mathematical methods at my disposal can greatly aid me in quick solutions to whatever obstacles I may encounter during the Project.
 

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)