Difference between revisions of "User:GregoryLi/GSoC2022/DevLog"

From BRL-CAD
 
(15 intermediate revisions by the same user not shown)
Line 103: Line 103:
 
* Find where introduced the error in main branch using bisect.  --around *1583360* commit
 
* Find where introduced the error in main branch using bisect.  --around *1583360* commit
 
* Read codes about primitives convert to brep.
 
* Read codes about primitives convert to brep.
 +
 +
==Saturday, July 16, 2022==
 +
* Check map from old dplot command to brep.
 +
 +
==Monday, July 18, 2022==
 +
* generate 125 arb union cases then convert them to brep.
 +
 +
==Tuesday, July 19, 2022==
 +
* append intersection and subtraction test cases (125 * 2).
 +
 +
==Wednesday, July 20, 2022==
 +
* Test intersection and subtraction test cases using commands.
 +
* learn to use nirt command.
 +
 +
==Thursday, July 21, 2022==
 +
* Reposition test cases to a grid.
 +
* Formal objects' names.
 +
 +
==Friday, July 22, 2022==
 +
* Test to convert primitives to brep, record issues.
 +
 +
==Monday, July 25, 2022==
 +
* Create a new project to convert primitives to brep format.  --abandoned later
 +
 +
==Tuesday, July 26, 2022==
 +
* Use shell to convert primitives to brep format.
 +
* Shot the primitives and breps using nirt.
 +
 +
==Wednesday, July 27, 2022==
 +
* Try to evaluate brep obj using nirt.
 +
 +
==Thursday, July 28, 2022==
 +
* Try to evaluate brep obj using nirt.
 +
* Test and understand rhc primitive.
 +
 +
==Friday, July 29, 2022==
 +
* Ask for leave
 +
 +
==Monday, August 1, 2022==
 +
* Solve conficts between main and my dev branch.    --error in generating, can't debug. rollback
 +
* Investigate the call stack of rhc brep.
 +
  - error 1: the bottom of rhc in brep format is larger than rhc in primitive format
 +
  - error 2: the orient of the bottom is not correspond to it's wireframe
 +
 +
==Tuesday, August 2, 2022==
 +
* Look into code call stack while converting rhc to brep and curve drawing.
 +
* Read and understand formula of bezier curve.
 +
 +
==Wednesday, August 3, 2022==
 +
* sleuth source code on the math.
 +
* Look into memory changes while plotting bezier curve.
 +
 +
==Thursday, August 4, 2022==
 +
* Test with using relative coordinates while scaling the position of a vertex on the curve.
 +
 +
==Friday, August 5, 2022==
 +
* Test reshape the bottom by changing source code according to formula.
 +
 +
==Monday, August 8, 2022==
 +
* Sleuth the formula by openNURBS source code.
 +
* Monitor variables change while drawing curcve of rhc_brep.
 +
 +
==Tuesday, August 9, 2022==
 +
* Solve the problem by changing the codes of openNURBS: mourning Casteljau, just caculate using NURBS.
 +
[[File:rhc_brep_bottom_v0.png|300px]]
 +
 +
==Wednesday, August 10, 2022==
 +
* sleuth source code on the math.
 +
* Look into memory changes while plotting bezier curve.
 +
 +
==Thursday, August 11, 2022==
 +
* debug creating rhc_brep's side face and top face.
 +
 +
==Friday, August 12, 2022==
 +
