Editing User:Crdueck

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 9: Line 9:
  
 
==Programming Experience==
 
==Programming Experience==
I have experience with C (as well as Scheme and Python), and would be more than happy to have an opportunity to learn some C++ while working on my project.
+
I have experience with C (as well as Scheme and Python), and would be more than happy to have an
 +
opportunity to learn some C++ while working on my project.
  
Most of my experience so far has come from school assignments, [https://projecteuler.net projecteuler.net] (programming challenges with a mathematical twist, check it out if you haven't heard of it before), and small personal pet projects.
+
Most of my experience so far has come from school assignments, [https://projecteuler.net projecteuler.net]
 +
(programming challenges with a mathematical twist, check it out if you haven't heard of it before), and small personal pet projects.
  
 
I have knowledge of data structures and algorithms from my courses at school.
 
I have knowledge of data structures and algorithms from my courses at school.
  
I have a solid foundation in basic university level mathematics (one of my primary reasons for wanting to participate in GSoC is to further my mathematical knowledge in the subject of computer generated models)
+
I have a solid foundation in basic university level mathematics (one of my primary reasons for wanting to participate
 +
in GSoC is to further my mathematical knowledge in the subject of computer generated models)
  
 
==Project Summary==
 
==Project Summary==
 
=====Primitive Volume and Centroid Fuctions=====
 
=====Primitive Volume and Centroid Fuctions=====
Currently, most primitives in BRLCAD do not have volume, centroid, or surface area functions. My goal is to implement volume and centroid functions for many of these primitives.
+
Currently, most primitives in BRLCAD do not have volume, centroid, or surface area functions. My goal is to
 +
implement volume and centroid functions for many of these primitives.
  
The primitives I have chosen are mostly simple solids of revolution or other simple shapes and thus it will be easy to construct explicit formulas for their volumes and centroids.
+
The primitives I have chosen are mostly simple solids of revolution or other simple shapes and thus it will be easy
 +
to construct explicit formulas for their volumes and centroids.
  
As well, I will be refactoring major sections of mged's analyze command so that it makes use of the functions I will be adding. I also plan on cleaning up the comments found in the source code that I will be working on throughout my project.
+
As well, I will be refactoring major sections of mged's analyze command so that it makes use of the functions I will
 +
be adding. I also plan on cleaning up the comments found in the source code that I will be working on throughout my
 +
project.
  
 
==Proposal==
 
==Proposal==
Line 37: Line 44:
 
functions for the cost of becoming acquainted with one new primitive.
 
functions for the cost of becoming acquainted with one new primitive.
  
I plan to test my new functions using mged's analyze command (as this is how the volume and centroid information will primarily be presented to the user. However, separate mged commands could be created to specifically display either the volume or centroid of a primitive. This is outside the scope of my project, but a potential focus for after GSoC). To this end, I will be rewriting substantial portions of libged/analyze.c in order to make use of my newly added functions. There are many opportunities for refactoring in the analyze_{primitive} functions and some opportunities to write new analyze_* functions (there is currently no analyze_pipe). My work will make the source code for analyze considerably clearer and more concise.
+
I plan to test my new functions using mged's analyze command (as this is how the volume and centroid information will primarily be presented to the user. However, separate mged commands could be created to specifically display either the volume or centroid of a primitive. This is outside the scope of my project, but a potential focus for after GSoC). To this end, I will be rewriting substantial portions of libged/analyze.c in ord. To this end, I will be rewriting substantial portions of libged/analyze.c in order to make use of my newly added functions. There are many opportunities for refactoring in the
 +
analyze_{primitive} functions and some opportunities to write new analyze_* functions (there is currently no analyze_pipe).
 +
My work will make the source code for analyze considerably clearer and more concise.
  
I will develop a series of test cases for each primitive using analyze to ensure that my functions are working as expected. This will include verifying that my volume/centroid functions are returning correct values, and verifying that the other outputs of analyze are correct as well.
+
I will develop a series of test cases for each primitive using analyze to ensure that my functions are working as expected.
 +
This will include verifying that my volume/centroid functions are returning correct values, and verifying that the other outputs
 +
of analyze are correct as well.
  
While I am working on the source code for a primitive, I will take time to clean up the comments and move them from the *.c source code file to the appropriate *.h API header file. I will make changes to the formatting if needed, check for typos and other such documentation related tasks. This is a simple task that will not detract from my main focus of implementing volume and centroid functions.
+
While I am working on the source code for a primitive, I will take time to clean up the comments and move them from
 +
the *.c source code file to the appropriate *.h API header file. I will make changes to the formatting if needed,
 +
check for typos and other such documentation related tasks. This is a simple task that will not detract from my main
 +
focus of implementing volume and centroid functions.
  
During the summer I expect to devote much of my time to fulfilling this project. I have no major prior engagements and will be able to spend a full 40+ hours per week on my commitments to BRLCAD. During this time I will make a strong effort to remain in close contact with my mentor, providing updates on my progress, as well as any obstacles I come across or questions I may have related to the project. I will be active on the #brlcad channel and mailing list
+
During the summer I expect to devote much of my time to fulfilling this project. I have no major prior engagements
 +
and will be able to spend a full 40+ hours per week on my commitments to BRLCAD. During this time I will make a strong
 +
effort to remain in close contact with my mentor, providing updates on my progress, as well as any obstacles I come
 +
across or questions I may have related to the project. I will be active on the #brlcad channel and mailing list
 
in an effort to hopefully contribute to the growth of BRLCAD outside the scope of my project.
 
in an effort to hopefully contribute to the growth of BRLCAD outside the scope of my project.
  
Line 74: Line 91:
 
** arb
 
** arb
 
** pipe
 
** pipe
 
==Revised Deliverables==
 
* Volume, surface area and centroid functions for the following:
 
** ell (and sph)
 
** tor
 
** tgc and derivatives (rcc, rec, trc, tec)
 
** arb8
 
** bot
 
** epa
 
** eto
 
** part
 
** rpc
 
** sketch (only surface area)
 
 
* Refactored/new analyze_* functions in libged/analyze.c for:
 
** ell
 
** tor
 
** tgc
 
** arb8
 
** arbn
 
** bot
 
** epa
 
** eto
 
** part
 
** rpc
 
** sketch
 
** ars
 
  
 
==Timeline==
 
==Timeline==
Line 156: Line 146:
 
** final testing, code review to ensure all functions are working as expected
 
** final testing, code review to ensure all functions are working as expected
 
** prepare final evaluation
 
** prepare final evaluation
 
==Revised Timeline==
 
starting from july 13th
 
*Week 8/9 (July 13th to 22nd)
 
** continue work on an area function for the sketch primitive
 
** finish bezier approximation function using circular arcs
 
** implement a tesselation algorithm for the sketch primitive for use in rt_sketch_tess() and rt_sketch_surf_area()
 
  
 
==Me & GSoC==
 
==Me & GSoC==

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)