Skip to content

File straightSkeleton.h#

File List > algorithm > straightSkeleton.h

Go to the documentation of this file

// Copyright (c) 2012-2013, IGN France.
// Copyright (c) 2012-2024, Oslandia.
// Copyright (c) 2024-2025, SFCGAL team.
// SPDX-License-Identifier: LGPL-2.0-or-later

#ifndef SFCGAL_ALGORITHM_STRAIGHTSKELETON_H_
#define SFCGAL_ALGORITHM_STRAIGHTSKELETON_H_

#include "SFCGAL/PolyhedralSurface.h"
#include "SFCGAL/algorithm/extrude.h"
#include "SFCGAL/algorithm/union.h"
#include "SFCGAL/config.h"
#include <memory>

namespace SFCGAL {
class Geometry;
class Polygon;
class MultiPolygon;
class MultiLineString;
} // namespace SFCGAL

namespace SFCGAL {
namespace algorithm {
struct NoValidityCheck;

SFCGAL_API auto
approximateMedialAxis(const Geometry &geom) -> std::unique_ptr<MultiLineString>;

SFCGAL_API auto
straightSkeleton(const Geometry &geom, bool autoOrientation = true,
                 bool innerOnly = false, bool outputDistanceInM = false,
                 const double &toleranceAbs = EPSILON)
    -> std::unique_ptr<MultiLineString>;

SFCGAL_API auto
straightSkeleton(const Geometry &geom, bool autoOrientation, NoValidityCheck,
                 bool innerOnly = false, bool outputDistanceInM = false,
                 const double &toleranceAbs = EPSILON)
    -> std::unique_ptr<MultiLineString>;

SFCGAL_API auto
straightSkeleton(const Polygon &geom, bool autoOrientation = true,
                 bool innerOnly = false, bool outputDistanceInM = false,
                 const double &toleranceAbs = EPSILON)
    -> std::unique_ptr<MultiLineString>;

SFCGAL_API auto
straightSkeleton(const MultiPolygon &geom, bool autoOrientation = true,
                 bool innerOnly = false, bool outputDistanceInM = false,
                 const double &toleranceAbs = EPSILON)
    -> std::unique_ptr<MultiLineString>;

SFCGAL_API auto
extrudedStraightSkeleton(const Polygon &geom, double height)
    -> std::unique_ptr<PolyhedralSurface>;

SFCGAL_API auto
extrudeStraightSkeleton(const Geometry &geom, double height)
    -> std::unique_ptr<PolyhedralSurface>;

SFCGAL_API auto
extrudeStraightSkeleton(const Geometry &geom, double building_height,
                        double roof_height)
    -> std::unique_ptr<PolyhedralSurface>;

SFCGAL_API auto
straightSkeletonPartition(const Geometry &geom, bool autoOrientation = true)
    -> std::unique_ptr<PolyhedralSurface>;

SFCGAL_API auto
straightSkeletonPartition(const Polygon &geom, bool autoOrientation = true)
    -> std::unique_ptr<PolyhedralSurface>;

SFCGAL_API auto
straightSkeletonPartition(const MultiPolygon &geom, bool autoOrientation = true)
    -> std::unique_ptr<PolyhedralSurface>;

} // namespace algorithm
} // namespace SFCGAL

#endif