* Look into Casteljau algorithm for NURBS.(It's used for openNURBS drawing curve)
 +
[[File:rhc_brep_bottom_v1.png|300px]]
 +
[[File:rhc_brep_bottom_v1_rt.png|300px]]
 +
 +
for picture 1, the left obj is rhc primitive, the right is rhc_brep
 +
 +
==Monday, August 15, 2022==
 +
* Sleuthing on the math about Casteljau algorithm and nurbs of source code.
 +
for Casteljau algorithm: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/de-casteljau.html
 +
for nurbs of order 2 with weight,the answer is correct if we multiply the original coordinates of control point 2 by the factor 1/w2.
 +
* Debug rhc bottom drawing by changing the weight of second control point.
 +
 +
==Tuesday, August 16, 2022==
 +
Begin debugging epa primitive brep converting.
 +
* Test to convert epa into brep format in different position and rotation, find the upper part stay still at the origin point.
 +
* Look into math expression and algorithm of nurbs surface.
 +
 +
==Wednesday, August 17, 2022==
 +
* Try to pan all the control points according to epa primitive position, the nurbs surface git into chaos.
 +
* Guess the reason is similar to the nurbs curve, look into math expression and drawing algorithm of nurbs surface.
 +
 +
==Thursday, August 18, 2022==
 +
* Look into rotating NURBS surfaces by transforming controls points.
 +
* Try to write a transform function of NURBS surface.
 +
 +
==Friday, August 19, 2022==
 +
* Read nurbs surface source codes, find the function already done in OpenNURBS.
 +
* Fix pan transform by caculating a pan matrix of 4x4.
 +
* Study usage and caculation of transform matrix according to [https://sites.cs.ucsb.edu/~lingqi/teaching/resources/GAMES101_Lecture_03.pdf ppt1] and [https://sites.cs.ucsb.edu/~lingqi/teaching/resources/GAMES101_Lecture_04.pdf ppt2].
 +
 +
==Saturday, August 20, 2022==
 +
* Try to caculate the rotation matrix by rotate axis and degree according to page 10 of [https://sites.cs.ucsb.edu/~lingqi/teaching/resources/GAMES101_Lecture_04.pdf ppt2], failed.
 +
* Find the transform can be divided into one pan and two rotation(the 1st is axis rotation, the 2rd is rotation around axis). Sleuth math expression and code. Result failed.
 +
 +
==Sunday, August 21, 2022==
 +
* Find the transform is related to coordinate systems transform, study it according to [https://stackoverflow.com/questions/34391968/how-to-find-the-rotation-matrix-between-two-coordinate-systems forum]
 +
* Caculate and combine rotation matrix. origin shift rotation matix and pan vector, solve the epa brep converting problem.
 +
 +
==Tuesday, August 23, 2022==
 +
* sleuth the formula about hyperbola according to [https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/NURBS/RB-conics.html Rational Bézier Curves]
 +
* sleuth the formula of drawing rhc primitive codes.(rhc.c rt_rhc_plot())
 +
* sleuth the formula of caculating control points and weights of NURBS of hyperbola.(rhc_brep.cpp rt_rhc_brep)
 +
 +
==Wednesday, August 24, 2022==
 +
* Caculate control points and weights of hyperbola, debug hyperbola curve.[https://www.desmos.com/calculator/adbpzvkbjf reference link]
 +
* Fix and test drawing bottom face of rhc by modify control points and weights of NURBS.
 +
 +
==Thursday, August 25, 2022==
 +
* write a shell script to test rhc primitive brep converting.
 +
* test rhc primitive brep converting.
 +
 +
==Monday, August 29, 2022==
 +
* add a rotation for every primitive in sh/brep_primitive.sh and check whether the brep result are correct or not.      --correct
 +
* Sleuthing on the math about getting points of hyperbola.(src/librt/primitives/rhc/rhc.c rt_mk_hyperbola())
 +
 +
==Tuesday, August 30, 2022==
 +
* reorganize brep_arbintersection function.
 +
* add a function creating sph boolean and brep matrix.
 +
 +
==Wednesday, August 31, 2022==
 +
* solve pull request conflicts with main.
 +
* add a function creating rcc boolean and brep matrix.
 +
* sort out my develop branches to create pull requests. [https://github.com/BRL-CAD/brlcad/pull/56 PR56][https://github.com/BRL-CAD/brlcad/pull/57 PR57]
 +
 +
==Thursday, September 1, 2022==
 +
* add command line argument to specific primitive.
 +
* reread ''bool_eval_development'' document.
 +
 +
==Friday, September 2, 2022==
 +
* optimize ON_Brep function (ON:Begin and ON:End) call positions.
 +
* run dplot, brep, overlay cmds to test which commands are still available and how to debug boolean function.
 +
 +
==Monday, September 5, 2022==
 +
* locating boolean error codes. --get_face_intersection_curves function return empty while testing, it's irregular.
 +
* config ''docbook'' to compile ''bool_eval_development''.
 +
 +
==Tuesday, September 13, 2022==
 +
* Look into and debug dplot.c.
 +
* read ''bool_eval_development'' about dplot usage.
 +
 +
==Wednesday, September 14, 2022==
 +
* Look into and track calling stack of every sub cmd of dplot cmd.
 +
* Use overlay function to plot boolean files, some files can't be plotted. Current version of the code can't introduce trim event.
 +
 +
==Thursday, September 15, 2022==
 +
* fix ''dplot_overlay'' function in dplot.c about passing parameters and calling overlay cmd.
 +
 +
==Friday, September 16, 2022==
 +
* erase all faces plot in the end of ''dplot * faces''.
 +
* test overlay cmd to plot faces of one cube. Overlay can't display multiple faces of one cube at the same time.
 +
 +
==September 19 to September 23==
 +
* leave for school things and COVID-19 policy
 +
 +
==Monday, September 26, 2022==
 +
* switch the origin commit to a previous version, make sure the brep cmd will introduce face trim operation to help debug dplot cmd.
 +
* display bool*_brep*_surface*.plot3 files instead of curves in dplot * faces
 +
 +
==Tuesday, September 27, 2022==
 +
* fix overlay all faces in ''dplot * ssx'' by using globbing.
 +
* dplot ssx event using bool*_highlight_brep*_surface*.plot3 files instead of ssx_event*.plot3, because some ssx_event*.plot3 and clipped_curve can't be plotted using overlay cmd.
 +
 +
==Wednesday, September 28, 2022==
 +
* test to overlay bool* files created by different cases and different commits.
 +
 +
==Thursday, September 29, 2022==
 +
* Configure the docbook compilation environment on windows.
 +
* update ''NURBS Boolean Evaluation Development Guide'' about dplot usage.
 +
 +
==Friday, September 30, 2022==
 +
* optimize files to be overlayed in dplot command.
 +
* plot faces and bool*_ssx*_event*.plot3 using "dplot * ssx *"
 +
 +
==Monday, October 3, 2022==
 +
* Read codes about how to get trimmed face before *8a508c8f* commit.
 +
* find why plot files can't be plotted using the overlay command. Reading codes creating and plotting them.

Latest revision as of 09:33, 4 October 2022

Contents

Development Logs[edit]

Community Bonding Period

  • familiar with arb8 convert to brep code
  • Read BRL-CAD NURBS Boolean Evaluation Development Guide.
  • Look into arb8_brep and brep_simple.
  • Test converting arb8 to brep.

Work Period

Wednesday, June 15, 2022[edit]

  • Test converting arb8 into brep format with non-planar faces. -- get the differences of the output of them, but the result of brep_simple.cpp seems confusing.
  • Compare codes of brep_simple.cpp and arb8_brep.cpp. -- mastered brep_simple
  • Replace the input data in brep_simple with arb8. -- a beginning

Thursday, June 16, 2022[edit]

  • Run and analyze the result of examples about brep, record errors found.
  • Write one example about converting arb8 into brep. -- about 75% completion

Friday, June 17, 2022[edit]

  • Write one example about converting arb8 into brep. -- accomplish
  • Read code of current examples about creating and processing object.

Saturday, June 18, 2022[edit]

  • Read code of OpenNURBS.
  • Read code and docs about brep.

Monday, June 20, 2022[edit]

  • Test simple cases of boolean then brep(arb intersection).
  • Read code of OpenNURBS.
  • Reorganize code about example.

Tuesday, June 21, 2022[edit]

  • Test simple cases of boolean then brep(face intersection).
  • Read docs about previous Brep work.

Wednesday, June 22, 2022[edit]

  • Learn about nurb surface usage.(face_g_snurb)
  • Write one project about testing brep simple cases. -- about 65% completion

Thursday, June 23, 2022[edit]

  • Write one project about testing brep simple cases. -- complete
  • Reading docs and codes about brep.

Friday, June 24, 2022[edit]

  • Test surface interesct cases.
  • Reading docs and codes about brep.

Monday, June 27, 2022[edit]

  • Read surfaceinteresct project and try to debug
  • Read codes related to brep(rt_comb_brep ON_Boolean etc)

Tuesday, June 28, 2022[edit]

  • Read codes related to brep and try debugging

Wednesday, June 29, 2022[edit]

  • Reorganize and test brep_arbintersection project

Thursday, June 30, 2022[edit]

  • Compare the code stack difference between archer and my test case about _brep_cmd_brep

Friday, July 1, 2022[edit]

  • Compare the code stack difference between archer and my test case about _brep_cmd_brep
  • Rewrite brep test case

Monday, July 4, 2022[edit]

  • Solve build errors after git pull.
  • ebug brep using file output system.

Tuesday, July 5, 2022[edit]

  • Debug brep using file output system.

Wednesday, July 6, 2022[edit]

  • Ditto

Thursday, July 7, 2022[edit]

  • Solve the inconsistent problem about converting brep in test case and Archer
  • Debug brep using file output system.

Monday, July 11, 2022[edit]

  • Reread NURBS Development Guide

Tuesday, July 12, 2022[edit]

  • Debug: tracking and call stack from test_UNION into ON_Boolean
  • Find multiple outputs with the same operation among three BRL-CAD versions:
   - current main branch             -- missing faces
   - BRL-CAD 7.32.6 release package  -- correct
   - project build with BRL-CAD 7.32.6 source code  -- crashed

Wednesday, July 13, 2022[edit]

  • Compare differences between different branch and commits
   - project build with BRL-CAD 7.32.6 source code in RELEASE mode  - correct for arb_4.r test case, error for arb_3.r
   - project build with BRL-CAD 7.32.6 source code in DEBUG mode  - crash
   - current main branch             -- error for arb_3.r/arb_4.r
   - initial commit of RELEASE branch              -- correct for arb_4.r test case, error for arb_3.r

Thursday, July 14, 2022[edit]

  • Find where introduced the error in main branch.
  • Test and compare different brep cases cross different code versions.

Friday, July 15, 2022[edit]

  • Find where introduced the error in main branch using bisect. --around *1583360* commit
  • Read codes about primitives convert to brep.

Saturday, July 16, 2022[edit]

  • Check map from old dplot command to brep.

Monday, July 18, 2022[edit]

  • generate 125 arb union cases then convert them to brep.

Tuesday, July 19, 2022[edit]

  • append intersection and subtraction test cases (125 * 2).

Wednesday, July 20, 2022[edit]

  • Test intersection and subtraction test cases using commands.
  • learn to use nirt command.

Thursday, July 21, 2022[edit]

  • Reposition test cases to a grid.
  • Formal objects' names.

Friday, July 22, 2022[edit]

  • Test to convert primitives to brep, record issues.

Monday, July 25, 2022[edit]

  • Create a new project to convert primitives to brep format. --abandoned later

Tuesday, July 26, 2022[edit]

  • Use shell to convert primitives to brep format.
  • Shot the primitives and breps using nirt.

Wednesday, July 27, 2022[edit]

  • Try to evaluate brep obj using nirt.

Thursday, July 28, 2022[edit]

  • Try to evaluate brep obj using nirt.
  • Test and understand rhc primitive.

Friday, July 29, 2022[edit]

  • Ask for leave

Monday, August 1, 2022[edit]

  • Solve conficts between main and my dev branch. --error in generating, can't debug. rollback
  • Investigate the call stack of rhc brep.
 - error 1: the bottom of rhc in brep format is larger than rhc in primitive format
 - error 2: the orient of the bottom is not correspond to it's wireframe

Tuesday, August 2, 2022[edit]

  • Look into code call stack while converting rhc to brep and curve drawing.
  • Read and understand formula of bezier curve.

Wednesday, August 3, 2022[edit]

  • sleuth source code on the math.
  • Look into memory changes while plotting bezier curve.

Thursday, August 4, 2022[edit]

  • Test with using relative coordinates while scaling the position of a vertex on the curve.

Friday, August 5, 2022[edit]

  • Test reshape the bottom by changing source code according to formula.

Monday, August 8, 2022[edit]

  • Sleuth the formula by openNURBS source code.
  • Monitor variables change while drawing curcve of rhc_brep.

Tuesday, August 9, 2022[edit]

  • Solve the problem by changing the codes of openNURBS: mourning Casteljau, just caculate using NURBS.

Rhc brep bottom v0.png

Wednesday, August 10, 2022[edit]

  • sleuth source code on the math.
  • Look into memory changes while plotting bezier curve.

Thursday, August 11, 2022[edit]

  • debug creating rhc_brep's side face and top face.

Friday, August 12, 2022[edit]

  • Look into Casteljau algorithm for NURBS.(It's used for openNURBS drawing curve)

Rhc brep bottom v1.png Rhc brep bottom v1 rt.png

for picture 1, the left obj is rhc primitive, the right is rhc_brep

Monday, August 15, 2022[edit]

  • Sleuthing on the math about Casteljau algorithm and nurbs of source code.

for Casteljau algorithm: https://pages.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/de-casteljau.html for nurbs of order 2 with weight,the answer is correct if we multiply the original coordinates of control point 2 by the factor 1/w2.

  • Debug rhc bottom drawing by changing the weight of second control point.

Tuesday, August 16, 2022[edit]

Begin debugging epa primitive brep converting.

  • Test to convert epa into brep format in different position and rotation, find the upper part stay still at the origin point.
  • Look into math expression and algorithm of nurbs surface.

Wednesday, August 17, 2022[edit]

  • Try to pan all the control points according to epa primitive position, the nurbs surface git into chaos.
  • Guess the reason is similar to the nurbs curve, look into math expression and drawing algorithm of nurbs surface.

Thursday, August 18, 2022[edit]

  • Look into rotating NURBS surfaces by transforming controls points.
  • Try to write a transform function of NURBS surface.

Friday, August 19, 2022[edit]

  • Read nurbs surface source codes, find the function already done in OpenNURBS.
  • Fix pan transform by caculating a pan matrix of 4x4.
  • Study usage and caculation of transform matrix according to ppt1 and ppt2.

Saturday, August 20, 2022[edit]

  • Try to caculate the rotation matrix by rotate axis and degree according to page 10 of ppt2, failed.
  • Find the transform can be divided into one pan and two rotation(the 1st is axis rotation, the 2rd is rotation around axis). Sleuth math expression and code. Result failed.

Sunday, August 21, 2022[edit]

  • Find the transform is related to coordinate systems transform, study it according to forum
  • Caculate and combine rotation matrix. origin shift rotation matix and pan vector, solve the epa brep converting problem.

Tuesday, August 23, 2022[edit]

  • sleuth the formula about hyperbola according to Rational Bézier Curves
  • sleuth the formula of drawing rhc primitive codes.(rhc.c rt_rhc_plot())
  • sleuth the formula of caculating control points and weights of NURBS of hyperbola.(rhc_brep.cpp rt_rhc_brep)

Wednesday, August 24, 2022[edit]

  • Caculate control points and weights of hyperbola, debug hyperbola curve.reference link
  • Fix and test drawing bottom face of rhc by modify control points and weights of NURBS.

Thursday, August 25, 2022[edit]

  • write a shell script to test rhc primitive brep converting.
  • test rhc primitive brep converting.

Monday, August 29, 2022[edit]

  • add a rotation for every primitive in sh/brep_primitive.sh and check whether the brep result are correct or not. --correct
  • Sleuthing on the math about getting points of hyperbola.(src/librt/primitives/rhc/rhc.c rt_mk_hyperbola())

Tuesday, August 30, 2022[edit]

  • reorganize brep_arbintersection function.
  • add a function creating sph boolean and brep matrix.

Wednesday, August 31, 2022[edit]

  • solve pull request conflicts with main.
  • add a function creating rcc boolean and brep matrix.
  • sort out my develop branches to create pull requests. PR56PR57

Thursday, September 1, 2022[edit]

  • add command line argument to specific primitive.
  • reread bool_eval_development document.

Friday, September 2, 2022[edit]

  • optimize ON_Brep function (ON:Begin and ON:End) call positions.
  • run dplot, brep, overlay cmds to test which commands are still available and how to debug boolean function.

Monday, September 5, 2022[edit]

  • locating boolean error codes. --get_face_intersection_curves function return empty while testing, it's irregular.
  • config docbook to compile bool_eval_development.

Tuesday, September 13, 2022[edit]

  • Look into and debug dplot.c.
  • read bool_eval_development about dplot usage.

Wednesday, September 14, 2022[edit]

  • Look into and track calling stack of every sub cmd of dplot cmd.
  • Use overlay function to plot boolean files, some files can't be plotted. Current version of the code can't introduce trim event.

Thursday, September 15, 2022[edit]

  • fix dplot_overlay function in dplot.c about passing parameters and calling overlay cmd.

Friday, September 16, 2022[edit]

  • erase all faces plot in the end of dplot * faces.
  • test overlay cmd to plot faces of one cube. Overlay can't display multiple faces of one cube at the same time.

September 19 to September 23[edit]

  • leave for school things and COVID-19 policy

Monday, September 26, 2022[edit]

  • switch the origin commit to a previous version, make sure the brep cmd will introduce face trim operation to help debug dplot cmd.
  • display bool*_brep*_surface*.plot3 files instead of curves in dplot * faces

Tuesday, September 27, 2022[edit]

  • fix overlay all faces in dplot * ssx by using globbing.
  • dplot ssx event using bool*_highlight_brep*_surface*.plot3 files instead of ssx_event*.plot3, because some ssx_event*.plot3 and clipped_curve can't be plotted using overlay cmd.

Wednesday, September 28, 2022[edit]

  • test to overlay bool* files created by different cases and different commits.

Thursday, September 29, 2022[edit]

  • Configure the docbook compilation environment on windows.
  • update NURBS Boolean Evaluation Development Guide about dplot usage.

Friday, September 30, 2022[edit]

  • optimize files to be overlayed in dplot command.
  • plot faces and bool*_ssx*_event*.plot3 using "dplot * ssx *"

Monday, October 3, 2022[edit]

  • Read codes about how to get trimmed face before *8a508c8f* commit.
  • find why plot files can't be plotted using the overlay command. Reading codes creating and plotting them.