# User:Amalia

## Personal Information

Name: Ngassa Amalia Finjap

Email: ngassafinjap@gmail.com

IRC Nick: amalia237

Github : Ngassa

Time Zone: UTC + 01:00

Brief Background Information: I am Ngassa Amalia, a senior year management science major from the Catholic University Institute of Buea, Cameroon who's interested in participating in Google Summer of Code under LibreCAD. I am ready to work for for over 40+ hours on my project during the summer holidays and will do everything to meet my project goals on nights and weekends even when my tests and examinations come up.

## 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/ and librecad/src/actions/.

## 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. In LibreCAD, the framework of engine (math) support for ellipses can be applied readily to hyperbola/parabola, so only minor extension is needed to get those features. This is primarily because LibreCAD equation solvers can solve quartic equations.

# Hyperbola

The equation of the hyperbola is (x-x0)^2/a^2 – (y-y0)^2/b^2 = 1.

The hyperbola will be defines as a class with data members ;

• center
• majorP ( a in equation above)
• angle1
• angle2
• reversed ( whether it's reversed or not )

Dongxu Li already started implementing the hyperbola primitive in lc_hyperbola.*. In the lc_hyperbola.h interface file, the Hyperbola Data and Hyperpola Entity classes are defined and their data members, corresponding accessor and mutator functions as well as other predicate functions are declared. In the lc_hyperbola.cpp implementation file, the member functions of the above classes are implemented. However, I think functions like the following still have to be implemented (and of course much more)

• Computing the direction of tangents at some points
• Create a hyperbola from equation
• Scale a hyperbola
• Rotate a hyperbola
• Move a hyperbola
• Draw a hyperbola
• Determine if a point is on the hyperbola
• etc still have to be implemented.

I am ready to follow Dongxu Li's instructions to do any clean-up and modifications to the hyperbola primitive which he started implementing.

# Parabola

The equation of the parabola with vertex (x0, y0) which opens downwards is (y-y0)^2 = 4a(x-x0)

The parabola will be defined as a class with data members ;

• vertex,
• focus,
• latus rectum,
• flag for direction in which parabola opens up. Or the rotate functions will come in handy to replace this data member.

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 lc_parabola.h. In the lc_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;

• Computing the position vector of the focus.
• Compute focal length
• Create a parabola from equation
• Find the tangential points and directions from a given point
• Rotate a parabola
• Scale a parabola
• Mirror a parabola against a given axis
• Draw a parabola
• And much more
{"ft_lang_label":"__label__en","ft_lang_prob":0.8696616,"math_prob":0.70743614,"size":10663,"snap":"2020-24-2020-29","text_gpt3_token_len":2589,"char_repetition_ratio":0.14110142,"word_repetition_ratio":0.10361446,"special_character_ratio":0.22151364,"punctuation_ratio":0.09352909,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.952687,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2020-05-31T14:09:58Z\",\"WARC-Record-ID\":\"<urn:uuid:ef2f6b65-996f-4f6a-9161-89ffc6fa2d51>\",\"Content-Length\":\"39603\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:9d6eaa86-06bb-4175-a838-b39629802159>\",\"WARC-Concurrent-To\":\"<urn:uuid:87a8bb4b-08b4-45a2-8e69-797a8c60eb75>\",\"WARC-IP-Address\":\"104.225.5.10\",\"WARC-Target-URI\":\"https://brlcad.org/wiki/User:Amalia\",\"WARC-Payload-Digest\":\"sha1:QBVW23KEKZD5HJTQIPQHPMJPRC5LSSM5\",\"WARC-Block-Digest\":\"sha1:FRYOMC3IS5N5BRKEQLS7DUDYW3YVUKXU\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2020/CC-MAIN-2020-24/CC-MAIN-2020-24_segments_1590347413406.70_warc_CC-MAIN-20200531120339-20200531150339-00446.warc.gz\"}"}