User:Clouddrift/GSoC2014/Logs
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 basically.
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 clearer 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]
I study the codes but still confused about parts of them. I will take more time being back to understand it later.
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 but still need improving.
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.
Week 4
Monday, June 9
Something.
Tuesday, June 10
Something.
Wednesday, June 11
Something.
Thursday, June 12
Something.
Friday, June 13
Something.