# R_GE_P_NON_PLANAR

## Anforderung

| ID | R_GE_P_NON_PLANAR |
|---- | ---- |
| Beschreibung |  Jedes Polygon muss Planar sein. Planrität ist erreicht wenn kein Punkt weiter als *distanceTolerance* von der Regressionsebene aller Punkte ist, sowie die Normalen jedes Dreicks des tessilierten Polygons keine größere Winkelabweichung als *angleTolerance* haben. |
| Parameter 1:   type | Der Typ der Panaritätsprüfung kann ausgewählt werden. Muss eins von *distance*, *angle*, *both* sein.<ul><li>Wenn der Parameter *distance* ist: Nur die Distanzprüfung wird ausgeführt.</li><li> Wenn der Parameter *angle* ist: Nur die Normalenabweichungsprüfung wird ausgeführt.</li><li>Wenn der Parameter *both* ist: Beide Prüfungen werden ausgeführt.</li></ul> |
| Parameter 2:   distanceTolerance | Toleranz der Distanz eines Punktens von der Regressionsebene |
| Parameter 3:   angleTolerance | Toleranz des Winkels der Dreiecksnormalen |
| Fehlercodes | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |  

Normalen Abweichung:   
![normalDeviation](img/normalDeviation.png)

!!! warning
	Das Ergebnis der Normalenprüfung ist abhängig von dem Ergebnis der Tesselierung und damit nicht 100% zuverlässig.


## Prüfung

| ID | C_GE_P_NON_PLANAR |
|---- | ---- |
| Anfoderungs ID | R_GE_P_NON_PLANAR |
| Vorbedingungen | R_SC_SCHEMA_VALIDATION, R_GE_R_ALL |
| Beschreibung | Tesseliert um die Dreiecksnormalen zu berechnen. Erstellt eine Regressionsebene aus allen Polygonpunkten um den Abstand der Punkte zur Ebene zu berechnen |
| Fehlercode | GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION |   
