コード例 #1
0
ファイル: distance3d.cpp プロジェクト: Oslandia/SFCGAL
double distanceSolidGeometry3D( const Solid& gA, const Geometry& gB )
{
    //SFCGAL_DEBUG( boost::format("dispatch distanceSolidGeometry3D(%s,%s)") % gA.asText() % gB.asText() );

    switch ( gB.geometryTypeId() ) {
    case TYPE_POINT:
        return distancePointSolid3D( gB.as< Point >(), gA ); //symetric

    case TYPE_LINESTRING:
        return distanceLineStringSolid3D( gB.as< LineString >(), gA ); //symetric

    case TYPE_TRIANGLE:
        return distanceTriangleSolid3D( gB.as< Triangle >(), gA ); //symetric

    case TYPE_POLYGON:
        return distancePolygonGeometry3D( gB.as< Polygon >(), gA ); //symetric

    case TYPE_SOLID:
        return distanceSolidSolid3D( gA, gB.as< Solid >() );

    case TYPE_MULTIPOINT:
    case TYPE_MULTILINESTRING:
    case TYPE_MULTIPOLYGON:
    case TYPE_MULTISOLID:
    case TYPE_GEOMETRYCOLLECTION:
    case TYPE_TRIANGULATEDSURFACE:
    case TYPE_POLYHEDRALSURFACE:
        return distanceGeometryCollectionToGeometry3D( gB, gA );
    }

    BOOST_THROW_EXCEPTION( Exception(
                               ( boost::format( "distance3D(%s,%s) is not implemented" ) % gA.geometryType() % gB.geometryType() ).str()
                           ) );
}
コード例 #2
0
ファイル: BoundaryVisitor.cpp プロジェクト: hjanetzek/SFCGAL
void BoundaryVisitor::visit( const Solid& g )
{
    BOOST_THROW_EXCEPTION( Exception(
                               ( boost::format( "unsupported type %1% in boundary operation" ) % g.geometryType() ).str()
                           ) );
}