Changes between Version 5 and Version 6 of SoC2017


Ignore:
Timestamp:
Feb 8, 2017, 5:42:51 PM (6 years ago)
Author:
awulkiew
Comment:

Add Boost.Geometry GSoC 2017 projects.

Legend:

Unmodified
Added
Removed
Modified
  • SoC2017

    v5 v6  
    2432433. fit in one header file
    244244
     245=== 3. Boost.Geometry ===
     246
     247Potential mentors: Vissarion Fysikopoulos, Adam Wulkiewicz
     248
     249All projects requires knowledge of C++ template metaprogramming techniques.
     250
     251==== Background ====
     252
     253Boost.Geometry part of collection of the Boost C++ Libraries, defines concepts, primitives and algorithms for solving geometry problems.
     254
     255See http://www.boost.org/libs/geometry
     256
     257==== PROJECT 1. Filtering of compare distance predicates. ====
     258
     259In some algorithms there is the need to compare two distances of two point pairs. That is, use the predicate compare_distance(p1, p2, q1, q2) that returns (1, 0, -1) if the length of segment (p1, p2) is larger, equal or smaller respectively than the length of segment (q1, q2).
     260 
     261Since, computing distances could be costly especially when computing on the ellipsoid (i.e. geographic computations) we would like to avoid that computation whenever possible.
     262
     263One approach could be to compute the 3D cartesian distances first and if these numbers are not "far enough" then fall back to expensive geographic distance calculation otherwise return the result by comparing those numbers obtained by less expensive cartesian compuation. There are some issues that should be further clarified, e.g. declare the "far enough" value that works in practice. Several other approaches could be used and tested, e.g. perform a local spheroid approximation and return the 2D distance.
     264
     265The project will require the student to understand parts of Boost.Geometry, in particular algorithms and strategies. Some knowledge of computational geometry is a plus.
     266
     267==== PROJECT 2. R-tree serialization. ====
     268
     269The goal is to implement serialization of Boost.Geometry R-tree with Boost.Serialization library. It should be done in a form of optional extension, i.e. Boost.Geometry shouldn't depend on Boost.Serialization by default. The example result could look like this:
     270
     271{{{
     272#!c++
     273#include <boost/archive/binary_oarchive.hpp>
     274#include <boost/geometry.hpp>
     275#include <boost/geometry/index/rtree.hpp>
     276#include <boost/geometry/index/serialization/rtree.hpp>
     277
     278int main() {
     279    namespace bg = boost::geometry;
     280    namespace bgi = bg::index;
     281    typedef bg::model::point<double, 2, bg::cs::cartesian> point_type;
     282    typedef bg::model::box<point_type> box_type;
     283
     284    bgi::rtree<box_type, bgi::rstar<16> > rtree;
     285
     286    // fill rtree with data
     287    std::ofstream file("serialized_rtree.bin",
     288                       std::ios::binary | std::ios::trunc);
     289    boost::archive::binary_oarchive archive(file);
     290    archive << rtree;
     291}
     292}}}
     293
     294The project will require the student to understand parts of Boost.Geometry, in particular primitives and the internals of R-tree and the interface of Boost.Serialization library.
     295
     296==== PROJECT 3. Nearly antipodal points distance accuracy improvement. ====
     297
     298Compute accurately the distance between two nearly antipodal points on the ellipsoid of revolution. Currently Boost.Geometry does not handle this case correctly. A solution is proposed in [1] as a solution of a so called astroid problem. It is also implemented in C++ in [2].
     299
     300 * [1] Karney - Algorithms for geodesics (https://arxiv.org/pdf/1109.4448.pdf)
     301 * [2] http://geographiclib.sourceforge.net
     302
     303==== Potential project extension funded by Boost
     304
     305N/A
     306
    245307'''[wiki:GSoCIdeaTemplate To any potential mentor adding a proposal HERE please use this template]'''