# R_GE_R_SELF_INTERSECTION

## Anforderung

| ID | R_GE_R_SELF_INTERSECTION |
|---- | ---- |
| Beschreibung | Ein Ring soll einfach sein, also sich nicht selbstverschneiden. Die Selbstverschneidung kann an einem konkreten Punkt sein, oder auch nicht. |
| Parameter minVertexDistance | Punkte können als gleich angesehen werden, trotz (kleiner) Abstände, [siehe Vertex Anforderungen](geometric.md). Dieser Parameter wird auch dazu verwendet um zu bestimmen wann ein Punkt eine Kante berührt. |
| Fehlercode | GE_R_SELF_INTERSECTION |

Beispiele für Selbstverschneidungen:

Schleife:  
![BowtieSelfInt](img/BowtieSelfInt.png)

Punkt berührt Kante mit Parameter minVertexDistance:  
![TouchingEdge](img/TouchingEdge.png)

Doppelte Punkte:  
![Duplicate points](img/DuplicatePoints.png)

Doppelte Kante (Gleich wie doppelte Punkte):  
![LineSelfInt](img/LineSelfInt.png)

## Prüfung

| ID | C_GE_R_SELF_INTERSECTION|
|---- | ---- |
| Anforderungs ID | R_GE_R_SELF_INTERSECTION |
| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_CONSECUTIVE_POINTS_SAME](R_GE_R_CONSECUTIVE_POINTS_SAME.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md)  |
| Beschreibung | Erkennt doppelte Punkte und Selbstverschneidende Kanten. |
| Fehlercodes | GE_R_SELF_INTERSECTION |  

| ID | C_GE_R_DUPLICATE_POINT|
|---- | ---- |
| Anforderungs ID | R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (teilweise) |
| Vorbedingungen | R_SC_SCHEMA_VALIDATION, [R_GE_R_TOO_FEW_POINTS](R_GE_R_TOO_FEW_POINTS.md), [R_GE_R_NOT_CLOSED](R_GE_R_NOT_CLOSED.md) |
| Beschreibung | Erkennt wiederholende und nicht wiederholende doppelte Punkte. Letzteres ist eine Selbstverschneidung. |
| Fehlercodes | GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION |  
