[inkscape-devel] Candidate Proposal for GSoC 2008 Application
I am going to submit the following proposal for GSoC, so if you have some suggestion or some critique, this is the time to tell me your opinions. I'd like thanking Nathan Hurst for his help in getting a more insight into lib2geom codebase and for the support that he provided in making my proposal more complete.
After speaking with Maximilian Albert we concluded that our proposal can advance in parallel without having overlaps, moreover I'm glad to provide any further clarification.
Please tell me about english language mistakes, too !
Best Regards, Marco Cecchetti
=======================PROPOSAL START============================
Name: Marco Cecchetti
Project: lib2geom development
Abstract
Lib2geom will become the core geometric library of Inkscape and it is already an open source project on its own. My project aims to expand the library and give evidence of its skills through the implementation of ad hoc "toys": little interactive applications showing off the power of lib2geom.
Goals
(1) Provide direct support for basic geometric shapes, so making easier the development of educational and technical geometric tools. (2) Implementation of a new curve type that fulfils the traits of a SVG Elliptical Arc and of an "Elliptic Toy" for testing and playing with this curve type. (3) Deploy a "toy" showing off a deformation effect based on the thin plate spline method. Note: the achievability of this task is subject to the time left after having fulfilled goal 1 and 2 and to the ability of building a stable and computationally feasible algorithm implementation of the thin plate spline method.
Details
(1) In order to simplify the implementation of technical drawing tools or the development of a geometric educational version of inkscape, I think that it is useful to have direct support in lib2geom for simple geometric objects such as (infinite) line, ray, angle, triangle, regular poligon, circle, ellipse, arcs and the availability of geometric construction methods for such objects: parallel line, perpendicular line, angle bisector, circle by 3 points, circle by 2 points and tangent to a line, circle by a point and tangent to 2 lines, conic by 5 points. This should be considered a minimal set of implementable features.
(2) I'll provide the SVGEllipticalArc class with a complete implementation of all methods inherited by the abstract Curve class such as bounds computation, evaluation for a given parameter value, conversion to and from a s-power basis path, make up of a reversed arc, extraction of a sub-arc, derivative, and arc transformations. Finally there will be the ability to modify the characterizing parameters: initial and final point, rays length, x-axis inclination angle, large-arc and sweep flags. The Elliptic-Toy will provide the ability of interactively placing the initial and the final arc points, moreover moving the centre of the ellipse, upon which the arc lays, will cause the modification of the length of the ellipse rays and a further point will be used to increase and decrease the inclination of the x-axis. Finally the Elliptic-Toy will offer the possibility to set and unset the large-arc and sweep flags directly.
(3) The thin plate spline (TPS) is the 2D generalization of cubic spline. TSP is a valid tool for making up a continuos warping deformation effect. Its drawback is that it is computationally expensive both to make up the interpolating function and to evaluate such a function on the set of all the input paths. Achieving an implementation computationally affordable requires to utilize ad-hoc algorithms. So there will be the need for: - a phase of analisys based on the study of some articles [1],[2] - one or more pilot-implementations to analize the stability and the computational costs of the designed algorithm - deployment of a toy which allows to play with the developed algorithm in a similar way to the already implemented 2dsb2d toy.
About me
I am a student in mathematics (University of Pisa, Italy) I am always been keen on computer graphics and I am interested in computational geometry. My main programming language is C++, but in the past I also programmed in pascal, fortran 90, assembler, java, javascript, actionscript, bash script. Moreover I am knowgeable about several Boost libraries, XML APIs and the Scalar Vector Graphics Markup Language.
Contributions to open source projects
I'm developing an extension of Boost.Function [3] in order to implement a model of function concept supporting multi-signature and so overloading. [4]
I contributed in the development of a proof of concept svg import filter for Open Office. This import filter has been developed mainly by Fridrich Strba at Novell, my contribute consists in having added svg text element support to the import filter. [5]
After getting in contact with the inkscape community I have browsed a lot of 2geom source codebase and started developing a proof of concept implementation of an SVG Elliptical Arc class and a related toy. [6]
[1] http://www-cse.ucsd.edu/~sjb/pami_tps.pdf [2] http://www.rbfsrus.com/pdfs/moment_siam/moment_siam.pdf [3] http://www.boost.org/doc/html/function.html [4] source code: https://svn.boost.org/svn/boost/sandbox/overload/trunk documentation: http://docs.google.com/View?docid=dfxvjncs_1x6456m [5] source code: http://tinyurl.com/2es9cu [6] source code: http://tinyurl.com/3bznlj
=======================PROPOSAL END==============================
Marco wrote:
I am going to submit the following proposal for GSoC, so if you have some suggestion or some critique, this is the time to tell me your opinions. I'd like thanking Nathan Hurst for his help in getting a more insight into lib2geom codebase and for the support that he provided in making my proposal more complete.
After speaking with Maximilian Albert we concluded that our proposal can advance in parallel without having overlaps, moreover I'm glad to provide any further clarification.
Please tell me about english language mistakes, too !
Fantastic. Thanks you for posting your proposal here. I'm really excited about any work that can be done to enhance lib2geom's readiness for use in Inkscape. While you have mentioned the relationship that your 2geom work would have to Inkscape, perhaps you could give the Inkscape tie more emphasis in your proposal. For example, how your work can directly enable elliptical arc path editing in Inkscape or how it could lend itself easily to advanced LPEs.
Aaron Spike
On Sun, 30 Mar 2008 04:33:34 +0200, Aaron Spike <aaron@...749...> wrote:
Marco wrote:
I am going to submit the following proposal for GSoC, so if you have some suggestion or some critique, this is the time to tell me your opinions. I'd like thanking Nathan Hurst for his help in getting a more insight into lib2geom codebase and for the support that he provided in making my proposal more complete. After speaking with Maximilian Albert we concluded that our proposal can advance in parallel without having overlaps, moreover I'm glad to provide any further clarification. Please tell me about english language mistakes, too !
Fantastic. Thanks you for posting your proposal here. I'm really excited about any work that can be done to enhance lib2geom's readiness for use in Inkscape. While you have mentioned the relationship that your 2geom work would have to Inkscape, perhaps you could give the Inkscape tie more emphasis in your proposal. For example, how your work can directly enable elliptical arc path editing in Inkscape or how it could lend itself easily to advanced LPEs.
Aaron Spike
I'm glad to hear from you that you find my proposal interisting. I added the following section to my proposal, let me know if it's enough.
Marco
=================================================================
Benefits to Inkscape
As I said, the first goal will simplify the development of technical drawing tools as the ones exhibited by Maximilian Albert in his draft proposal [3] and the development of an educational version of Inkscape focused on geometry learning and here I think to programs like Cabri [4]. The fulfil of the second goal will allow to refactor the implementation of the circle/ellipse/arc tool by exploiting the 2geom library. Moreover it will enable the ability to split an arc into two sub-arc and to join two arc laying on the same ellipse without the need to convert previously the elliptical arc into a path. In the end, the availability of a routine to convert back an elliptical arc previously converted in a s-power basis path could be useful in order to make up a live path effect that transforms a path in a circular or elliptical arc according to a likelihood-tollerance parameter. Finally, the third goal will put the basis for the implementation of a warping deformation tool as a live path effect. This could be achieved by defining a grid of control points over a set of paths and then moving one or more control points or even allowing to apply a transformation on a subset of control points.
==================================================================
participants (2)
-
Aaron Spike
-
Marco