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

From BRL-CAD
Line 214: Line 214:
 
* 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]
 
* 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.
 
* 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?lang=zh-CN 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.

Revision as of 21:34, 25 August 2022

Contents

Development Logs

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

  • 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

  • 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

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

Saturday, June 18, 2022

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

Monday, June 20, 2022

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

Tuesday, June 21, 2022

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

Wednesday, June 22, 2022

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

Thursday, June 23, 2022

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

Friday, June 24, 2022

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

Monday, June 27, 2022

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

Tuesday, June 28, 2022

  • Read codes related to brep and try debugging

Wednesday, June 29, 2022

  • Reorganize and test brep_arbintersection project

Thursday, June 30, 2022

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

Friday, July 1, 2022

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

Monday, July 4, 2022

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

Tuesday, July 5, 2022

  • Debug brep using file output system.

Wednesday, July 6, 2022

  • Ditto

Thursday, July 7, 2022

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

Monday, July 11, 2022

  • Reread NURBS Development Guide

Tuesday, July 12, 2022

  • 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

  • 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

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

Friday, July 15, 2022

  • Find where introduced the error in main branch using bisect. --around *1583360* commit
  • 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.

Rhc brep bottom v0.png

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)

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

  • 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 ppt1 and ppt2.

Saturday, August 20, 2022

  • 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

  • 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

  • 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

  • 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

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