Editing User:Amalia
From BRL-CAD
User account "Amalia" is not registered. Please check if you want to create/edit this page.
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 21: | Line 21: | ||
==Project Title: Conic Curve Support for LibreCAD== | ==Project Title: Conic Curve Support for LibreCAD== | ||
==Brief Project Summary== | ==Brief Project Summary== | ||
− | It has been observed that designers start from using small shapes called primitive to attain more complex ones. This project aims at building conic curve support into the LibreCAD software package by implementing the hyperbola and parabola primitives entity types. This will enable users of the LibreCAD software to use conics in modeling the Dulles Airport Tower in Virginia, process just as in the . Hyperbolas in particular can be used in preliminary sketches of beautiful butterflies, nuclear cooling towers, hyperbolic shadows on the wall, hyperbolodial gears in skew shafts and buildings while parabolas can be used by architects to design rainbows, suspension bridges, roller coasters and much more. During this Summer of Code period, I'll be incorporating these two primitives into LibreCAD by defining necessary classes and implementing member functions within interface and implementation files (lc_hyperbola.h, lc_parabola.h and lc_hyperbola.cpp, lc_parabola.cpp) in librecad/src/lib/engine | + | It has been observed that designers start from using small shapes called primitive to attain more complex ones. This project aims at building conic curve support into the LibreCAD software package by implementing the hyperbola and parabola primitives entity types. This will enable users of the LibreCAD software to use conics in modeling the Dulles Airport Tower in Virginia, process just as in the . Hyperbolas in particular can be used in preliminary sketches of beautiful butterflies, nuclear cooling towers, hyperbolic shadows on the wall, hyperbolodial gears in skew shafts and buildings while parabolas can be used by architects to design rainbows, suspension bridges, roller coasters and much more. During this Summer of Code period, I'll be incorporating these two primitives into LibreCAD by defining necessary classes and implementing member functions within interface and implementation files (lc_hyperbola.h, lc_parabola.h and lc_hyperbola.cpp, lc_parabola.cpp) in librecad/src/lib/engine/. |
==Detailed Project Summary== | ==Detailed Project Summary== | ||
− | Here, I give more detailed information on how I intend to build conic curve support into the LibreCAD software package. From my recent studies of the ellipse and circle primitives (rs_circle.* and rs_ellipse.*) in librecad/src/lib/engine/, I observe that for each primitive type is designed as a class with data members which are attributes of that primitive and member functions implementations which define properties of the primitive | + | Here, I give more detailed information on how I intend to build conic curve support into the LibreCAD software package. From my recent studies of the ellipse and circle primitives (rs_circle.* and rs_ellipse.*) in librecad/src/lib/engine/, I observe that for each primitive type is designed as a class with data members which are attributes of that primitive and member functions implementations which define properties of the primitive. |
=Hyperbola= | =Hyperbola= | ||
Line 32: | Line 32: | ||
The hyperbola will be defines as a class with data members ; | The hyperbola will be defines as a class with data members ; | ||
*center | *center | ||
− | *majorP ( | + | *majorP ( furthest point on hyperbola from center on major axis) |
*ratio ( of minor radius to major radius) | *ratio ( of minor radius to major radius) | ||
*angle1 | *angle1 | ||
Line 41: | Line 41: | ||
* Computing the direction of tangents at some points | * Computing the direction of tangents at some points | ||
− | * | + | * Draw a hyperbola |
* Scale a hyperbola | * Scale a hyperbola | ||
* Rotate a hyperbola | * Rotate a hyperbola | ||
* Move a hyperbola | * Move a hyperbola | ||
− | |||
* Determine if a point is on the hyperbola | * Determine if a point is on the hyperbola | ||
* etc still have to be implemented. | * etc still have to be implemented. | ||
Line 60: | Line 59: | ||
The parabola with vertex (x0, y0) which opens upwards is given by the equation (x - xo)^2 = 4a(y – yo). | The parabola with vertex (x0, y0) which opens upwards is given by the equation (x - xo)^2 = 4a(y – yo). | ||
− | To implement the parabola primitive, we define Parabola Data and Parabola Entity classes with their data members and declare their corresponding geometric member functions in | + | To implement the parabola primitive, we define Parabola Data and Parabola Entity classes with their data members and declare their corresponding geometric member functions in rs_parabola.h. In the rs_parabola.cpp implementation file, I'll be implementing the geometric member functions of the aforementioned Parabola classes. |
The geometric member functions to be implemented include; | The geometric member functions to be implemented include; | ||
*Computing the position vector of the focus. | *Computing the position vector of the focus. | ||
*Compute focal length | *Compute focal length | ||
− | |||
*Find the tangential points and directions from a given point | *Find the tangential points and directions from a given point | ||
*Rotate a parabola | *Rotate a parabola | ||
Line 73: | Line 71: | ||
* And much more | * And much more | ||
− | ==Links to | + | ==Links to any code or algorithms you intend to use== |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
====PROJECT TIMELINE==== | ====PROJECT TIMELINE==== | ||
− | |||
==Deliverables == | ==Deliverables == | ||
Line 101: | Line 82: | ||
2. Declare the geometric member functions. | 2. Declare the geometric member functions. | ||
− | 3. Write the | + | 3. Write the rs_hyperbola.cpp file. |
Post Mid-term evaluation goals | Post Mid-term evaluation goals | ||
Line 109: | Line 90: | ||
5. Declare the geometric member functions. | 5. Declare the geometric member functions. | ||
− | 6. Write the | + | 6. Write the rs_parabola.cpp file. |
==Development schedule== | ==Development schedule== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Time availability== | ==Time availability== | ||
I'll be available to start and finish my Google Summer of Code project from May 25th through August 25th 2015 wherein I'll work 40+ hours weekly. To compensate for examination periods in school, I'll work harder during nights and weekends to make sure I meet the goals of my project. | I'll be available to start and finish my Google Summer of Code project from May 25th through August 25th 2015 wherein I'll work 40+ hours weekly. To compensate for examination periods in school, I'll work harder during nights and weekends to make sure I meet the goals of my project. | ||
Line 190: | Line 102: | ||
==Why Me ?== | ==Why Me ?== | ||
− | I got introduced to computers (my dad literally imposed that on my siblings and I) when I attended the LUKMEF computer training in Limbe, Cameroon. After that I got interested in computer programming in C/C++ and the Organizers of the Google Developer Group Buea helped orientate me on how to learn programming. I've used Linux OSes especially Ubuntu since 2013 and would really be happy to get introduced to open source development through LibreCAD through the Google Summer of Code 2015 program | + | I got introduced to computers (my dad literally imposed that on my siblings and I) when I attended the LUKMEF computer training in Limbe, Cameroon. After that I got interested in computer programming in C/C++ and the Organizers of the Google Developer Group Buea helped orientate me on how to learn programming. I've used Linux OSes especially Ubuntu since 2013 and would really be happy to get introduced to open source development through LibreCAD through the Google Summer of Code 2015 program. If I am selected for the program, I will make sure I communicate my progress on a daily basis by chatting on IRC and writing on the mailing lists. |
− | |||
==Anything Else== | ==Anything Else== | ||
I believe that software development is about passion and not about what students major in while at University. Selecting me will really pass across a message that gender and race doesn't matter in open source development with LibreCAD and would encourage more students ( especially girls ) who aren't Computer Science/Engineering majors to get interested in Computer programming. | I believe that software development is about passion and not about what students major in while at University. Selecting me will really pass across a message that gender and race doesn't matter in open source development with LibreCAD and would encourage more students ( especially girls ) who aren't Computer Science/Engineering majors to get interested in Computer programming. | ||
− | |||
− | |||
− | |||
− |