
Geometry : 
Subject: [geometry] Compiling intersection() after registering custom point for use with the model box, ring and polygon
From: Andrew Hundt (athundt_at_[hidden])
Date: 20140530 14:09:10
I'm trying to use intersection(box,ring,polygon); in 2D, but I'm getting
compiler errors that I think are tied to registration. I'm using a
boost::geometry::model::* for the box, ring and polygon in this call with a
custom coordinate type. I had assumed that models for box, ring, and
polygon don't need to be registered. Perhaps that is not correct?
The coordinate is defined as follows:
template<size_t Dim, typename T, typename U = T>
struct Coordinate;
I register the tag, dimension, coordinate_type, and coordinate_system, but
I think the most relevant component tied to this error is when I register
the coordinate's 'get()' and 'set()' functions as follows (apologies if the
email client messes with spacing):
template<size_t Dim, typename T, typename U, size_t Index, typename Enable>
struct access<Coordinate<Dim,T,U> , Index, Enable>
{
static inline typename Coordinate<Dim,T,U>::value_type
get(Coordinate<Dim,T,U> const& p) { return p.operator[](Index); }
static inline void set(Coordinate<Dim,T,U> & p, typename
Coordinate<Dim,T,U>::value_type const& value) { p.operator[](Index) =
value; }
};
Here is the error:
/usr/local/include/boost/geometry/core/access.hpp:393:24: No member named
'set' in
'boost::geometry::core_dispatch::indexed_access<boost::geometry::polygon_tag,
boost::geometry::model::polygon<Coordinate<2, int, Coordinate<2, int,
DynamicCellSize<2, Coordinate<2, double, double>, int> > >, true, true,
std::vector, std::vector, std::allocator, std::allocator>, int, 0, 0,
boost::integral_constant<bool, false> >'
Can anyone provide advice on what steps I need to take to make sure the
intersection call will compile correctly?
Thanks in advance.
Cheers!
Andrew Hundt
Geometry list run by mateusz at loskot.net