SFCGAL  2.2.0
Typedefs | Enumerations | Functions
Public C API

Typedefs

typedef uint32_t srid_t
 SRID type. More...
 
typedef void sfcgal_geometry_t
 sfcgal_geometry_t is an opaque pointer type that is used to represent a pointer to SFCGAL::Geometry More...
 
typedef void sfcgal_prepared_geometry_t
 Opaque type that represents the C++ type SFCGAL::PreparedGeometry. More...
 
typedef int(* sfcgal_error_handler_t) (const char *,...)
 Warning and error handlers. More...
 

Enumerations

enum  sfcgal_geometry_type_t {
  SFCGAL_TYPE_POINT = 1, SFCGAL_TYPE_LINESTRING = 2, SFCGAL_TYPE_POLYGON = 3, SFCGAL_TYPE_MULTIPOINT = 4,
  SFCGAL_TYPE_MULTILINESTRING = 5, SFCGAL_TYPE_MULTIPOLYGON = 6, SFCGAL_TYPE_GEOMETRYCOLLECTION = 7, SFCGAL_TYPE_POLYHEDRALSURFACE = 15,
  SFCGAL_TYPE_TRIANGULATEDSURFACE = 16, SFCGAL_TYPE_TRIANGLE = 17, SFCGAL_TYPE_SOLID = 101, SFCGAL_TYPE_MULTISOLID = 102
}
 Geometric types. More...
 
enum  sfcgal_buffer3d_type_t { SFCGAL_BUFFER3D_ROUND, SFCGAL_BUFFER3D_CYLSPHERE, SFCGAL_BUFFER3D_FLAT }
 Buffer3D types. More...
 

Functions

SFCGAL_API void sfcgal_set_geometry_validation (int enabled)
 Set the geometry validation mode. More...
 
SFCGAL_API sfcgal_geometry_type_t sfcgal_geometry_type_id (const sfcgal_geometry_t *)
 Returns the type of a given geometry. More...
 
SFCGAL_API void sfcgal_geometry_type (const sfcgal_geometry_t *, char **type, size_t *typeLen)
 Returns the type of a given geometry as a string. More...
 
SFCGAL_API int sfcgal_geometry_dimension (const sfcgal_geometry_t *)
 Returns the dimension of a given geometry ( 0 : punctual, 1 : curve, ...) More...
 
SFCGAL_API int sfcgal_geometry_is_valid (const sfcgal_geometry_t *)
 Tests if the given geometry is valid or not. More...
 
SFCGAL_API int sfcgal_geometry_is_valid_detail (const sfcgal_geometry_t *geom, char **invalidity_reason, sfcgal_geometry_t **invalidity_location)
 Tests if the given geometry is valid or not And return details in case of invalidity. More...
 
SFCGAL_API int sfcgal_geometry_is_complexity_detail (const sfcgal_geometry_t *geom, char **invalidity_reason, sfcgal_geometry_t **invalidity_location)
 
SFCGAL_API int sfcgal_geometry_is_simple (const sfcgal_geometry_t *)
 Tests if the given geometry is simple or not. More...
 
SFCGAL_API int sfcgal_geometry_is_simple_detail (const sfcgal_geometry_t *geom, char **complexity_reason)
 Tests if the given geometry is simple or not And return details in case of complexity. More...
 
SFCGAL_API int sfcgal_geometry_is_3d (const sfcgal_geometry_t *)
 Tests if the given geometry is 3D or not. More...
 
SFCGAL_API int sfcgal_geometry_is_measured (const sfcgal_geometry_t *)
 Tests if the given geometry is measured (has an m) or not. More...
 
SFCGAL_API int sfcgal_geometry_is_empty (const sfcgal_geometry_t *)
 Tests if the given geometry is empty or not. More...
 
SFCGAL_API int sfcgal_geometry_drop_z (sfcgal_geometry_t *)
 Drops the z coordinate of the geometry. More...
 
SFCGAL_API int sfcgal_geometry_drop_m (sfcgal_geometry_t *)
 Drops the m coordinate of the geometry. More...
 
SFCGAL_API int sfcgal_geometry_force_z (sfcgal_geometry_t *geom, double defaultZ)
 Adds a z-dimension to the geometry, initialized to a preset value. More...
 
SFCGAL_API int sfcgal_geometry_force_m (sfcgal_geometry_t *geom, double defaultM)
 Adds a m-dimension to the geometry, initialized to a preset value. More...
 
SFCGAL_API void sfcgal_geometry_swap_xy (sfcgal_geometry_t *)
 Swaps the x and y coordinates of the geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_clone (const sfcgal_geometry_t *)
 Returns a deep clone of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_delete (sfcgal_geometry_t *)
 Deletes a given geometry. More...
 
SFCGAL_API size_t sfcgal_geometry_num_geometries (const sfcgal_geometry_t *geometryCollection)
 Returns the number of geometries of the given geometry collection. More...
 
