Difference between revisions of "User:GregoryLi/GSoC2023/FinalReport"
(One intermediate revision by the same user not shown) | |||
Line 64: | Line 64: | ||
29. s_ext_c3: extract a curve from a NURBS surface | 29. s_ext_c3: extract a curve from a NURBS surface | ||
+ | |||
+ | |||
+ | <h3>topological operations</h3> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | <h2>TO-DO lists</h2> | ||
+ | |||
+ | 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. |
Latest revision as of 06:23, 29 August 2023
Contents
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.