Difference between revisions of "User:Clouddrift/GSoC2014/Logs"

From BRL-CAD
(Week 3)
(Week 3)
Line 103: Line 103:
 
'''Saturday, June 7'''
 
'''Saturday, June 7'''
  
I am trying to finish rt_comb_merge.
+
I assign working shell from facetize_tree to working instance directly. Now the facetize routine can deal with single shell.I test rcc and sph, and it works good.
 +
 
 +
'''Acquired knowledge'''
 +
* Interface description should be located in *.h, while implementation documentation can live in *.c. As for this kind of question, libbu is a golden example.

Revision as of 07:25, 7 June 2014

Community Bounding Period

Get the commit access

Submit two patches for nmg part of BRL-CAD. URLs as following.

Read the relavant Codes

Read and be familiar with nmg-related codes in BRL-CAD.

Acquired knowledge

  • Keep code style consistent is important for Open Source Community.
  • Comments greatly helps others to understand the function of routines and structs. Codes should be changed before fully tracking the call order of routines and totally understanding the comments of them.
  • That's a really good ideas to submit one or two patch to know the coding convention of the community. As a chinese saying goes, sharpening your axe will not delay your job of cutting wood.

Work Perod

Week 1

Monday, May 19

Read TODO, HACKING, COPYING and other files again. Be ready for formal coding job.

Tuesday, May 20

Find and read some pages about the details in using SVN and CMake.

Wednesday, May 21

Get the commit access for BRL-CAD successfully. What a day to celebrate! Now, I begin my work on a branch for NMG reorganization. Remove model and nmgregion struct, Then ready to fix all compilation errors.

Thursday, May 22

Rewrite nmg struct to fit BRL-CAD better. Remove model and nmgregion struct, Then change shell struct as following.

  • remove member: l (bu_list);
  • remove member: r_p (nmgregion pointer);
  • add member: magic (uint32_t);
  • add member: manifolds (char pointer);
  • add member: maxindex (long);

Friday, May 23

Fix the rest compilation errors due to fit the new nmg structure.

Acquired knowledge

  • Committing without breaking the build is always the best choice. Try to use comment to achieve this point and record such codes in TODO file for fixing later.

Week 2

Monday, May 26

Continue to cleanup the codes.

Tuesday, May 27

Until this afternoon, I finished most of the removing job. But I find some places cannot simply replaced the model/nmgregion with shell. e.g. the routine nmg_merge_shells used in nmg_booltree_evaluate(...) and nmg_boolean(...).

Wednesday, May 28

I discuss my concern with Daniel. He suggest me to use nmg_comb_internal to deal with such situation. And the whole job will be done if NMG part runs good after I do all replacement.

Thursday, May 29

I study carefully about the the function about nmg_comb_internal and related codes. e.g mk_lfcomb(), mk_addmember(), and so on.

Friday, May 30

Many places should be changed again because I missed the nmg_comb_internal. I review the codes in NMG parts one by one.

Week 3

Monday, June 2

Fix all compile errors in librt. There is no 'model' and 'nmgregion' existing in this lib.

Tuesday, June 3

Fix rest compile errors in libged and mged. Now mged can run but the result of facetize still remains wrong which will be fixed later.

Wednesday, June 4

Read the file 'Introduce to MGED' again, make more clear about the region usage in BRL-CAD.

Thursday, June 5

Consult Daniel about how to deal with the rt_comb_internal level of nmg operation. There are two sample for reference:

  • src/libged/voxelize.c [mk_addmember]
  • src/libged/comb.c [_ged_combadd2]

Friday, June 6

Organize the declaration and implementation about nmg in librt. Then, Check the comments for nmg files. It must be invalid that most of them are located in *.c file, not in *.h file.

Saturday, June 7

I assign working shell from facetize_tree to working instance directly. Now the facetize routine can deal with single shell.I test rcc and sph, and it works good.

Acquired knowledge

  • Interface description should be located in *.h, while implementation documentation can live in *.c. As for this kind of question, libbu is a golden example.