SFCGAL_API void sfcgal_geometry_as_text (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Returns a WKT representation of the given geometry using CGAL exact integer fractions as coordinate values. More...
 
SFCGAL_API void sfcgal_geometry_as_text_decim (const sfcgal_geometry_t *, int numDecimals, char **buffer, size_t *len)
 Returns a WKT representation of the given geometry using floating point coordinate values. More...
 
SFCGAL_API void sfcgal_geometry_as_wkb (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Returns a WKB representation of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_hexwkb (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Returns a WKB representation as hexadecimal of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_vtk (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Creates a VTK string of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_vtk_file (const sfcgal_geometry_t *, const char *filename)
 Creates a VTK file of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_obj_file (const sfcgal_geometry_t *, const char *filename)
 Creates a OBJ file of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_obj (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Creates a OBJ string of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_stl (const sfcgal_geometry_t *, char **buffer, size_t *len)
 Creates a STL string of the given geometry. More...
 
SFCGAL_API void sfcgal_geometry_as_stl_file (const sfcgal_geometry_t *, const char *filename)
 Creates a STL file of the given geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_point_create ()
 Creates an empty point. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_point_create_from_xy (double x, double y)
 Creates a point from two X and Y coordinates. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_point_create_from_xyz (double x, double y, double z)
 Creates a point from three X, Y and Z coordinates. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_point_create_from_xym (double x, double y, double m)
 Creates a point from three X, Y and M coordinates. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_point_create_from_xyzm (double x, double y, double z, double m)
 Creates a point from four X, Y, Z and M coordinates. More...
 
SFCGAL_API double sfcgal_point_x (const sfcgal_geometry_t *)
 Returns the X coordinate of the given Point. More...
 
SFCGAL_API double sfcgal_point_y (const sfcgal_geometry_t *)
 Returns the Y coordinate of the given Point. More...
 
SFCGAL_API double sfcgal_point_z (const sfcgal_geometry_t *)
 Returns the Z coordinate of the given Point. More...
 
SFCGAL_API double sfcgal_point_m (const sfcgal_geometry_t *)
 Returns the M coordinate of the given Point. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_linestring_create ()
 Creates an empty LineString. More...
 
SFCGAL_API size_t sfcgal_linestring_num_points (const sfcgal_geometry_t *linestring)
 Returns the number of points of the given LineString. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_linestring_point_n (const sfcgal_geometry_t *linestring, size_t i)
 Returns the ith point of a given LineString. More...
 
SFCGAL_API void sfcgal_linestring_add_point (sfcgal_geometry_t *linestring, sfcgal_geometry_t *point)
 Adds a point to a LineString. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_triangle_create ()
 Creates an empty Triangle. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_triangle_create_from_points (const sfcgal_geometry_t *pta, const sfcgal_geometry_t *ptb, const sfcgal_geometry_t *ptc)
 Creates a Triangle from three given Point. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_triangle_vertex (const sfcgal_geometry_t *triangle, int i)
 Returns one the Triangle's vertex as a Point. More...
 
SFCGAL_API void sfcgal_triangle_set_vertex (sfcgal_geometry_t *triangle, int i, const sfcgal_geometry_t *vertex)
 Sets one vertex of a Triangle. More...
 
SFCGAL_API void sfcgal_triangle_set_vertex_from_xy (sfcgal_geometry_t *triangle, int i, double x, double y)
 Sets one vertex of a Triangle from two coordinates. More...
 
SFCGAL_API void sfcgal_triangle_set_vertex_from_xyz (sfcgal_geometry_t *triangle, int i, double x, double y, double z)
 Sets one vertex of a Triangle from three coordinates. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_polygon_create ()
 Creates an empty Polygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_polygon_create_from_exterior_ring (sfcgal_geometry_t *ring)
 Creates an empty Polygon from an extrior ring. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_polygon_exterior_ring (const sfcgal_geometry_t *polygon)
 Returns the exterior ring of a given Polygon. More...
 
SFCGAL_API size_t sfcgal_polygon_num_interior_rings (const sfcgal_geometry_t *polygon)
 Returns the number of interior rings of a given Polygon. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_polygon_interior_ring_n (const sfcgal_geometry_t *polygon, size_t i)
 Returns the ith interior ring of a given Polygon. More...
 
SFCGAL_API void sfcgal_polygon_add_interior_ring (sfcgal_geometry_t *polygon, sfcgal_geometry_t *ring)
 Adds an interior ring to a given Polygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_collection_create ()
 Creates an empty GeometryCollection. More...
 
SFCGAL_API size_t sfcgal_geometry_collection_num_geometries (const sfcgal_geometry_t *collection)
 Returns the number of geometries of a given GeometryCollection. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_geometry_collection_geometry_n (const sfcgal_geometry_t *collection, size_t i)
 Returns the ith geometry of a GeometryCollection. More...
 
SFCGAL_API void sfcgal_geometry_collection_set_geometry_n (sfcgal_geometry_t *collection, sfcgal_geometry_t *geometry, size_t i)
 Set the ith geometry of a given GeometryCollection. More...
 
SFCGAL_API void sfcgal_geometry_collection_add_geometry (sfcgal_geometry_t *collection, sfcgal_geometry_t *geometry)
 Adds a Geometry to a given GeometryCollection. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_multi_point_create ()
 Creates an empty MultiPoint. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_multi_linestring_create ()
 Creates an empty MultiLineString. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_multi_polygon_create ()
 Creates an empty MultiPolygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_multi_solid_create ()
 Creates an empty MultiSolid. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_polyhedral_surface_create ()
 Creates an empty PolyhedralSurface. More...
 
SFCGAL_API size_t sfcgal_polyhedral_surface_num_patches (const sfcgal_geometry_t *polyhedral)
 Returns the number of patches of a given PolyhedralSurface. More...
 
SFCGAL_API size_t sfcgal_polyhedral_surface_num_polygons (const sfcgal_geometry_t *polyhedral)
 Returns the number of polygons of a given PolyhedralSurface. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_polyhedral_surface_patch_n (const sfcgal_geometry_t *polyhedral, size_t i)
 Returns the ith patch of a given PolyhedralSurface. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_polyhedral_surface_polygon_n (const sfcgal_geometry_t *polyhedral, size_t i)
 Returns the ith polygon of a given PolyhedralSurface. More...
 
SFCGAL_API void sfcgal_polyhedral_surface_add_patch (sfcgal_geometry_t *polyhedral, sfcgal_geometry_t *patch)
 Adds a Patch to a given PolyhedralSurface. More...
 
SFCGAL_API void sfcgal_polyhedral_surface_set_patch_n (sfcgal_geometry_t *polyhedral, sfcgal_geometry_t *patch, size_t i)
 Set the ith patch of a given PolyhedralSurface. More...
 
SFCGAL_API void sfcgal_polyhedral_surface_add_polygon (sfcgal_geometry_t *polyhedral, sfcgal_geometry_t *polygon)
 Adds a Polygon to a given PolyhedralSurface. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_triangulated_surface_create ()
 Creates an empty TriangulatedSurface. More...
 
SFCGAL_API size_t sfcgal_triangulated_surface_num_patches (const sfcgal_geometry_t *tin)
 Returns the number of patches of a given TriangulatedSurface. More...
 
SFCGAL_API size_t sfcgal_triangulated_surface_num_triangles (const sfcgal_geometry_t *tin)
 Returns the number of triangles of a given TriangulatedSurface. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_triangulated_surface_patch_n (const sfcgal_geometry_t *tin, size_t i)
 Returns the ith Patch of a given TriangulatedSurface. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_triangulated_surface_triangle_n (const sfcgal_geometry_t *tin, size_t i)
 Returns the ith Triangle of a given TriangulatedSurface. More...
 
SFCGAL_API void sfcgal_triangulated_surface_set_patch_n (sfcgal_geometry_t *tin, sfcgal_geometry_t *patch, size_t i)
 Set the ith patch of a given TriangulatedSurface. More...
 
SFCGAL_API void sfcgal_triangulated_surface_add_patch (sfcgal_geometry_t *tin, sfcgal_geometry_t *patch)
 Adds a Patch to a given TriangulatedSurface. More...
 
SFCGAL_API void sfcgal_triangulated_surface_add_triangle (sfcgal_geometry_t *tin, sfcgal_geometry_t *triangle)
 Adds a Triangle to a given TriangulatedSurface. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_solid_create ()
 Creates an empty Solid. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_solid_create_from_exterior_shell (sfcgal_geometry_t *shell)
 Creates a Solid from an exterior shell. More...
 
SFCGAL_API size_t sfcgal_solid_num_shells (const sfcgal_geometry_t *solid)
 Returns the number of shells of a given Solid. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_solid_shell_n (const sfcgal_geometry_t *solid, size_t i)
 Returns the ith shell of a given Solid. More...
 
SFCGAL_API void sfcgal_solid_add_interior_shell (sfcgal_geometry_t *solid, sfcgal_geometry_t *shell)
 Adds a shell to a given Solid. More...
 
SFCGAL_API void sfcgal_solid_set_exterior_shell (sfcgal_geometry_t *solid, sfcgal_geometry_t *shell)
 Set the exterior shell of a given Solid. More...
 
SFCGAL_API sfcgal_prepared_geometry_tsfcgal_prepared_geometry_create ()
 Creates an empty PreparedGeometry. More...
 
SFCGAL_API sfcgal_prepared_geometry_tsfcgal_prepared_geometry_create_from_geometry (sfcgal_geometry_t *geometry, srid_t srid)
 Creates a PreparedGeometry from a Geometry and an SRID. More...
 
SFCGAL_API void sfcgal_prepared_geometry_delete (sfcgal_prepared_geometry_t *prepared)
 Deletes a given PreparedGeometry. More...
 
SFCGAL_API const sfcgal_geometry_tsfcgal_prepared_geometry_geometry (const sfcgal_prepared_geometry_t *prepared)
 Returns the Geometry associated with a given PreparedGeometry. More...
 
SFCGAL_API void sfcgal_prepared_geometry_set_geometry (sfcgal_prepared_geometry_t *prepared, sfcgal_geometry_t *geometry)
 Sets the Geometry associated with the given PreparedGeometry. More...
 
SFCGAL_API srid_t sfcgal_prepared_geometry_srid (const sfcgal_prepared_geometry_t *prepared)
 Returns SRID associated with a given PreparedGeometry. More...
 
SFCGAL_API void sfcgal_prepared_geometry_set_srid (sfcgal_prepared_geometry_t *prepared, srid_t)
 Sets SRID associated with a given PreparedGeometry. More...
 
SFCGAL_API void sfcgal_prepared_geometry_as_ewkt (const sfcgal_prepared_geometry_t *prepared, int num_decimals, char **buffer, size_t *len)
 Returns an EWKT representation of the given PreparedGeometry. More...
 
SFCGAL_API int sfcgal_geometry_intersects (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Tests the intersection of geom1 and geom2. More...
 
SFCGAL_API int sfcgal_geometry_intersects_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Tests the 3D intersection of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_intersection (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the intersection of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_intersection_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the 3D intersection of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_difference (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the difference of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_difference_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the 3D difference of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_union (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the union of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_union_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the 3D union of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_convexhull (const sfcgal_geometry_t *geom)
 Returns the convex hull of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_convexhull_3d (const sfcgal_geometry_t *geom)
 Returns the 3D convex hull of geom. More...
 
SFCGAL_API double sfcgal_geometry_volume (const sfcgal_geometry_t *geom)
 Returns the volume of geom (must be a volume) More...
 
SFCGAL_API double sfcgal_geometry_area (const sfcgal_geometry_t *geom)
 Returns the area of geom. More...
 
SFCGAL_API double sfcgal_geometry_area_3d (const sfcgal_geometry_t *geom)
 Returns the 3D area of geom. More...
 
SFCGAL_API int sfcgal_geometry_is_planar (const sfcgal_geometry_t *geom)
 Tests if the given Geometry is planar. More...
 
SFCGAL_API int sfcgal_geometry_orientation (const sfcgal_geometry_t *geom)
 Returns the orientation of the given Polygon -1 for a counter clockwise orientation 1 for a clockwise orientation 0 for an invalid or undetermined orientation. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_tesselate (const sfcgal_geometry_t *geom)
 Returns a tesselation of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_triangulate_2dz (const sfcgal_geometry_t *geom)
 Returns a triangulation of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_extrude (const sfcgal_geometry_t *geom, double ex, double ey, double ez)
 Returns an extrusion of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_make_solid (const sfcgal_geometry_t *geom)
 Convert a PolyhedralSurface to a Solid. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_force_lhr (const sfcgal_geometry_t *geom)
 Force a Left Handed Rule on the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_force_rhr (const sfcgal_geometry_t *geom)
 Force a Right Handed Rule on the given Geometry. More...
 
SFCGAL_API double sfcgal_geometry_distance (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Computes the distance of the two given Geometry objects. More...
 
SFCGAL_API double sfcgal_geometry_distance_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Computes the 3D distance of the two given Geometry objects. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_round (const sfcgal_geometry_t *geom, int r)
 Round coordinates of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_minkowski_sum (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns the minkowski sum geom1 + geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_offset_polygon (const sfcgal_geometry_t *geom, double radius)
 Returns the offset polygon of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_straight_skeleton (const sfcgal_geometry_t *geom)
 Returns the straight skeleton of the given Geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_straight_skeleton_distance_in_m (const sfcgal_geometry_t *geom)
 Returns the straight skeleton of the given Geometry with the distance to the border as M coordinate. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_extrude_straight_skeleton (const sfcgal_geometry_t *geom, double height)
 Returns the extrude straight skeleton of the given Polygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_extrude_polygon_straight_skeleton (const sfcgal_geometry_t *geom, double building_height, double roof_height)
 Returns the union of the polygon z-extrusion (with respect to building_height) and the extrude straight skeleton (with respect to roof_height) of the given Polygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_approximate_medial_axis (const sfcgal_geometry_t *geom)
 Returns the approximate medial axis for the given Polygon Approximate medial axis is based on straight skeleton. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_straight_skeleton_partition (const sfcgal_geometry_t *geom, bool autoOrientation)
 Returns the straight skeleton partition for the given Polygon. More...
 
SFCGAL_API int sfcgal_geometry_covers (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Tests the 2D coverage of geom1 and geom2. More...
 
SFCGAL_API int sfcgal_geometry_covers_3d (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Tests the 3D coverage of geom1 and geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_line_sub_string (const sfcgal_geometry_t *geom, double start, double end)
 Returns the substring of the given LineString between fractional distances. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_alpha_shapes (const sfcgal_geometry_t *geom, double alpha, bool allow_holes)
 Returns the alpha shapes of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_optimal_alpha_shapes (const sfcgal_geometry_t *geom, bool allow_holes, size_t nb_components)
 Returns the optimal alpha shapes of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_alpha_wrapping_3d (const sfcgal_geometry_t *geom, size_t relative_alpha, size_t relative_offset)
 Returns the 3D alpha wrapping of a geometry. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_envelope (const sfcgal_geometry_t *geom)
 Returns the envelope of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_envelope_3d (const sfcgal_geometry_t *geom)
 Returns the 3d envelope of geom. More...
 
SFCGAL_API double sfcgal_geometry_length (const sfcgal_geometry_t *geom)
 Returns the 2D length of geom. More...
 
SFCGAL_API double sfcgal_geometry_length_3d (const sfcgal_geometry_t *geom)
 Returns the 3D length of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_boundary (const sfcgal_geometry_t *geom)
 Returns the boundary of geom. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_centroid (const sfcgal_geometry_t *geom)
 Returns a Point representing the geometry centroid. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_centroid_3d (const sfcgal_geometry_t *geom)
 Returns a Point representing the geometry centroid. More...
 
SFCGAL_API int sfcgal_geometry_is_equals (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2)
 Returns true if geom1 is equals to geom2. More...
 
SFCGAL_API int sfcgal_geometry_is_almost_equals (const sfcgal_geometry_t *geom1, const sfcgal_geometry_t *geom2, double tolerance)
 Returns true if geom1 is almost equals to geom2. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_y_monotone_partition_2 (const sfcgal_geometry_t *geom)
 Returns the y monotone partition of a geometry (polygon without hole) More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_approx_convex_partition_2 (const sfcgal_geometry_t *geom)
 Returns the approximal convex partition of a geometry (polygon without hole) More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_greene_approx_convex_partition_2 (const sfcgal_geometry_t *geom)
 Returns the greene approximal convex partition of a geometry (polygon without hole) More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_optimal_convex_partition_2 (const sfcgal_geometry_t *geom)
 Returns the optimal convex partition of a geometry (polygon without hole) More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_visibility_point (const sfcgal_geometry_t *polygon, const sfcgal_geometry_t *point)
 Returns the visibility polygon of a Point inside a Polygon. More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_visibility_segment (const sfcgal_geometry_t *polygon, const sfcgal_geometry_t *pointA, const sfcgal_geometry_t *pointB)
 build the visibility polygon of the segment [pointA ; pointB] on a Polygon More...
 
SFCGAL_API sfcgal_geometry_tsfcgal_geometry_buffer3d (const sfcgal_geometry_t *geom, double radius, int segments, sfcgal_buffer3d_type_t buffer_type)
 Computes a 3D buffer around a geometry. More...
 
SFCGAL_API void sfcgal_set_error_handlers (sfcgal_error_handler_t warning_handler, sfcgal_error_handler_t error_handler)
 Sets the error handlers. More...
 
SFCGAL_API void sfcgal_set_alloc_handlers (sfcgal_alloc_handler_t malloc_handler, sfcgal_free_handler_t free_handler)
 Sets the allocation handlers. More...
 
SFCGAL_API void sfcgal_free_buffer (void *buffer)
 Delete a buffer previously allocated and returned by SFCGAL. More...
 
SFCGAL_API void sfcgal_init ()
 This function must be called before all the other one. More...
 
SFCGAL_API const char * sfcgal_version ()
 Get version. More...
 
SFCGAL_API const char * sfcgal_full_version ()
 Get full version (including CGAL and Boost versions) More...
 

Detailed Description

Typedef Documentation

typedef int(* sfcgal_error_handler_t) (const char *,...)

Warning and error handlers.

typedef void sfcgal_geometry_t

sfcgal_geometry_t is an opaque pointer type that is used to represent a pointer to SFCGAL::Geometry

Opaque type that represents the C++ type SFCGAL::PreparedGeometry.

typedef uint32_t srid_t

SRID type.

Enumeration Type Documentation

Buffer3D types.

Enumerator
SFCGAL_BUFFER3D_ROUND 
SFCGAL_BUFFER3D_CYLSPHERE 
SFCGAL_BUFFER3D_FLAT 

Geometric types.

Enumerator
SFCGAL_TYPE_POINT 
SFCGAL_TYPE_LINESTRING 
SFCGAL_TYPE_POLYGON 
SFCGAL_TYPE_MULTIPOINT 
SFCGAL_TYPE_MULTILINESTRING 
SFCGAL_TYPE_MULTIPOLYGON 
SFCGAL_TYPE_GEOMETRYCOLLECTION 
SFCGAL_TYPE_POLYHEDRALSURFACE 
SFCGAL_TYPE_TRIANGULATEDSURFACE 
SFCGAL_TYPE_TRIANGLE 
SFCGAL_TYPE_SOLID 
SFCGAL_TYPE_MULTISOLID 

Function Documentation

SFCGAL_API sfcgal_geometry_t* sfcgal_approx_convex_partition_2 ( const sfcgal_geometry_t geom)

Returns the approximal convex partition of a geometry (polygon without hole)

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API void sfcgal_free_buffer ( void *  buffer)

Delete a buffer previously allocated and returned by SFCGAL.

Parameters
buffera buffer previously allocated and returned by SFCGAL
SFCGAL_API const char* sfcgal_full_version ( )

Get full version (including CGAL and Boost versions)

SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_alpha_shapes ( const sfcgal_geometry_t geom,
double  alpha,
bool  allow_holes 
)

Returns the alpha shapes of geom.

Precondition
isValid(geom) == true
alpha >= 0
Postcondition
isValid(return) == true
Parameters
geomthe input geometry
alphaIt can have values from 0 to infinity. Smaller alpha values produce more concave results. Alpha values greater than some data-dependent value produce the convex hull of the input.
allow_holesdefines whether alpha shapes are allowed to contain holes
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_alpha_wrapping_3d ( const sfcgal_geometry_t geom,
size_t  relative_alpha,
size_t  relative_offset 
)

Returns the 3D alpha wrapping of a geometry.

Precondition
isValid(geom) == true
relative_alpha >= 0
relative_offset >= 0
Postcondition
isValid(return) == true
Parameters
geominput geometry
relative_alphaThis parameter is used to determine which features will appear in the output. A small relative_alpha will produce an output less complex but less faithful to the input.
relative_offsetThis parameter controls the tightness of the result. A large relative_offset parameter will tend to better preserve sharp features as projection. If this parameter is equal to 0, it is computed from the alpha parameter
Returns
A PolyhedralSurface representing the 3D alpha wrapping of the geometry
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_approximate_medial_axis ( const sfcgal_geometry_t geom)

Returns the approximate medial axis for the given Polygon Approximate medial axis is based on straight skeleton.

Precondition
isValid(geom) == true
SFCGAL_API double sfcgal_geometry_area ( const sfcgal_geometry_t geom)

Returns the area of geom.

Precondition
isValid(geom) == true
SFCGAL_API double sfcgal_geometry_area_3d ( const sfcgal_geometry_t geom)

Returns the 3D area of geom.

Precondition
isValid(geom) == true
SFCGAL_API void sfcgal_geometry_as_hexwkb ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Returns a WKB representation as hexadecimal of the given geometry.

Postcondition
buffer is returned allocated and must be freed by the caller
SFCGAL_API void sfcgal_geometry_as_obj ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Creates a OBJ string of the given geometry.

SFCGAL_API void sfcgal_geometry_as_obj_file ( const sfcgal_geometry_t ,
const char *  filename 
)

Creates a OBJ file of the given geometry.

SFCGAL_API void sfcgal_geometry_as_stl ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Creates a STL string of the given geometry.

SFCGAL_API void sfcgal_geometry_as_stl_file ( const sfcgal_geometry_t ,
const char *  filename 
)

Creates a STL file of the given geometry.

SFCGAL_API void sfcgal_geometry_as_text ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Returns a WKT representation of the given geometry using CGAL exact integer fractions as coordinate values.

Postcondition
buffer is returned allocated and must be freed by the caller
SFCGAL_API void sfcgal_geometry_as_text_decim ( const sfcgal_geometry_t ,
int  numDecimals,
char **  buffer,
size_t *  len 
)

Returns a WKT representation of the given geometry using floating point coordinate values.

Floating point precision can be set via the numDecimals parameter. Setting numDecimals to -1 yields the same result as sfcgal_geometry_as_text.

Postcondition
buffer is returned allocated and must be freed by the caller
SFCGAL_API void sfcgal_geometry_as_vtk ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Creates a VTK string of the given geometry.

SFCGAL_API void sfcgal_geometry_as_vtk_file ( const sfcgal_geometry_t ,
const char *  filename 
)

Creates a VTK file of the given geometry.

SFCGAL_API void sfcgal_geometry_as_wkb ( const sfcgal_geometry_t ,
char **  buffer,
size_t *  len 
)

Returns a WKB representation of the given geometry.

Postcondition
buffer is returned allocated and must be freed by the caller
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_boundary ( const sfcgal_geometry_t geom)

Returns the boundary of geom.

Precondition
isValid(geom) == true
Postcondition
the caller is responsible for the boundary deallocation.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_buffer3d ( const sfcgal_geometry_t geom,
double  radius,
int  segments,
sfcgal_buffer3d_type_t  buffer_type 
)

Computes a 3D buffer around a geometry.

Parameters
geomThe input geometry (must be a Point or LineString)
radiusThe buffer radius
segmentsThe number of segments to use for approximating curved surfaces
buffer_typeThe type of buffer to compute (ROUND, CYLSPHERE, or FLAT)
Returns
A new geometry representing the 3D buffer
Precondition
isValid(geom) == true
radius > 0
segments > 3
Postcondition
isValid(return) == true
The returned geometry must be deallocated by the caller
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_centroid ( const sfcgal_geometry_t geom)

Returns a Point representing the geometry centroid.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_centroid_3d ( const sfcgal_geometry_t geom)

Returns a Point representing the geometry centroid.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_clone ( const sfcgal_geometry_t )

Returns a deep clone of the given geometry.

Postcondition
returns a pointer to an allocated geometry that must be deallocated by sfcgal_geometry_delete
SFCGAL_API void sfcgal_geometry_collection_add_geometry ( sfcgal_geometry_t collection,
sfcgal_geometry_t geometry 
)

Adds a Geometry to a given GeometryCollection.

Precondition
collection must be a GeometryCollection
Postcondition
the ownership of the given geometry is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_collection_create ( ) -> sfcgal_geometry_t *

Creates an empty GeometryCollection.

Creates an empty GeometryCollection.

SFCGAL_API const sfcgal_geometry_t* sfcgal_geometry_collection_geometry_n ( const sfcgal_geometry_t collection,
size_t  i 
)

Returns the ith geometry of a GeometryCollection.

Precondition
collection is a GeometryCollection
i >= 0 and i < sfcgal_geometry_collection_num_geometries
Postcondition
the returned Geometry is not writable and must not be deallocated by the caller
SFCGAL_API size_t sfcgal_geometry_collection_num_geometries ( const sfcgal_geometry_t collection)

Returns the number of geometries of a given GeometryCollection.

Precondition
collection is a GeometryCollection
Deprecated:
Use sfcgal_geometry_num_geometries instead
SFCGAL_API void sfcgal_geometry_collection_set_geometry_n ( sfcgal_geometry_t collection,
sfcgal_geometry_t geometry,
size_t  i 
)

Set the ith geometry of a given GeometryCollection.

Precondition
collection is a GeometryCollection
i >= 0 and i < sfcgal_geometry_num_geometries( collection )
Postcondition
The ownership of the geometry is taken. The caller is not responsible anymore of its deallocation.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_convexhull ( const sfcgal_geometry_t geom)

Returns the convex hull of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_convexhull_3d ( const sfcgal_geometry_t geom)

Returns the 3D convex hull of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_covers ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Tests the 2D coverage of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API int sfcgal_geometry_covers_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Tests the 3D coverage of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API void sfcgal_geometry_delete ( sfcgal_geometry_t )

Deletes a given geometry.

Precondition
the given pointer must have been previously allocated by a creation function
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_difference ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the difference of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_difference_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the 3D difference of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_dimension ( const sfcgal_geometry_t )

Returns the dimension of a given geometry ( 0 : punctual, 1 : curve, ...)

SFCGAL_API double sfcgal_geometry_distance ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Computes the distance of the two given Geometry objects.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API double sfcgal_geometry_distance_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Computes the 3D distance of the two given Geometry objects.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API int sfcgal_geometry_drop_m ( sfcgal_geometry_t )

Drops the m coordinate of the geometry.

Postcondition
returns 1 if a M value was present and has been removed. 0 otherwise.
SFCGAL_API int sfcgal_geometry_drop_z ( sfcgal_geometry_t )

Drops the z coordinate of the geometry.

Postcondition
returns 1 if a Z value was present and has been removed. 0 otherwise.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_envelope ( const sfcgal_geometry_t geom)

Returns the envelope of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_envelope_3d ( const sfcgal_geometry_t geom)

Returns the 3d envelope of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_extrude ( const sfcgal_geometry_t geom,
double  ex,
double  ey,
double  ez 
)

Returns an extrusion of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_extrude_polygon_straight_skeleton ( const sfcgal_geometry_t geom,
double  building_height,
double  roof_height 
)

Returns the union of the polygon z-extrusion (with respect to building_height) and the extrude straight skeleton (with respect to roof_height) of the given Polygon.

Precondition
geom must be a Polygon
isValid(geom) == true
roof_height != 0
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_extrude_straight_skeleton ( const sfcgal_geometry_t geom,
double  height 
)

Returns the extrude straight skeleton of the given Polygon.

Precondition
geom must be a Polygon
isValid(geom) == true
height != 0
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_force_lhr ( const sfcgal_geometry_t geom)

Force a Left Handed Rule on the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_force_m ( sfcgal_geometry_t geom,
double  defaultM 
)

Adds a m-dimension to the geometry, initialized to a preset value.

Existing M values remains unchanged. This has no effect on empty geometries.

Parameters
geomthe input geometry
defaultMm-value to use
Postcondition
returns 1 if a M value was added. 0 otherwise.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_force_rhr ( const sfcgal_geometry_t geom)

Force a Right Handed Rule on the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_force_z ( sfcgal_geometry_t geom,
double  defaultZ 
)

Adds a z-dimension to the geometry, initialized to a preset value.

Existing Z values remains unchanged. This has no effect on empty geometries.

Parameters
geomthe input geometry
defaultZz-value to use
Postcondition
returns 1 if a Z value was added. 0 otherwise.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_intersection ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the intersection of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_intersection_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the 3D intersection of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_intersects ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Tests the intersection of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API int sfcgal_geometry_intersects_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Tests the 3D intersection of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
SFCGAL_API int sfcgal_geometry_is_3d ( const sfcgal_geometry_t )

Tests if the given geometry is 3D or not.

SFCGAL_API int sfcgal_geometry_is_almost_equals ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2,
double  tolerance 
)

Returns true if geom1 is almost equals to geom2.

For each point of geom1 there is a point in geom2 within tolerance distance.

Parameters
geom1the first geometry
geom2the second geometry
tolerancethe tolerance
Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_is_complexity_detail ( const sfcgal_geometry_t geom,
char **  invalidity_reason,
sfcgal_geometry_t **  invalidity_location 
)
Deprecated:
Use sfcgal_geometry_is_valid_detail instead.
SFCGAL_API int sfcgal_geometry_is_empty ( const sfcgal_geometry_t )

Tests if the given geometry is empty or not.

SFCGAL_API int sfcgal_geometry_is_equals ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns true if geom1 is equals to geom2.

For each point of geom1 there is a point in geom2.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API int sfcgal_geometry_is_measured ( const sfcgal_geometry_t )

Tests if the given geometry is measured (has an m) or not.

SFCGAL_API int sfcgal_geometry_is_planar ( const sfcgal_geometry_t geom)

Tests if the given Geometry is planar.

Precondition
isValid(geom) == true
SFCGAL_API int sfcgal_geometry_is_simple ( const sfcgal_geometry_t )

Tests if the given geometry is simple or not.

SFCGAL_API int sfcgal_geometry_is_simple_detail ( const sfcgal_geometry_t geom,
char **  complexity_reason 
)

Tests if the given geometry is simple or not And return details in case of complexity.

Parameters
geomthe input geometry
complexity_reasoninput/output parameter. If non null, a null-terminated string could be allocated and contain reason of the complexity
SFCGAL_API int sfcgal_geometry_is_valid ( const sfcgal_geometry_t )

Tests if the given geometry is valid or not.

SFCGAL_API int sfcgal_geometry_is_valid_detail ( const sfcgal_geometry_t geom,
char **  invalidity_reason,
sfcgal_geometry_t **  invalidity_location 
)

Tests if the given geometry is valid or not And return details in case of invalidity.

Parameters
geomthe input geometry
invalidity_reasoninput/output parameter. If non null, a null-terminated string could be allocated and contain reason of the invalidity
invalidity_locationinput/output parameter. If non null, a geometry could be allocated and contain the location of the invalidity
SFCGAL_API double sfcgal_geometry_length ( const sfcgal_geometry_t geom)

Returns the 2D length of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API double sfcgal_geometry_length_3d ( const sfcgal_geometry_t geom)

Returns the 3D length of geom.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_line_sub_string ( const sfcgal_geometry_t geom,
double  start,
double  end 
)

Returns the substring of the given LineString between fractional distances.

Precondition
isValid(geom) == true
geom is a Linestring
-1 <= start <= 1
-1 <= end <= 1
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_make_solid ( const sfcgal_geometry_t geom)

Convert a PolyhedralSurface to a Solid.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_minkowski_sum ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the minkowski sum geom1 + geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API size_t sfcgal_geometry_num_geometries ( const sfcgal_geometry_t geometryCollection)

Returns the number of geometries of the given geometry collection.

Precondition
geometry must be a GeometryCollection. Otherwise, 1 is returned. For empty geometries 0 is returned.
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_offset_polygon ( const sfcgal_geometry_t geom,
double  radius 
)

Returns the offset polygon of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_optimal_alpha_shapes ( const sfcgal_geometry_t geom,
bool  allow_holes,
size_t  nb_components 
)

Returns the optimal alpha shapes of geom.

Precondition
isValid(geom) == true
alpha >= 0
nb_components >= 0
Postcondition
isValid(return) == true
Parameters
geomthe input geometry
allow_holesdefines whether alpha shapes are allowed to contain holes
nb_componentsthe number of connected components in the output geometry
SFCGAL_API int sfcgal_geometry_orientation ( const sfcgal_geometry_t ga) -> int

Returns the orientation of the given Polygon -1 for a counter clockwise orientation 1 for a clockwise orientation 0 for an invalid or undetermined orientation.

Precondition
geom is a Polygon
isValid(geom) == true

Returns the orientation of the given Polygon -1 for a counter clockwise orientation 1 for a clockwise orientation 0 for an invalid or undetermined orientation.

Returns: -1 for a counter clock wise orientation, 1 for a clock wise orientation, 0 for invalid or undetermined orientation

SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_round ( const sfcgal_geometry_t geom,
int  r 
)

Round coordinates of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_straight_skeleton ( const sfcgal_geometry_t geom)

Returns the straight skeleton of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_straight_skeleton_distance_in_m ( const sfcgal_geometry_t geom)

Returns the straight skeleton of the given Geometry with the distance to the border as M coordinate.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_straight_skeleton_partition ( const sfcgal_geometry_t geom,
bool  autoOrientation 
)

Returns the straight skeleton partition for the given Polygon.

Precondition
isValid(geom) == true
geom must be a Polygon, Triangle or MultiPolygon
Postcondition
isValid(return) == true
SFCGAL_API void sfcgal_geometry_swap_xy ( sfcgal_geometry_t )

Swaps the x and y coordinates of the geometry.

SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_tesselate ( const sfcgal_geometry_t geom)

Returns a tesselation of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_triangulate_2dz ( const sfcgal_geometry_t geom)

Returns a triangulation of the given Geometry.

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API void sfcgal_geometry_type ( const sfcgal_geometry_t ,
char **  type,
size_t *  typeLen 
)

Returns the type of a given geometry as a string.

Postcondition
type is returned allocated and must be freed by the caller
SFCGAL_API sfcgal_geometry_type_t sfcgal_geometry_type_id ( const sfcgal_geometry_t )

Returns the type of a given geometry.

SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_union ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the union of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_union_3d ( const sfcgal_geometry_t geom1,
const sfcgal_geometry_t geom2 
)

Returns the 3D union of geom1 and geom2.

Precondition
isValid(geom1) == true
isValid(geom2) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_visibility_point ( const sfcgal_geometry_t polygon,
const sfcgal_geometry_t point 
)

Returns the visibility polygon of a Point inside a Polygon.

Parameters
polygoninput geometry
pointinput geometry
Precondition
polygon is a valid geometry
point must be inside polygon or on the boundary
SFCGAL_API sfcgal_geometry_t* sfcgal_geometry_visibility_segment ( const sfcgal_geometry_t polygon,
const sfcgal_geometry_t pointA,
const sfcgal_geometry_t pointB 
)

build the visibility polygon of the segment [pointA ; pointB] on a Polygon

Parameters
polygoninput geometry
pointAinput geometry
pointBinput geometry
Precondition
polygon is a valid geometry
pointA and pointB must be vertices of poly, adjacents and respect the direction
SFCGAL_API double sfcgal_geometry_volume ( const sfcgal_geometry_t geom)

Returns the volume of geom (must be a volume)

Precondition
isValid(geom) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_greene_approx_convex_partition_2 ( const sfcgal_geometry_t geom)

Returns the greene approximal convex partition of a geometry (polygon without hole)

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API void sfcgal_init ( )

This function must be called before all the other one.

SFCGAL_API void sfcgal_linestring_add_point ( sfcgal_geometry_t linestring,
sfcgal_geometry_t point 
)

Adds a point to a LineString.

Parameters
linestringis the LineString where the Point has to be added to
pointis the Point to add to the given LineString
Precondition
i >= and i < sfcgal_linestring_num_points
Postcondition
the ownership of Point is taken by the function
SFCGAL_API sfcgal_geometry_t* sfcgal_linestring_create ( ) -> sfcgal_geometry_t *

Creates an empty LineString.

Creates an empty LineString.

SFCGAL_API size_t sfcgal_linestring_num_points ( const sfcgal_geometry_t linestring)

Returns the number of points of the given LineString.

Precondition
linestring must be a LineString
SFCGAL_API const sfcgal_geometry_t* sfcgal_linestring_point_n ( const sfcgal_geometry_t linestring,
size_t  i 
)

Returns the ith point of a given LineString.

Parameters
linestringthe input LineString
iis the point index in the LineString
Precondition
linestring must be a LineString
i >= and i < sfcgal_linestring_num_points
Postcondition
the returned Point is not writable and must not be deallocated by the caller
SFCGAL_API sfcgal_geometry_t* sfcgal_multi_linestring_create ( )

Creates an empty MultiLineString.

SFCGAL_API sfcgal_geometry_t* sfcgal_multi_point_create ( ) -> sfcgal_geometry_t *

Creates an empty MultiPoint.

Creates an empty MultiPoint.

SFCGAL_API sfcgal_geometry_t* sfcgal_multi_polygon_create ( )

Creates an empty MultiPolygon.

SFCGAL_API sfcgal_geometry_t* sfcgal_multi_solid_create ( )

Creates an empty MultiSolid.

SFCGAL_API sfcgal_geometry_t* sfcgal_optimal_convex_partition_2 ( const sfcgal_geometry_t geom)

Returns the optimal convex partition of a geometry (polygon without hole)

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true
SFCGAL_API sfcgal_geometry_t* sfcgal_point_create ( ) -> sfcgal_geometry_t *

Creates an empty point.

Creates an empty point.

SFCGAL_API sfcgal_geometry_t* sfcgal_point_create_from_xy ( double  x,
double  y 
)

Creates a point from two X and Y coordinates.

SFCGAL_API sfcgal_geometry_t* sfcgal_point_create_from_xym ( double  x,
double  y,
double  m 
)

Creates a point from three X, Y and M coordinates.

SFCGAL_API sfcgal_geometry_t* sfcgal_point_create_from_xyz ( double  x,
double  y,
double  z 
)

Creates a point from three X, Y and Z coordinates.

SFCGAL_API sfcgal_geometry_t* sfcgal_point_create_from_xyzm ( double  x,
double  y,
double  z,
double  m 
)

Creates a point from four X, Y, Z and M coordinates.

SFCGAL_API double sfcgal_point_m ( const sfcgal_geometry_t )

Returns the M coordinate of the given Point.

Precondition
the given geometry must be a Point
the given point must not be empty
Postcondition
the M coordinate can value NaN if the given point has no m
SFCGAL_API double sfcgal_point_x ( const sfcgal_geometry_t )

Returns the X coordinate of the given Point.

Precondition
the given geometry must be a Point
the given point must not be empty
SFCGAL_API double sfcgal_point_y ( const sfcgal_geometry_t )

Returns the Y coordinate of the given Point.

Precondition
the given geometry must be a Point
the given point must not be empty
SFCGAL_API double sfcgal_point_z ( const sfcgal_geometry_t )

Returns the Z coordinate of the given Point.

Precondition
the given geometry must be a Point
the given point must not be empty
Postcondition
the Z coordinate can value NaN if the given point is 2D only
SFCGAL_API void sfcgal_polygon_add_interior_ring ( sfcgal_geometry_t polygon,
sfcgal_geometry_t ring 
)

Adds an interior ring to a given Polygon.

Precondition
polygon must be a Polygon
ring must be a LineString
Postcondition
the ownership of the given ring is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API sfcgal_geometry_t* sfcgal_polygon_create ( ) -> sfcgal_geometry_t *

Creates an empty Polygon.

Creates an empty Polygon.

SFCGAL_API sfcgal_geometry_t* sfcgal_polygon_create_from_exterior_ring ( sfcgal_geometry_t ring)

Creates an empty Polygon from an extrior ring.

Precondition
ring must be a LineString
Postcondition
the ownership of the given ring is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API const sfcgal_geometry_t* sfcgal_polygon_exterior_ring ( const sfcgal_geometry_t polygon)

Returns the exterior ring of a given Polygon.

Precondition
polygon must be a Polygon
polygon must not be empty
Postcondition
the returned ring is a LineString, is not writable and must not be deallocated by the caller
SFCGAL_API const sfcgal_geometry_t* sfcgal_polygon_interior_ring_n ( const sfcgal_geometry_t polygon,
size_t  i 
)

Returns the ith interior ring of a given Polygon.

Precondition
polygon must be a Polygon
i >= 0 and i < sfcgal_polygon_num_interior_rings
Postcondition
the returned ring is a LineString, is not writable and must not be deallocated by the caller
SFCGAL_API size_t sfcgal_polygon_num_interior_rings ( const sfcgal_geometry_t polygon)

Returns the number of interior rings of a given Polygon.

Precondition
polygon must be a Polygon
SFCGAL_API void sfcgal_polyhedral_surface_add_patch ( sfcgal_geometry_t polyhedral,
sfcgal_geometry_t patch 
)

Adds a Patch to a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
patch must be a Polygon
Postcondition
the ownership of the Polygon is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API void sfcgal_polyhedral_surface_add_polygon ( sfcgal_geometry_t polyhedral,
sfcgal_geometry_t polygon 
)

Adds a Polygon to a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
polygon must be a Polygon
Postcondition
the ownership of the Polygon is taken. The caller is not responsible anymore of its deallocation
Deprecated:
Use sfcgal_polyhedral_surface_add_patch instead.
SFCGAL_API sfcgal_geometry_t* sfcgal_polyhedral_surface_create ( ) -> sfcgal_geometry_t *

Creates an empty PolyhedralSurface.

Creates an empty PolyhedralSurface.

SFCGAL_API size_t sfcgal_polyhedral_surface_num_patches ( const sfcgal_geometry_t polyhedral)

Returns the number of patches of a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
SFCGAL_API size_t sfcgal_polyhedral_surface_num_polygons ( const sfcgal_geometry_t polyhedral)

Returns the number of polygons of a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
Deprecated:
Use sfcgal_polyhedral_surface_num_patches instead.
SFCGAL_API const sfcgal_geometry_t* sfcgal_polyhedral_surface_patch_n ( const sfcgal_geometry_t polyhedral,
size_t  i 
)

Returns the ith patch of a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
i >= 0 and i < sfcgal_polyhedral_surface_num_patches(polyhedral)
Postcondition
the returned Polygon is not writable and must not be deallocated by the caller
SFCGAL_API const sfcgal_geometry_t* sfcgal_polyhedral_surface_polygon_n ( const sfcgal_geometry_t polyhedral,
size_t  i 
)

Returns the ith polygon of a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface
i >= 0 and i < sfcgal_polyhedral_surface_num_patches(polyhedral)
Postcondition
the returned Polygon is not writable and must not be deallocated by the caller
Deprecated:
Use sfcgal_polyhedral_surface_patch_n instead
SFCGAL_API void sfcgal_polyhedral_surface_set_patch_n ( sfcgal_geometry_t polyhedral,
sfcgal_geometry_t patch,
size_t  i 
)

Set the ith patch of a given PolyhedralSurface.

Precondition
polyhedral must be a PolyhedralSurface.
patch must be a Polygon.
i >= 0 and i < sfcgal_polyhedral_surface_num_patches(polyhedral)
Postcondition
The ownership of the polygon is taken. The caller is not responsible anymore of its deallocation.
SFCGAL_API void sfcgal_prepared_geometry_as_ewkt ( const sfcgal_prepared_geometry_t prepared,
int  num_decimals,
char **  buffer,
size_t *  len 
)

Returns an EWKT representation of the given PreparedGeometry.

Parameters
[in]preparedthe input geometry
[in]num_decimalsnumber of decimals. -2 for a variable number of decimals.
[out]bufferthe EWKT buffer
[out]lenthe size of the buffer
Postcondition
buffer is returned allocated and must be freed by the caller
SFCGAL_API sfcgal_prepared_geometry_t* sfcgal_prepared_geometry_create ( )

Creates an empty PreparedGeometry.

SFCGAL_API sfcgal_prepared_geometry_t* sfcgal_prepared_geometry_create_from_geometry ( sfcgal_geometry_t geometry,
srid_t  srid 
)

Creates a PreparedGeometry from a Geometry and an SRID.

SFCGAL_API void sfcgal_prepared_geometry_delete ( sfcgal_prepared_geometry_t prepared)

Deletes a given PreparedGeometry.

Precondition
prepared must be a PreparedGeometry
Postcondition
the underlying Geometry linked to the given PreparedGeometry is also deleted
SFCGAL_API const sfcgal_geometry_t* sfcgal_prepared_geometry_geometry ( const sfcgal_prepared_geometry_t prepared)

Returns the Geometry associated with a given PreparedGeometry.

Precondition
prepared must be a PreparedGeometry
Postcondition
the returned Geometry is not writable and must not be deallocated by the caller
SFCGAL_API void sfcgal_prepared_geometry_set_geometry ( sfcgal_prepared_geometry_t prepared,
sfcgal_geometry_t geometry 
)

Sets the Geometry associated with the given PreparedGeometry.

Precondition
prepared must be a PreparedGeometry
Postcondition
the ownership of the given geometry is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API void sfcgal_prepared_geometry_set_srid ( sfcgal_prepared_geometry_t prepared,
srid_t   
)

Sets SRID associated with a given PreparedGeometry.

Precondition
prepared must be a PreparedGeometry
SFCGAL_API srid_t sfcgal_prepared_geometry_srid ( const sfcgal_prepared_geometry_t prepared)

Returns SRID associated with a given PreparedGeometry.

Precondition
prepared must be a PreparedGeometry
SFCGAL_API void sfcgal_set_alloc_handlers ( sfcgal_alloc_handler_t  malloc_handler,
sfcgal_free_handler_t  free_handler 
)

Sets the allocation handlers.

These functions are called on memory allocation and deallocation.

Parameters
malloc_handleris the function to call for memory allocation. The default behaviour is to call malloc()
free_handleris the function to call for memory deallocation. The default behaviour is to call free()
SFCGAL_API void sfcgal_set_error_handlers ( sfcgal_error_handler_t  warning_handler,
sfcgal_error_handler_t  error_handler 
)

Sets the error handlers.

These callbacks are called on warning or error

Parameters
warning_handleris the printf-styled callback function that will be called when a function raises a warning. The default behaviour is to call printf.
error_handleris the printf-style callback function that will be called when a function generates an error. The default behaviour is to call printf.
SFCGAL_API void sfcgal_set_geometry_validation ( int  enabled)

Set the geometry validation mode.

Note
obsolete
SFCGAL_API void sfcgal_solid_add_interior_shell ( sfcgal_geometry_t solid,
sfcgal_geometry_t shell 
)

Adds a shell to a given Solid.

Precondition
solid must be a Solid
shell must be a PolyhedralSurface
Postcondition
the ownership of the shell is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API sfcgal_geometry_t* sfcgal_solid_create ( ) -> sfcgal_geometry_t *

Creates an empty Solid.

Creates an empty Solid.

SFCGAL_API sfcgal_geometry_t* sfcgal_solid_create_from_exterior_shell ( sfcgal_geometry_t shell)

Creates a Solid from an exterior shell.

Precondition
ring must be a PolyhedralSurface
Postcondition
the ownership of the given shell is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API size_t sfcgal_solid_num_shells ( const sfcgal_geometry_t solid)

Returns the number of shells of a given Solid.

Precondition
solid must be a Solid
SFCGAL_API void sfcgal_solid_set_exterior_shell ( sfcgal_geometry_t solid,
sfcgal_geometry_t shell 
)

Set the exterior shell of a given Solid.

Precondition
solid must be a Solid
shell must be a PolyhedralSurface
Postcondition
the ownership of the shell is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API const sfcgal_geometry_t* sfcgal_solid_shell_n ( const sfcgal_geometry_t solid,
size_t  i 
)

Returns the ith shell of a given Solid.

Precondition
solid must be a Solid
i >= 0 and i < sfcgal_solid_num_shells( tin )
Postcondition
the returned PolyhedralSurface is not writable and must not be deallocated by the caller
SFCGAL_API sfcgal_geometry_t* sfcgal_triangle_create ( ) -> sfcgal_geometry_t *

Creates an empty Triangle.

Creates an empty Triangle.

SFCGAL_API sfcgal_geometry_t* sfcgal_triangle_create_from_points ( const sfcgal_geometry_t pta,
const sfcgal_geometry_t ptb,
const sfcgal_geometry_t ptc 
)

Creates a Triangle from three given Point.

Precondition
pta must be a Triangle
ptb must be a Triangle
ptc must be a Triangle
Postcondition
the ownership of the three points are not taken. The caller is still responsible of their deallocation
SFCGAL_API void sfcgal_triangle_set_vertex ( sfcgal_geometry_t triangle,
int  i,
const sfcgal_geometry_t vertex 
)

Sets one vertex of a Triangle.

Precondition
triangle must be a Triangle
vertex must be a Point
SFCGAL_API void sfcgal_triangle_set_vertex_from_xy ( sfcgal_geometry_t triangle,
int  i,
double  x,
double  y 
)

Sets one vertex of a Triangle from two coordinates.

Precondition
triangle must be a Triangle
i >= 0 and i < 3
SFCGAL_API void sfcgal_triangle_set_vertex_from_xyz ( sfcgal_geometry_t triangle,
int  i,
double  x,
double  y,
double  z 
)

Sets one vertex of a Triangle from three coordinates.

Precondition
triangle must be a Triangle
i >= 0 and i < 3
SFCGAL_API const sfcgal_geometry_t* sfcgal_triangle_vertex ( const sfcgal_geometry_t triangle,
int  i 
)

Returns one the Triangle's vertex as a Point.

Precondition
triangle must be a Triangle
i >= 0 and i < 3
Postcondition
returns a pointer to one of the vertices as a Point. This pointer is not writable and must not be deallocated by the caller
SFCGAL_API void sfcgal_triangulated_surface_add_patch ( sfcgal_geometry_t tin,
sfcgal_geometry_t patch 
)

Adds a Patch to a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
patch must be a Triangle
Postcondition
the ownership of the Triangle is taken. The caller is not responsible anymore of its deallocation
SFCGAL_API void sfcgal_triangulated_surface_add_triangle ( sfcgal_geometry_t tin,
sfcgal_geometry_t triangle 
)

Adds a Triangle to a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
triangle must be a Triangle
Postcondition
the ownership of the Triangle is taken. The caller is not responsible anymore of its deallocation
Deprecated:
Use sfcgal_triangulated_surface_add_patch instead.
SFCGAL_API sfcgal_geometry_t* sfcgal_triangulated_surface_create ( ) -> sfcgal_geometry_t *

Creates an empty TriangulatedSurface.

Creates an empty TriangulatedSurface.

SFCGAL_API size_t sfcgal_triangulated_surface_num_patches ( const sfcgal_geometry_t tin)

Returns the number of patches of a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
SFCGAL_API size_t sfcgal_triangulated_surface_num_triangles ( const sfcgal_geometry_t tin)

Returns the number of triangles of a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
Deprecated:
Use sfcgal_triangulated_surface_num_patches instead.
SFCGAL_API const sfcgal_geometry_t* sfcgal_triangulated_surface_patch_n ( const sfcgal_geometry_t tin,
size_t  i 
)

Returns the ith Patch of a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
i >= 0 and i < sfcgal_triangulated_surface_num_patches( tin )
Postcondition
the returned Triangle is not writable and must not be deallocated by the caller
SFCGAL_API void sfcgal_triangulated_surface_set_patch_n ( sfcgal_geometry_t tin,
sfcgal_geometry_t patch,
size_t  i 
)

Set the ith patch of a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
patch must be a Triangle.
i >= 0 and i < sfcgal_triangulated_surface_num_patches( tin )
Postcondition
The ownership of the triangle is taken. The caller is not responsible anymore of its deallocation.
SFCGAL_API const sfcgal_geometry_t* sfcgal_triangulated_surface_triangle_n ( const sfcgal_geometry_t tin,
size_t  i 
)

Returns the ith Triangle of a given TriangulatedSurface.

Precondition
tin must be a TriangulatedSurface
i >= 0 and i < sfcgal_triangulated_surface_num_patches( tin )
Postcondition
the returned Triangle is not writable and must not be deallocated by the caller
Deprecated:
Use sfcgal_triangulated_surface_patch_n instead.
SFCGAL_API const char* sfcgal_version ( )

Get version.

SFCGAL_API sfcgal_geometry_t* sfcgal_y_monotone_partition_2 ( const sfcgal_geometry_t geom)

Returns the y monotone partition of a geometry (polygon without hole)

Precondition
isValid(geom) == true
Postcondition
isValid(return) == true