#2d or 3d|gA|gB|expected

# Point/Point
2|POINT(0.0 0.0)|POINT(0.0 0.0)|true
3|POINT(0.0 0.0 0.0)|POINT(0.0 0.0 0.0)|true
2|POINT(0.0 0.0)|POINT(3.0 4.0)|false
3|POINT(0.0 0.0 0.0)|POINT(0.0 0.0 1.0)|false
# intersects2d on 2d and 3d geometries
2|POINT(0.0 0.0)|POINT(0.0 0.0 1.0)|true
# intersects3d on 2d points
3|POINT(0.0 0.0)|POINT(0.0 0.0)|true
# intersects3d on 2d and 3d points
3|POINT(0.0 0.0)|POINT(0.0 0.0 0.0)|true

# Point/LineString
3|POINT(0.0 0.0 0.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true
3|POINT(0.5 0.0 0.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true
3|POINT(0.0 0.0 1.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|false
2|POINT(0.0 0.0 0.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true
2|POINT(0.5 0.0 0.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true
2|POINT(0.0 0.0 1.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true
3|POINT(0.0 0.0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|true

# Point/Triangle
# point on a vertex
2|POINT(0.0 0.0 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.0 0.0 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# point on a boundary
2|POINT(0.5 0.0 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.5 0.0 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# point not inside
2|POINT(2.0 0.0 1.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false
3|POINT(2.0 0.0 1.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false
# point inside the triangle
2|POINT(0.8 0.2 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.8 0.2 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# point outside the triangle
2|POINT(2.8 2.2 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false
3|POINT(2.8 2.2 0.0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false
# 2d x 3d
3|POINT(0.8 0.2)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true

## Point / Polygon
2|POINT(0.0 0.0)|POLYGON((0.0 0.0,1.0 0.0,1.0 1.0,0.0 1.0,0.0 0.0))|true
2|POINT(0.5 0.0)|POLYGON((0.0 0.0,1.0 0.0,1.0 1.0,0.0 1.0,0.0 0.0))|true
2|POINT(0.0 1.5)|POLYGON((0.0 0.0,1.0 0.0,1.0 1.0,0.0 1.0,0.0 0.0))|false
2|POINT(0.5 0.5)|POLYGON((0.0 0.0,1.0 0.0,1.0 1.0,0.0 1.0,0.0 0.0))|true
2|POINT(0.6 0.6)|POLYGON((0.0 0.0,1.0 0.0,1.0 1.0,0.0 1.0,0.0 0.0))|true
# polygon with a hole
2|POINT(0.0 0.0)|POLYGON((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(2 2,2 3,3 3,3 2,2 2))|true
2|POINT(0.5 0.0)|POLYGON((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(2 2,2 3,3 3,3 2,2 2))|true
2|POINT(0.0 5.5)|POLYGON((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(2 2,2 3,3 3,3 2,2 2))|false
2|POINT(0.5 0.5)|POLYGON((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(2 2,2 3,3 3,3 2,2 2))|true
2|POINT(2.5 2.5)|POLYGON((0.0 0.0,4.0 0.0,4.0 4.0,0.0 4.0,0.0 0.0),(2 2,2 3,3 3,3 2,2 2))|false
# 3D
3|POINT(0.0 0.0 0.0)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.5 0.0 0.0)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.0 1.5 0.0)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|false
3|POINT(0.6 0.6 0.0)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.5 0.5 0.0)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|true
3|POINT(0.5 0.5 0.5)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|false
# 3d with hole
3|POINT(0.0 0.0 0)|POLYGON((0.0 0.0 0,4.0 0.0 0,4.0 4.0 0,0.0 4.0 0,0.0 0.0 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0))|true
3|POINT(0.5 0.0 0)|POLYGON((0.0 0.0 0,4.0 0.0 0,4.0 4.0 0,0.0 4.0 0,0.0 0.0 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0))|true
3|POINT(0.0 5.5 0)|POLYGON((0.0 0.0 0,4.0 0.0 0,4.0 4.0 0,0.0 4.0 0,0.0 0.0 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0))|false
3|POINT(0.5 0.5 0)|POLYGON((0.0 0.0 0,4.0 0.0 0,4.0 4.0 0,0.0 4.0 0,0.0 0.0 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0))|true
3|POINT(2.5 2.5 0)|POLYGON((0.0 0.0 0,4.0 0.0 0,4.0 4.0 0,0.0 4.0 0,0.0 0.0 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0))|false
# 2d x 3d
3|POINT(0.5 0.5)|POLYGON((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0))|true

## Point / TIN
2|POINT(0.0 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|POINT(0.0 0.0 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# on an edge
2|POINT(0.5 0.5)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|POINT(0.5 0.5 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# inside the first triangle
2|POINT(0.2 0.2)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|POINT(0.2 0.2 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# inside another triangle
2|POINT(1.2 0.2)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|POINT(1.2 0.2 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|POINT(1.2 0.2 1.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|false
# outside
2|POINT(2.1 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|false
3|POINT(2.1 0.0 0.0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|false
# 2d x 3d
3|POINT(1.2 0.2)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true

## Point / Polyhedral
## Polyhedral : a square with a concave part glued to a square with a hole
# on a vertex
2|POINT(0 0)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|true
# in the concave part
2|POINT(0.5 0)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|false
# on an edge
2|POINT(0 0.5)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|true
# inside the first polygon
2|POINT(0.7 0.7)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|true
# inside the second polygon
2|POINT(1.2 0.1)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|true
# inside the hole
2|POINT(1.5 0.5)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|false
#  on the edge of the hole
2|POINT(1.2 0.5)|POLYHEDRALSURFACE(((0 0,0.5 0.5,1 0,1 1,0 1,0 0)),((1 0,2 0,2 1,1 1,1 0),(1.2 0.2,1.2 0.8,1.8 0.8,1.8 0.2,1.2 0.2)))|true

# 3d
3|POINT(0 0 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|POINT(0.5 0 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
3|POINT(0 0.5 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|POINT(0.7 0.7 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|POINT(1.2 0.1 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|POINT(1.5 0.5 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
3|POINT(1.2 0.5 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
# 2d x 3d
3|POINT(0 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true

## Point / Solid
3|POINT(0.0 0.0 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|POINT(0.0 0.5 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|POINT(0.5 0.5 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|POINT(1.5 0.5 0.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|false

# 2d x 3d
3|POINT(0.5 0.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true


3|POINT(0.5 0.5 0.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
## with a concave part
3|POINT(0.1 0.2 0.2)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0.5 0.5 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,0.5 0.5 1,1 0 1)), ((1 0 0,1 0 1,0.5 0.5 1,0.5 0.5 0,1 0 0)), ((0 0 0,0.5 0.5 0,0.5 0.5 1,0 0 1,0 0 0)) ))|true
3|POINT(0.5 0.5 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0.5 0.5 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,0.5 0.5 1,1 0 1)), ((1 0 0,1 0 1,0.5 0.5 1,0.5 0.5 0,1 0 0)), ((0 0 0,0.5 0.5 0,0.5 0.5 1,0 0 1,0 0 0)) ))|true
# point outside a concave volume (but inside the convex hull)
3|POINT(0.5 0 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0.5 0.5 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,0.5 0.5 1,1 0 1)), ((1 0 0,1 0 1,0.5 0.5 1,0.5 0.5 0,1 0 0)), ((0 0 0,0.5 0.5 0,0.5 0.5 1,0 0 1,0 0 0)) ))|false

## LineString / LineString
2|LINESTRING(0 0, 1 0, 1 1)|LINESTRING(0 -1, 1 0.5, 1 4)|true
2|LINESTRING(10 0, 11 0, 11 1)|LINESTRING(0 0, 1 0, 1 1)|false
3|LINESTRING(0 0 0, 1 0 0, 1 1 0)|LINESTRING(0 0 0, 1 0 1, 1 4 0)|true
3|LINESTRING(10 0 0, 11 0 0, 11 1 0)|LINESTRING(0 0 0, 1 0 0, 1 1 0)|false
# 2d x 3d
3|LINESTRING(0 0, 1 0, 1 1)|LINESTRING(0 0 0, 1 0 1, 1 4 0)|true

## LineString / Triangle
2|LINESTRING(0 0,0 1)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# line that shares a vertex
2|LINESTRING(0 1, 1 0.4)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# line inside
2|LINESTRING(0.4 0.2,0.5 0.3)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# line traversing the triangle
2|LINESTRING(-1 0.5,2 0.5)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
# line outside
2|LINESTRING(-1 1.5,2 1.5)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false

# 3D
3|LINESTRING(0 0 0,0 1 0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|LINESTRING(0 1 0,1 0.4 0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|LINESTRING(0.4 0.2 0,0.5 0.3 0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|LINESTRING(-1 0.5 0,2 0.5 0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true
3|LINESTRING(-1 1.5 0,2 1.5 0)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|false
# 2d x 3d
3|LINESTRING(0 0,0 1)|TRIANGLE((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0))|true

## LineString / Polygon
# polygon with a hole and a concave part
# POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))
# on the edge
2|LINESTRING(0 0 0,1 0 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
3|LINESTRING(0 0 0,1 0 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
# crossing
2|LINESTRING(0 0 0,1 1 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
3|LINESTRING(0 0 0,1 1 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
# crossing (bis)
2|LINESTRING(-1 -1 0,2 2 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
3|LINESTRING(-1 -1 0,2 2 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true
# in the hole
2|LINESTRING(0.3 0.3 0,0.7 0.7 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|false
3|LINESTRING(0.3 0.3 0,0.7 0.7 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|false
# outside
2|LINESTRING(-1 -1 0,-0.5 0.5 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|false
3|LINESTRING(-1 -1 0,-0.5 0.5 0)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|false
# 2d x 3d
3|LINESTRING(0 0,1 1)|POLYGON((0.0 0.0 0.0,0.5 0.1 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 1.0 0.0,0.0 0.0 0.0),(0.2 0.2 0.0,0.2 0.8 0.0,0.8 0.8 0.0,0.8 0.2 0.0,0.2 0.2 0.0))|true

## LineString / TIN
# line that shares a vertex
2|LINESTRING(0 0, 0 1)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# line crossing an edge
2|LINESTRING(0 1, 1 0.4)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# line inside the triangle
2|LINESTRING(0.4 0.2,0.5 0.3)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# line traversing the triangle
2|LINESTRING(-1 0.5,2 0.5)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
# line outside
2|LINESTRING(-1 1.5,2 1.5)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|false
## 3D
3|LINESTRING(0 0 0,0 1 0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|LINESTRING(0 1 0,1 0.4 0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|LINESTRING(0.4 0.2 0,0.5 0.3 0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|LINESTRING(-1 0.5 0,2 0.5 0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true
3|LINESTRING(-1 1.5 0,2 1.5 0)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|false
# 2d x 3d
3|LINESTRING(0.4 0.2,0.5 0.3)|TIN(((0.0 0.0 0.0,1.0 0.0 0.0,1.0 1.0 0.0,0.0 0.0 0.0)),((1.0 0.0 0.0,2.0 0.0 0.0,1.0 1.0 0.0,1.0 0.0 0.0)),((2.0 0.0 0.0,2.0 1.0 0.0,1.0 1.0 0.0,2.0 0.0 0.0)))|true

## LineString / Polyhedral
## TODO
2|LINESTRING(0.0 0.0,0.5 0.5)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|LINESTRING(0.0 0.0 0.0,0.5 0.5 0.0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
# crossing an edge
2|LINESTRING(-1 0.5,1 0.5)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
3|LINESTRING(-1 0.5 0,1 0.5 0)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true
# inside the hole
2|LINESTRING(1.3 0.3,1.7 0.7)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
3|LINESTRING(1.3 0.3,1.7 0.7)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
# outside
2|LINESTRING(-1 -1,-0.7 0.5)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
3|LINESTRING(-1 -1,-0.7 0.5)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|false
# 2d x 3d
3|LINESTRING(-1 0.5,1 0.5)|POLYHEDRALSURFACE(((0 0 0,0.5 0.5 0,1 0 0,1 1 0,0 1 0,0 0 0)),((1 0 0,2 0 0,2 1 0,1 1 0,1 0 0),(1.2 0.2 0,1.2 0.8 0,1.8 0.8 0,1.8 0.2 0,1.2 0.2 0)))|true

## LineString / Solid
3|LINESTRING(0.5 0.5 0.5,0.7 0.7 0.7)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|LINESTRING(0.5 0.5 0.5,1.5 1.5 1.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|LINESTRING(2.5 2.5 2.5,1.5 1.5 1.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|false
3|LINESTRING(-1 0.5 0.5,1.5 0.5 0.5)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|LINESTRING(-1 0.0 0.0,1.5 0.0 0.0)|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true

## Triangle / Triangle
## TODO
# triangle touching
2|TRIANGLE((1 0 0,2 0 0,1.5 1 0,1 0 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
3|TRIANGLE((1 0 0,2 0 0,1.5 1 0,1 0 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
# triangles sharing an edge
2|TRIANGLE((0 0 0,1 0 0,0.5 -1 0,0 0 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
3|TRIANGLE((0 0 0,1 0 0,0.5 -1 0,0 0 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
# triangles overlapping
2|TRIANGLE((0.5 0.5 0,1.5 0.5 0,1 1.5 0,0.5 0.5 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
3|TRIANGLE((0.5 0.5 0,1.5 0.5 0,1 1.5 0,0.5 0.5 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
# triangles overlapping in 3d
3|TRIANGLE((0.5 0.5 -0.5,0.5 0.5 0.5,0.5 0.8 0.0,0.5 0.5 -0.5))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true
# outside
2|TRIANGLE((2 0 0,3 0 0,1.5 1 0,2 0 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|false
3|TRIANGLE((1 0 1,2 0 1,1.5 1 1,1 0 1))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|false
# 2d x 3d
3|TRIANGLE((1 0,2 0,1.5 1,1 0))|TRIANGLE((0 0 0,1 0 0,0.5 1 0,0 0 0))|true

## Triangle / Polygon
# intersection on a vertex
2|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# intersection on an edge
2|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# triangle overlapping
2|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# triangle inside polygon
2|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# triangle containing polygon
2|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# triangle inside a polygon hole
2|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0),(0.2 0.2 0,0.2 0.8 0,0.8 0.8 0,0.8 0.2 0,0.2 0.2 0))|false
3|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0),(0.2 0.2 0,0.2 0.8 0,0.8 0.8 0,0.8 0.2 0,0.2 0.2 0))|false
# triangle touching a polygon hole
2|TRIANGLE((0.2 0.2 0,0.7 0.3 0,0.7 0.7 0,0.2 0.2 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0),(0.2 0.2 0,0.2 0.8 0,0.8 0.8 0,0.8 0.2 0,0.2 0.2 0))|true
3|TRIANGLE((0.2 0.2 0,0.7 0.3 0,0.7 0.7 0,0.2 0.2 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0),(0.2 0.2 0,0.2 0.8 0,0.8 0.8 0,0.8 0.2 0,0.2 0.2 0))|true
# triangle outside
2|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|false
3|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|false

## Triangle / TIN
# intersection on a vertex
2|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle overlapping
2|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle inside polygon
2|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle containing polygon
2|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle outside
2|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false

## Triangle / Polyhedral
# intersection on a vertex
2|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle overlapping
2|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle inside polygon
2|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle containing polygon
2|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TRIANGLE((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# triangle outside
2|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|TRIANGLE((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false

## Triangle / Solid
3|TRIANGLE((0.5 0.5 0.5,0.7 0.7 0.2,0.2 0.2 0.2,0.5 0.5 0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|TRIANGLE((-0.5 -0.5 -0.5,0.7 0.7 0.2,0.2 0.2 0.2,-0.5 -0.5 -0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|TRIANGLE((-0.5 -0.5 -0.5,-0.7 -0.7 -0.2,-0.2 -0.2 -0.2,-0.5 -0.5 -0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|false
3|TRIANGLE((-1 0.5 0.5,1.5 0.5 0.5,0.0 0.0 1.5,-1 0.5 0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
3|TRIANGLE((-1 0.0 0.0,1.5 0.0 0.0,0.0 0.0 -1,-1 0.0 0.0))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true

# Polygon / Polygon
# intersection on a vertex
2|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 0 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 0 0,-1 -1 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# intersection on an edge
2|POLYGON((-1 0 0,0 0 0,0 1 0,-1 1 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|POLYGON((-1 0 0,0 0 0,0 1 0,-1 1 0,-1 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# overlapping
2|POLYGON((-0.5 0 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0,-0.5 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|POLYGON((-0.5 0 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0,-0.5 0 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
# inside
2|POLYGON((0.2 0.2 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0,0.2 0.2 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true
3|POLYGON((0.2 0.2 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0,0.2 0.2 0))|POLYGON((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0))|true

# Polygon with a hole / Polygon inside the hole of A
2|POLYGON((0.0 0.0,5.0 0.0,5.0 5.0,0.0 5.0,0.0 0.0),(1.0 1.0,1.0 4.0,4.0 4.0,4.0 1.0,1.0 1.0))|POLYGON((2.0 2.0,3.0 2.0,3.0 3.0,2.0 3.0,2.0 2.0))|false
3|POLYGON((0.0 0.0 0.0,5.0 0.0 0.0,5.0 5.0 0.0,0.0 5.0 0.0,0.0 0.0 0.0),(1.0 1.0 0.0,1.0 4.0 0.0,4.0 4.0 0.0,4.0 1.0 0.0,1.0 1.0 0.0))|POLYGON((2.0 2.0 0.0,3.0 2.0 0.0,3.0 3.0 0.0,2.0 3.0 0.0,2.0 2.0 0.0))|false
# Polygon with a hole / Polygon crossing the hole of A
2|POLYGON((0.0 0.0,5.0 0.0,5.0 5.0,0.0 5.0,0.0 0.0),(1.0 1.0,1.0 4.0,4.0 4.0,4.0 1.0,1.0 1.0))|POLYGON((0.5 0.5,2.0 0.5,2.0 2.0,0.5 2.0,0.5 0.5))|true
3|POLYGON((0.0 0.0 0.0,5.0 0.0 0.0,5.0 5.0 0.0,0.0 5.0 0.0,0.0 0.0 0.0),(1.0 1.0 0.0,1.0 4.0 0.0,4.0 4.0 0.0,4.0 1.0 0.0,1.0 1.0 0.0))|POLYGON((0.5 0.5 0.0,2.0 0.5 0.0,2.0 2.0 0.0,0.5 2.0 0.0,0.5 0.5 0.0))|true
# Polygon with a hole / Polygon outside the hole of A
2|POLYGON((0.0 0.0,5.0 0.0,5.0 5.0,0.0 5.0,0.0 0.0),(1.0 1.0,1.0 4.0,4.0 4.0,4.0 1.0,1.0 1.0))|POLYGON((0.5 0.5,4.5 0.5,4.5 4.5,0.5 4.5,0.5 0.5))|true
3|POLYGON((0.0 0.0 0.0,5.0 0.0 0.0,5.0 5.0 0.0,0.0 5.0 0.0,0.0 0.0 0.0),(1.0 1.0 0.0,1.0 4.0 0.0,4.0 4.0 0.0,4.0 1.0 0.0,1.0 1.0 0.0))|POLYGON((0.5 0.5 0.0,4.5 0.5 0.0,4.5 4.5 0.0,0.5 4.5 0.0,0.5 0.5 0.0))|true

## Polygon / TIN
# intersection on a vertex
2|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|POLYGON((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon overlapping
2|POLYGON((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon inside tin
2|POLYGON((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon containing tin
2|POLYGON((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon outside
2|POLYGON((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|POLYGON((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
# tin inside a polygon hole
2|POLYGON((-5 -5,5 -5,5 5,-5 5,-5 -5),(-4 -0.1 0,4 4 0,4 -0.1 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|POLYGON((-5 -5,5 -5,5 5,-5 5,-5 -5),(-4 -0.1 0,4 4 0,4 -0.1 0,-4 -0.1 0))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false

## Polygon / Polyhedral
# intersection on a vertex
2|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|POLYGON((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 0 0,0.5 -1 0,0.5 0 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon overlapping
2|POLYGON((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-1 -1 0,0.5 -1 0,0.5 0.5 0,-1 -1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon inside polyhedral
2|POLYGON((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((0.3 0.3 0,0.7 0.3 0,0.7 0.7 0,0.3 0.3 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon containing polyhedral
2|POLYGON((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYGON((-4 -0.1 0,4 -0.1 0,4 4 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# polygon outside
2|POLYGON((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|POLYGON((-1 0 0,-0.5 0 0,-0.5 1 0,-1 0 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
# polyhedral inside a polygon hole
2|POLYGON((-5 -5,5 -5,5 5,-5 5,-5 -5),(-4 -0.1 0,4 4 0,4 -0.1 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false
3|POLYGON((-5 -5,5 -5,5 5,-5 5,-5 -5),(-4 -0.1 0,4 4 0,4 -0.1 0,-4 -0.1 0))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|false

## Polygon / Solid
# polygon intersects on a vertex
3|POLYGON((-1 -1 0,0 -1 0,0 0 0,-1 0 0,-1 -1 0))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon intersects on an edge
3|POLYGON((-1 0 0,0 0 0,0 1 0,-1 1 0,-1 0 0))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping a face
3|POLYGON((-0.5 0 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0,-0.5 0 0))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping the volume
3|POLYGON((-0.5 0 0.5,0.5 0 0.5,0.5 0.5 0.5,-0.5 0.5 0.5,-0.5 0 0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon inside the solid
3|POLYGON((0.2 0.2 0.5,0.8 0.2 0.5,0.8 0.8 0.5,0.2 0.8 0.5,0.2 0.2 0.5))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# solid inside the hole of a polygon
3|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|POLYGON((-1 -1 0,2 -1 0,2 2 0,-1 2 0,-1 -1 0),(-0.5 -0.5 0,-0.5 1.5 0,1.5 1.5 0,1.5 -0.5 0,-0.5 -0.5 0))|false

## TIN / TIN
# intersection on a vertex
2|TIN(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|TIN(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# overlapping
2|TIN(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# inside
2|TIN(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|TIN(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true

## TIN / Polyhedral
# intersection on a vertex
2|TIN(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|TIN(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# overlapping
2|TIN(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# inside
2|TIN(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|TIN(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true

## TIN / Solid
# polygon intersects on a vertex
3|TIN(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon intersects on an edge
3|TIN(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping a face
3|TIN(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping the volume
3|TIN(((-0.5 0.5 0.5,0.5 0 0.5,0.5 0.5 0.5,-0.5 0.5 0.5)),((-0.5 0.5 0.5,-0.5 0 0.5,0.5 0 0.5,-0.5 0.5 0.5)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon inside the solid
3|TIN(((0.2 0.8 0.5,0.8 0.2 0.5,0.8 0.8 0.5,0.2 0.8 0.5)),((0.2 0.8 0.5,0.2 0.2 0.5,0.8 0.2 0.5,0.2 0.8 0.5)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true

## Polyhedral / Polyhedral
# intersection on a vertex
2|POLYHEDRALSURFACE(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYHEDRALSURFACE(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# intersection on an edge
2|POLYHEDRALSURFACE(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYHEDRALSURFACE(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# overlapping
2|POLYHEDRALSURFACE(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYHEDRALSURFACE(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
# inside
2|POLYHEDRALSURFACE(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true
3|POLYHEDRALSURFACE(((0.2 0.8 0,0.8 0.2 0,0.8 0.8 0,0.2 0.8 0)),((0.2 0.8 0,0.2 0.2 0,0.8 0.2 0,0.2 0.8 0)))|POLYHEDRALSURFACE(((0 1 0,1 0 0,1 1 0,0 1 0)),((0 1 0,0 0 0,1 0 0,0 1 0)))|true

## Polyhedral / Solid
# polygon intersects on a vertex
3|POLYHEDRALSURFACE(((-1 0 0,0 -1 0,0 0 0,-1 0 0)),((-1 0 0,-1 -1 0,0 -1 0,-1 0 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon intersects on an edge
3|POLYHEDRALSURFACE(((-1 1 0,0 0 0,0 1 0,-1 1 0)),((-1 1 0,-1 0 0,0 0 0,-1 1 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping a face
3|POLYHEDRALSURFACE(((-0.5 0.5 0,0.5 0 0,0.5 0.5 0,-0.5 0.5 0)),((-0.5 0.5 0,-0.5 0 0,0.5 0 0,-0.5 0.5 0)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon overlapping the volume
3|POLYHEDRALSURFACE(((-0.5 0.5 0.5,0.5 0 0.5,0.5 0.5 0.5,-0.5 0.5 0.5)),((-0.5 0.5 0.5,-0.5 0 0.5,0.5 0 0.5,-0.5 0.5 0.5)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# polygon inside the solid
3|POLYHEDRALSURFACE(((0.2 0.8 0.5,0.8 0.2 0.5,0.8 0.8 0.5,0.2 0.8 0.5)),((0.2 0.8 0.5,0.2 0.2 0.5,0.8 0.2 0.5,0.2 0.8 0.5)))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true

## Solid / Solid
# solid translated by 2 0 0 x solid
3|SOLID(( ((2 0 0,2 1 0,3 1 0,3 0 0,2 0 0)), ((3 0 0,3 1 0,3 1 1,3 0 1,3 0 0)), ((2 1 0,2 1 1,3 1 1,3 1 0,2 1 0)), ((2 0 1,2 1 1,2 1 0,2 0 0,2 0 1)), ((3 0 1,3 1 1,2 1 1,2 0 1,3 0 1)), ((3 0 0,3 0 1,2 0 1,2 0 0,3 0 0)) ))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|false
# a touching solid (on the edge)
3|SOLID((((1 -0 -0,1 1 -0,2 1 -0,2 -0 -0,1 -0 -0)),((2 -0 -0,2 1 -0,2 1 1,2 -0 1,2 -0 -0)),((1 1 -0,1 1 1,2 1 1,2 1 -0,1 1 -0)),((1 -0 1,1 1 1,1 1 -0,1 -0 -0,1 -0 1)),((2 -0 1,2 1 1,1 1 1,1 -0 1,2 -0 1)),((2 -0 -0,2 -0 1,1 -0 1,1 -0 -0,2 -0 -0))))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
# an overlapping solid
3|SOLID((((1 -0 -0,1 1 -0,2 1 -0,2 -0 -0,1 -0 -0)),((2 -0 -0,2 1 -0,2 1 1,2 -0 1,2 -0 -0)),((1 1 -0,1 1 1,2 1 1,2 1 -0,1 1 -0)),((1 -0 1,1 1 1,1 1 -0,1 -0 -0,1 -0 1)),((2 -0 1,2 1 1,1 1 1,1 -0 1,2 -0 1)),((2 -0 -0,2 -0 1,1 -0 1,1 -0 -0,2 -0 -0))))|SOLID(( ((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)), ((1 0 0,1 1 0,1 1 1,1 0 1,1 0 0)), ((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)), ((0 0 1,0 1 1,0 1 0,0 0 0,0 0 1)), ((1 0 1,1 1 1,0 1 1,0 0 1,1 0 1)), ((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)) ))|true
## TODO : solids with holes

# reversed polygon
2|POLYGON((0 0,0 1,1 1,1 0,0 0))|POINT(0.5 0.5)|true
3|POLYGON((0 0,0 1,1 1,1 0,0 0))|POINT(0.5 0.5 0)|true
2|POLYGON((0 0,0 1,1 1,1 0,0 0))|LINESTRING(0 0,1 1)|true
3|POLYGON((0 0,0 1,1 1,1 0,0 0))|LINESTRING(0 0,1 1)|true
2|POLYGON((0 0,0 1,1 1,1 0,0 0))|POLYGON((0 0,1 0,1 1,0 1,0 0))|true
2|POLYGON((0 0,0 1,1 1,1 0,0 0),(0.4 0.4,0.6 0.4,0.6 0.6,0.4 0.6,0.4 0.4))|POLYGON((0 0,1 0,1 1,0 1,0 0))|true

# reversed solids
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|POINT(0.5 0.5 0.5)|true
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|POINT(1.5 0.5 0.5)|false
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|LINESTRING(0 0 0,0.5 0.5 0.5)|true
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|POLYGON((0.2 0.2 0.5,0.8 0.2 0.5,0.8 0.8 0.5,0.2 0.8 0.5,0.2 0.2 0.5))|true
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|true
3|SOLID((((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)),((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)),((0 0 0,0 0 1,1 0 1,1 0 0,0 0 0)),((1 0 0,1 0 1,1 1 1,1 1 0,1 0 0)),((0 0 1,0 1 1,1 1 1,1 0 1,0 0 1)),((0 1 0,1 1 0,1 1 1,0 1 1,0 1 0))))|SOLID((((0.2 0.2 0.2,0.2 0.8 0.2,0.2 0.8 0.8,0.2 0.2 0.8,0.2 0.2 0.2)),((0.2 0.2 0.2,0.8 0.2 0.2,0.8 0.8 0.2,0.2 0.8 0.2,0.2 0.2 0.2)),((0.2 0.2 0.2,0.2 0.2 0.8,0.8 0.2 0.8,0.8 0.2 0.2,0.2 0.2 0.2)),((0.8 0.2 0.2,0.8 0.2 0.8,0.8 0.8 0.8,0.8 0.8 0.2,0.8 0.2 0.2)),((0.2 0.2 0.8,0.2 0.8 0.8,0.8 0.8 0.8,0.8 0.2 0.8,0.2 0.2 0.8)),((0.2 0.8 0.2,0.8 0.8 0.2,0.8 0.8 0.8,0.2 0.8 0.8,0.2 0.8 0.2))))|true

