User:GregoryLi/GSoC2023/FinalReport

From BRL-CAD

Final Report

The project implemented some basic geometric and topological functions. Now BRL-CAD is able to create some basic polyhedrons. The final report lists the functionality implemented by this project, as well as the future directions that need to be implemented.

operations implemented

geometric operations

1. v_create: create a new vertex

2. v_remove: remove a vertex

3. c2_create_line: create a 2D parameter space geometric line

4. c2_remove: remove a 2D parameter space geometric curve

5. c3_create: create a new NURBS curve

6. c3_in: create a new NURBS curve given a detailed description

7. c3_interp: create a new NURBS curve by interpolating given control vertices

8. c3_copy: copy a NURBS curve

9. c3_remove: remove a NURBS curve

10. c3_move: move a NURBS curve to a specified position

11. c3_set_cv: set the control vertex of a NURBS curve

12. c3_flip: flip the direction of a NURBS curve

13. c3_insert_knot: insert a knot into a NURBS curve

14. c3_trim: trim a NURBS curve using start and end parameters

15. c3_split: split a NURBS curve into two at a parameter

16. c3_join: join end of curve 1 to start of curve 2

17. s_create: create a new NURBS surface

18. s_interp: create a new NURBS surface

19. s_copy: copy a NURBS surface

20. s_birail: create a new NURBS surface using two curves

21. s_remove: remove a NURBS surface

22. s_move: move a NURBS surface to a specified position

23. s_set_cv: set a control vertex of a NURBS surface to a specified position

24. s_trim: trim a NURBS surface using start and end parameters

25. s_split: split a NURBS surface into two given a parameter value

26. s_tensor: create a new NURBS surface by extruding the first curve along the second curve

27. s_revolution: create a new NURBS surface by rotating a curve around an axis by an angle

28. s_ext_v: extract a vertex from a NURBS surface

29. s_ext_c3: extract a curve from a NURBS surface


topological operations

1. e_create: create a new topology edge, given two vertices and a curve

2. f_create: create a new topology face, given a surface id

3. f_rev: reverse a face

4. l_create: create a new topology loop for a face

5. t_create: create a new topology trim for a loop

TO-DO lists

1. 2D curve editing operations on the parameter space. This is used for surface trimming and loops. Now the project only supports creating simple 2D lines.

2. Improve support for trim and loop on surfaces in Brep. Now the project supports NURBS surface editing operations. But we can't precisely trim the surface. Functions needed include finding 2 parameters and a geometric intersection line of two NURBS surfaces, the intersection between two parameter/geometry curves, and so on.

3. Simplify user operations. For example, users need to manually input the directions of the curves while creating loops. These can be automatically judged to reduce user input.