Änderungen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:  
__TOC__
 
__TOC__
    +
== Dokumentversionen ==
 +
<!-- erste Reihe von Beispielen -->
 +
<table  border="1" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
    <th width="220">
 +
Version
 +
    </th>
 +
    <th width="220">
 +
Datum
 +
    </th>
 +
    <th width="220">
 +
Autor/en
 +
    </th>
 +
    <th width="220">
 +
Status
 +
    </th> 
 +
    <th width="220">
 +
Bemerkungen
 +
    </th>
 +
</tr>
 +
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.1.0
 +
    </td>
 +
    <td width="220">
 +
01.10.2010
 +
    </td>
 +
    <td>
 +
Coors
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Erstfassung
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.2.0
 +
    </td>
 +
    <td width="220">
 +
14.10.2010
 +
    </td>
 +
    <td>
 +
Coors
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Solid ergänzt
 +
    </td>
 +
  </tr>
 +
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.3.0
 +
    </td>
 +
    <td width="220">
 +
23.10.2010
 +
    </td>
 +
    <td>
 +
Gröger
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Verschmelzung mit Paper Gröger
 +
    </td>
 +
  </tr>
 +
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.4.0
 +
    </td>
 +
    <td width="220">
 +
23.11.2010
 +
    </td>
 +
    <td>
 +
Coors
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Redaktionelle Änderungen und Ergänzungen zu Planarität von Polygonen
 +
    </td>
 +
  </tr>
 +
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.5.0
 +
    </td>
 +
    <td width="220">
 +
24.11.2010
 +
    </td>
 +
    <td>
 +
Gröger
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Einarbeitung der Änderungen, die im CityGML-Forum von K.-H. Häfele vorgeschlagen wurden
 +
    </td>
 +
  </tr>
 +
 +
  <tr align="left" valign="top" bgcolor="green">
 +
    <td>
 +
0.6.0
 +
    </td>
 +
    <td width="220">
 +
15.12.2010
 +
    </td>
 +
    <td>
 +
Gröger
 +
    </td> 
 +
    <td>
 +
öffentlich
 +
    </td> 
 +
    <td>
 +
Einarbeitung der Anregungen von G. Juen
 +
    </td>
 +
  </tr>
 +
 +
  <tr align="left" valign="top">
 +
    <td>
 +
0.7.0
 +
    </td>
 +
    <td width="220">
 +
20.01.2012
 +
    </td>
 +
    <td>
 +
Häfele
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Konvertierung in Html, Verschiebung des Kapitel Planarität von Polygonen, Neues Kapitel CompositeSolid
 +
    </td>
 +
  </tr>
    +
<tr align="left" valign="top">
 +
    <td>
 +
0.7.1
 +
    </td>
 +
    <td width="220">
 +
20.01.2012
 +
    </td>
 +
    <td>
 +
Häfele
 +
    </td> 
 +
    <td>
 +
nicht öffentlich
 +
    </td> 
 +
    <td>
 +
Lizenzwechsel auf Creative Commons BY-NC-SA 4.0
 +
    </td>
 +
  </tr>
 +
 +
  </table>
    +
{| width="100%" cellspacing="6" border="0"
 +
|- valign="top" align="left"
 +
| width="80%" | <div style="margin: 10px; border: 2px solid #dfdfdf; background-color:#f8f8ff;">{{Copyright-BY-NC-SA-4.0}}</div>
 +
|}
   −
== Vorbemerkungen: ==
+
== Vorbemerkungen ==
 
* Die Regeln beziehen sich auf GML Version 3.1.
 
* Die Regeln beziehen sich auf GML Version 3.1.
 
* Es wird davon ausgegangen, dass die Daten valide sind bzgl. des XML-Schemas von GML 3.1.
 
* Es wird davon ausgegangen, dass die Daten valide sind bzgl. des XML-Schemas von GML 3.1.
 
* Die Regeln sind eingeschränkt auf die Elemente von GML, die von CityGML genutzt werden (Profil von GML, siehe Abbildung 1 und Abbildung 2).
 
* Die Regeln sind eingeschränkt auf die Elemente von GML, die von CityGML genutzt werden (Profil von GML, siehe Abbildung 1 und Abbildung 2).
 
* Falls eine Bedingung nur für CityGML und nicht für GML im Allgemeinen gilt, so ist dies explizit vermerkt.
 
* Falls eine Bedingung nur für CityGML und nicht für GML im Allgemeinen gilt, so ist dies explizit vermerkt.
 
+
    
<table  border="0" cellspacing="0">
 
<table  border="0" cellspacing="0">
Zeile 19: Zeile 187:  
   <tr align="left" valign="top">
 
   <tr align="left" valign="top">
 
     <td>
 
     <td>
Abbildung 1: Profil von GML, das in CityGML verwendet wird (Primitive und Komposite)
+
'''Abbildung 1:''' Profil von GML, das in CityGML verwendet wird (Primitive und Komposite)
 
     </td>
 
     </td>
 
   </tr>
 
   </tr>
Zeile 32: Zeile 200:  
   <tr align="left" valign="top">
 
   <tr align="left" valign="top">
 
     <td>
 
     <td>
Abbildung 2: Profil von GML, das in CityGML verwendet wird (Komplexe und Aggregate)
+
'''Abbildung 2:''' Profil von GML, das in CityGML verwendet wird (Komplexe und Aggregate)
 
     </td>
 
     </td>
 
   </tr>
 
   </tr>
 
</table>
 
</table>
   −
== Spatial Reference Systems (SRS) ==
+
== <span id="Spatial-Reference-System">Spatial Reference Systems (SRS)</span> ==
 
* Jedes Geometrie-Element (einschließlich pos, posList and coordinates) muss  
 
* Jedes Geometrie-Element (einschließlich pos, posList and coordinates) muss  
 
** entweder im srsName-Attribut mit einem Wert belegt sein, oder
 
** entweder im srsName-Attribut mit einem Wert belegt sein, oder
Zeile 54: Zeile 222:  
Problematisch bei dieser Definition ist, dass auch minimale Knicke und Falten, wie in Abbildung 6 dargestellt, als planar akzeptiert werden. Dies entspricht aber in der Regel nicht dem intuitiven Verständnis einer planaren Fläche.
 
Problematisch bei dieser Definition ist, dass auch minimale Knicke und Falten, wie in Abbildung 6 dargestellt, als planar akzeptiert werden. Dies entspricht aber in der Regel nicht dem intuitiven Verständnis einer planaren Fläche.
    +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="50%">
 +
[[image:Teil1-ABB6a.png|450px]]
 +
</td>
 +
    <td width="50%">
 +
[[image:Teil1-ABB6b.png|450px]]
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="2">
 +
'''Abbildung 3:''' Minimale Knicke und Falten sollen auch bei nahezu planarenlinearen Ringen vermieden werden.
 +
    </td>
 +
  </tr>
 +
</table>
    
Wenn solche Knicke und Falten erkannt werden sollen, muss das Kriterium zur Toleranz bei planaren linearen Ringen ergänzt werden. Es ergibt sich eine alternative Definition der Planarität Linearer Ringe:
 
Wenn solche Knicke und Falten erkannt werden sollen, muss das Kriterium zur Toleranz bei planaren linearen Ringen ergänzt werden. Es ergibt sich eine alternative Definition der Planarität Linearer Ringe:
Zeile 63: Zeile 246:     
   
 
   
  Für die Überprüfung der Planarität wäre es wünschenswert, eine Vorgabe für die Schranke <math>\epsilon</math> zu haben.<br> Da die Eigenschaft der Planarität invariant gegenüber Skalierungen sein sollte,<br> sollte in den Wert von <math>\epsilon</math> die Ausdehnung bzw. Größe (Flächeninhalt, max. Punktabstand) des Linearen Ringes eingehen.
+
  Für die Überprüfung der Planarität wäre es wünschenswert, eine Vorgabe für die Schranke <math>\epsilon</math> zu haben.<br> Da die Eigenschaft der Planarität invariant gegenüber Skalierungen sein sollte,<br /> sollte in den Wert von <math>\epsilon</math> die Ausdehnung bzw. Größe (Flächeninhalt, max. Punktabstand) des Linearen Ringes eingehen.<br /> Dazu sollte die Punktgenauigkeit bekannt/festgelegt sein.
 +
 
 +
== <span id="posList">[http://www.schemacentral.com/sc/niem21/e-gml32_posList.html gml:posList]</span> ==
 +
* Die Anzahl der Einträge in der Liste entspricht dem Produkt der Dimension des SRS und der Anzahl der direct positions.
 +
 
   −
== gml:_Curve, gml:LineString ==
+
== <span id="Curve"><span id="LineString">[http://www.schemacentral.com/sc/niem21/e-gml32_Curve.html gml:_Curve], [http://www.schemacentral.com/sc/niem21/e-gml32_LineString.html gml:LineString]</span></span> ==
 
* als _Curves sind nur gml:LineStrings erlaubt (gilt nur für CityGML)
 
* als _Curves sind nur gml:LineStrings erlaubt (gilt nur für CityGML)
 
* ein gml:LineString hat lineare Interpolation  
 
* ein gml:LineString hat lineare Interpolation  
Zeile 75: Zeile 262:       −
== gml:posList ==
+
== <span id="LinearRing">[http://www.schemacentral.com/sc/niem21/e-gml32_LinearRing.html gml:LinearRing]</span> ==
* Die Anzahl der Einträge in der Liste entspricht dem Produkt der Dimension des SRS und der Anzahl der direct positions.
  −
 
  −
== gml:LinearRing ==
      
Der Linear Ring ist das grundlegende Element zur Geometriebeschreibung in CityGML. Jedes einzelne Polygon einer Gebäudegeometrie wird durch seinen Umring definiert. Eben dieser Umring wird durch das Element „Linear Ring“ beschrieben.
 
Der Linear Ring ist das grundlegende Element zur Geometriebeschreibung in CityGML. Jedes einzelne Polygon einer Gebäudegeometrie wird durch seinen Umring definiert. Eben dieser Umring wird durch das Element „Linear Ring“ beschrieben.
Zeile 88: Zeile 272:  
(i) Der erste und der letzte Punkt der Sequenz sind identisch: <math>P_0 =P_n </math> '''(closeness)'''
 
(i) Der erste und der letzte Punkt der Sequenz sind identisch: <math>P_0 =P_n </math> '''(closeness)'''
   −
(ii) Mit Ausnahme des ersten und letzten Punktes sind alle Punkte verschieden, d.h. <math>\forall P_i\ne P_k</math>  
+
(ii) Mit Ausnahme des ersten und letzten Punktes sind alle Punkte verschieden, d.h.  
 +
<math>\underset{\underset {i \ne k}{\underset{k=0...n-1}{i=0...n-1}}}{\forall} P_i\ne P_k</math> Formelschreibweise überprüfen
    
(iii) Zwei Kanten <math>(P_i , P_{i+1})</math> und <math>(P_k , P_{k+1})</math> mit <math>i = 0 ... (n-1), k= 0 ... (n-1), i \not= k</math>  dürfen sich nur in einem Start-/ Endpunkt berühren. Weitere Schnitt- bzw. Berührungspunkte sind nicht zulässig '''(no self intersection)'''.
 
(iii) Zwei Kanten <math>(P_i , P_{i+1})</math> und <math>(P_k , P_{k+1})</math> mit <math>i = 0 ... (n-1), k= 0 ... (n-1), i \not= k</math>  dürfen sich nur in einem Start-/ Endpunkt berühren. Weitere Schnitt- bzw. Berührungspunkte sind nicht zulässig '''(no self intersection)'''.
Zeile 94: Zeile 279:  
Sind alle Punkte der Sequenz ko-planar, wird der Linear Ring [[#Planarität|planar]] genannt.
 
Sind alle Punkte der Sequenz ko-planar, wird der Linear Ring [[#Planarität|planar]] genannt.
   −
== gml:Polygon ==
+
'''Beispiel:'''
 +
 
 +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
<math>R=(P_0,P_1,P_2,P_3,P_0)</math>
 +
 
 +
mit
 +
 
 +
<math>P_0 =(1,1,1)</math>
 +
 
 +
<math>P_1 =(3,1,1)</math>
 +
 
 +
<math>P_2 =(3,3,1)</math>
 +
 
 +
<math>P_3 =(1,3,1)</math>
 +
</td>
 +
<td width="33%">
 +
<gml:LinearRing>
 +
 
 +
<gml:pos> 1 1 1 </gml:pos>
 +
 
 +
<gml:pos> 3 1 1 </gml:pos>
 +
 
 +
<gml:pos> 3 3 1 </gml:pos>
 +
 
 +
<gml:pos> 1 3 1 </gml:pos>
 +
 
 +
<gml:pos> 1 1 1 </gml:pos>
 +
 
 +
</gml:LinearRing>
 +
</td>
 +
    <td>
 +
[[image:Teil1-ABB3.png]]
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="3">
 +
'''Abbildung 4:''' Planarer Linear Ring nach Definition, in GML und als graphische Darstellung
 +
    </td>
 +
  </tr>
 +
</table>
 +
 
 +
 
 +
'''Hinweis:'''
 +
Die beiden linearen Ringe <math>R_1 = (P_0,P_1,P_2,P_3,P_0)</math> und <math>R_2 = (P_0,P_3,P_2,P_1,P_0)</math>  sind nicht identisch.
 +
 
 +
 
 +
<table width="900px"  border="0" cellspacing="0" cellpadding="5">
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
[[image:Teil1-ABB4a.png]]</td>
 +
<td width="33%">
 +
[[image:Teil1-ABB4b.png]]</td>
 +
    <td>
 +
[[image:Teil1-ABB4c.png]]
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
<math>R=(P_0,P_1,P_2,P_3)</math>
 +
</td>
 +
<td width="33%">
 +
<math>R=(P_0,P_1,P_3,P_2,P_0)</math>
 +
</td>
 +
    <td>
 +
<math>R=(P_0,P_1,P_4,P_3,P_2,P_4,P_0)</math>
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
Kein Linear Ring, da nicht geschlossen (siehe (i) closeness)
 +
</td>
 +
<td width="33%">
 +
Kein Linear Ring, da sich zwei Kanten schneiden (siehe (iii) self-intersection)
 +
</td>
 +
    <td>
 +
Kein Linear Ring, da P_4 in der Sequenz doppelt vorkommt (siehe (ii), <math>P_4=(2,2,1)</math>)
 +
    </td>
 +
  </tr>
 +
 
 +
  <tr align="left" valign="top">
 +
    <td colspan="3">
 +
'''Abbildung 5:''' Beispiele für Punktsequenzen, die keine Linear Ring Elemente beschreiben.    </td>
 +
  </tr>
 +
</table>
 +
 
 +
 
 +
<table width="600px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
[[image:Teil1-ABB5a.png|250px]]</td>
 +
<td width="33%">
 +
[[image:Teil1-ABB5b.png]]</td>
 +
 
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
<math>R=(P_0,P_1,P_2,P_4,P_3,P_0)</math>
 +
</td>
 +
<td width="33%">
 +
<math>R=(P_0,P_1,P_2,P_0)</math>
 +
</td>
 +
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
<td width="33%">
 +
Linear Ring, der nicht planar ist <math>P_4=(2,4,0)</math></td>
 +
<td width="33%">
 +
Kein Linear Ring, da die 3Punkte ko-linear sind, <math>P_1=(2,2,1)</math>; Kanten berühren sich im Innern (siehe (iii))
 +
</td>
 +
 +
  </tr>
 +
 
 +
  <tr align="left" valign="top">
 +
    <td colspan="3">
 +
'''Abbildung 6:''' Sonderfälle: nichtplanare und ko-linesre Linear Ring Elemente.    </td>
 +
  </tr>
 +
</table>
 +
 
 +
== <span id="Polygon">[http://www.schemacentral.com/sc/niem21/e-gml32_Polygon.html gml:Polygon]</span> ==
 
* Ein planarer linearer Ring <math>R_s</math> definiert den Rand eines Polygons <math>S</math> (äußerer Ring).
 
* Ein planarer linearer Ring <math>R_s</math> definiert den Rand eines Polygons <math>S</math> (äußerer Ring).
 
* Ein Polygon ist durch genau einen solchen äußeren Ring und <math>n\ge0</math> innere Ringe definiert. Jeder innere lineare Ring muss ebenfalls planar sein, und der äußere und alle inneren linearen Ringe müssen in derselben Ebene (im Rahmen einer gegebenen Toleranz) liegen.
 
* Ein Polygon ist durch genau einen solchen äußeren Ring und <math>n\ge0</math> innere Ringe definiert. Jeder innere lineare Ring muss ebenfalls planar sein, und der äußere und alle inneren linearen Ringe müssen in derselben Ebene (im Rahmen einer gegebenen Toleranz) liegen.
* Jeder innere lineare Ring muss innerhalb des Gebiets der Ebene liegen, das der äußere Ring begrenzt.
+
* Jeder '''innere''' lineare Ring '''muss innerhalb des Gebiets''' der Ebene liegen, das der '''äußere''' Ring begrenzt.
* Die inneren linearen Ringe dürfen nicht verschachtelt sein, d.h. kein innerer Ring liegt in dem Gebiet der Ebene, das ein anderer innerer Ring definiert.  
+
<table width="900px"  border="0" cellspacing="0">
* Die inneren Ringe und der äußere Ring dürfen sich paarweise in endlich vielen Punkten berühren. Dabei muss das Innere  des Polygons zusammenhängend sein.  
+
  <tr align="left" valign="top">
* Die Reihenfolge der Punkte des äußeren Linear Rings definiert die Orientierung des Polygons. In   existieren mindestens drei nicht ko-lineare Punkte  , , und  , die eine Ebene aufspannen. Der Vektor , der sich aus dem normalisieren Kreuzprodukt der beiden Vektoren   und   ergibt, wird als Flächennormale des Polygons bezeichnet:
+
<td width="100%">
 +
[[image:InnerLoops-02-2.png|500px]]
 +
</td>
 +
 
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="1">
 +
'''Abbildung 5:''' Polygon mit <span style="color:#008000">korrektem inneren Ring (links)</span> und <span style="color:#FF0000">nicht korrektem inneren Ring (rechts)</span> </td>
 +
  </tr>
 +
</table>
 +
* Die inneren linearen Ringe dürfen nicht verschachtelt sein, d.h. kein innerer Ring liegt in dem Gebiet der Ebene, das ein anderer innerer Ring definiert.
 +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="100%">
 +
[[image:InnerLoops-04-2.png|500px]]
 +
</td>
 +
 
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="1">
 +
'''Abbildung 5:''' Polygon mit <span style="color:#008000">zwei korrekten inneren Ringen (links)</span> und zwei verschachtelten, <span style="color:#FF0000">nicht korrekten inneren Ringen (rechts)</span> </td>
 +
  </tr>
 +
</table>
 +
* Die inneren Ringe und der äußere Ring dürfen sich paarweise in '''endlich !!!!! (evtl. nur einer)''' vielen Punkten berühren. Dabei muss das Innere  des Polygons zusammenhängend sein.
 +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="100%">
 +
[[image:InnerLoops-05-2.png|500px]]
 +
</td>
 +
 
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="1">
 +
'''Abbildung 5:''' Polygon mit <span style="color:#008000">korrektem, innerem Ring, der den außeren Ring an einem Punkt berührt (links)</span> und <span style="color:#FF0000">nicht korrektem innerem Ring, der den äußeren Ring an zwei Punkten berührt und damit dass Polygon spaltet (rechts)</span> </td>
 +
  </tr>
 +
</table>
 +
* Die Reihenfolge der Punkte des äußeren Linear Rings definiert die '''Orientierung''' des Polygons. In <math>R</math> existieren mindestens drei nicht ko-lineare Punkte  <math>P_i</math>, <math>P_j</math> und  <math>P_k</math>, die eine Ebene <math>E(P_i,P_j,P_k)</math> aufspannen. Der Vektor <math>\vec n</math> , der sich aus dem normalisieren Kreuzprodukt der beiden Vektoren <math>\vec{P_iP_j}</math>  und <math>\vec{P_jP_k}</math>  ergibt, wird als Flächennormale des Polygons bezeichnet:  
 +
 
 +
<math>\vec n = \frac {\vec{P_iP_j}\times\vec{P_jP_k}}{\| {\vec{P_iP_j}\times\vec{P_jP_k}}\|}</math>
 
 
 
 
 
Bemerkung:  
 
Bemerkung:  
Zeile 106: Zeile 449:     
Hinweis:  
 
Hinweis:  
Die beiden von den linearen Ringen   und   definierten Polygone haben dieselbe geometrische Ausprägung, unterscheiden sich aber hinsichtlich der Orientierung.
+
Die beiden von den linearen Ringen <math>R_1=(P_0,P_1,P_2,P_3,P_0)</math> und <math>R_2=(P_0,P_3,P_2,P_1,P_0)</math> definierten Polygone haben dieselbe geometrische Ausprägung, unterscheiden sich aber hinsichtlich der Orientierung.
 +
 
 +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="100%">
 +
[[image:Teil1-ABB7.png|300px]]
 +
</td>
 +
 
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="1">
 +
'''Abbildung 5:''' Polygon mit Flächennormale n </td>
 +
  </tr>
 +
</table>
   −
== gml:OrientableSurface ==
+
== <span id="OrientableSurface">[http://www.schemacentral.com/sc/niem21/e-gml32_OrientableSurface.html gml:OrientableSurface]</span> ==
* Hat das Attribut “orientation” den Wert "+", so ist die OrientableSurface identisch zu der baseSurface. Ist der Wert der Orientierung " ", dann entspricht die OrientableSurface einer Surface mit einer Normalen, die der Normalen der baseSurface entgegen gesetzt gerichtet ist. "+" ist der Default-Wert des Attributs “orientation”.
+
* Hat das Attribut “orientation” den Wert "+", so ist die OrientableSurface identisch zu der baseSurface. Ist der Wert der Orientierung "-", dann entspricht die OrientableSurface einer Surface mit einer Normalen, die der Normalen der baseSurface entgegen gesetzt gerichtet ist. "+" ist der Default-Wert des Attributs “orientation”.
 
* Entweder referenziert das Element “baseSurface” die base surface durch ein XLink-Attribut, oder das Element “baseSurface” enthält die base surface als Kindelement. Die base surface hat eine positive Orientierung.
 
* Entweder referenziert das Element “baseSurface” die base surface durch ein XLink-Attribut, oder das Element “baseSurface” enthält die base surface als Kindelement. Die base surface hat eine positive Orientierung.
   −
== gml:Solid ==
+
 
 +
== <span id="MultiSurface">[http://www.schemacentral.com/sc/niem21/e-gml32_MultiSurface.html gml:MultiSurface]</span> ==
 +
Eine Menge <math>M=\lbrace S_1,S_2,...S_n\rbrace</math>  von Polygonen wird als '''MultiSurface''' bezeichnet. Es gelten keinerlei Bedingungen für die Struktur der in  <math>S</math> enthaltenen Polygone. Sie können sich beispielsweise überlappen oder durchdringen. Es ist auch nicht notwendig, dass die Polygone in <math>S</math>  eine zusammenhängende Oberfläche beschreiben. Die Polygone können beliebig orientiert sein.
 +
 
 +
Das MultiSurface-Element ist daher sehr einfach zu nutzen.
 +
 
 +
Allerdings sind die häufigsten Fehler, die in einem Modell enthalten sind, auf die Verwendung von MultiSurface-Elemente zurückzuführen, da keinerlei strukturgebende Randbedingungen vorhanden sind.
 +
 
 +
In der Computergraphik wird eine solche Menge von Polygonen ohne explizite Struktur auch „Polygon-Suppe“ genannt.
 +
 +
Problematisch ist bei der Verwendung von MultiSurface Elementen, dass mit diesem Geometrieelement Objekte dargestellt werden können, die keine Festkörper sind. Dies ist zwar ein sehr flexibler Ansatz, sollte aber nur verwendet werden, wenn explizit keine Festkörper modelliert werden sollen.
 +
 
 +
<table width="900px"  border="0" cellspacing="0">
 +
  <tr align="left" valign="top">
 +
<td width="50%">
 +
[[image:Teil1-ABB8a.png|450px]]
 +
</td>
 +
    <td width="50%">
 +
[[image:Teil1-ABB8b.png|450px]]
 +
    </td>
 +
  </tr>
 +
  <tr align="left" valign="top">
 +
    <td colspan="2">
 +
'''Abbildung 6:''' Modellierung von Dachüberständen als einfache Polygone. Im linken Modell wird das Gebäude mit einer MultiSurface-Geometrie beschrieben, die aus 7 Polygonen besteht. Eine Volumenberechnung ist nicht möglich, da es sich um keinen geschlossen Körper handelt. Die rechte Abbildung zeigt dasselbe Modell, nun durch eine Solid (Gebäude) und eine zusätzliche MultiSurface-Geometrie (2 Polygone für Dachüberstand) beschrieben (vgl. CityGML Standard v1.0, S.61). Diese Variante ist zu empfehlen.
 +
    </td>
 +
  </tr>
 +
</table>
 +
 
 +
== <span id="CompositeSurface"> [http://www.schemacentral.com/sc/niem21/e-gml32_CompositeSurface.html gml:CompositeSurface]</span>==
 +
 
 +
Eine CompositeSurface ist eine Menge <math>C=\lbrace S_1,S_2,...,S_n \rbrace</math> von Polygonen, für die
 +
folgendes gilt:
 +
 
 +
# Die Schnittmenge zweier Polygone <math>S_k</math>  und <math>S_l</math>  aus <math>C</math>  ist entweder leer oder besteht nur aus Punkten und/oder Kanten, die auch in den beiden linearen Ringen vorkommen. Bezeichne <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math>  den planaren linearen Ring, der das Polygon <math>S</math> definiert. Dann gilt:<br><math>S_i \cap S_k= \begin{cases}\emptyset\\ \lbrace Q_0,Q_1,...,Q_m\rbrace,Q_j=P_k^i\\ \lbrace e_0,e_1,...,e_m\rbrace,e_j=\overline{P_i^kP_{i+1}^k} \end{cases}</math>
 +
# Jede Kante <math>e_k=\overline{P_i^kP_{i+1}^k}</math> eines linearen Rings <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math> , der ein Polygon <math>S_k \in C</math>  definiert, wird höchstens  einmal als Kante <math>e_l=\overline{P_j^lP_{j+1}^l}</math>  in einem linearen Ring <math>R_l=(P_0^l,P_1^l,...,P_m^l)</math>  genutzt, der ein anderes Polygon <math>S_l \in C</math>  definiert.<br>Es gilt <math>P_i^k=P_{j+1}^l</math>  und <math>P_{i+1}=P_j^l</math>.
 +
# Die Polygone aus <math>C</math> sind so orientiert, dass die Flächennormale benachbarte Polygone in dieselbe Richtung zeigen.
 +
# Die Vereinigung aller Polygone aus <math>C</math> ohne die Kanten oder Punkte, in denen sich die Polygone berühren, ist isomorph zu einem Polygon.
 +
 
 +
Aus (1) und (2) ergibt sich, dass die Oberfläche, die durch  <math>C</math>  beschrieben wird, keine sich gegenseitig überlappenden oder durchdringenden Polygone enthalten darf (Polygone berühren sich höchstens in Punkten oder Kanten).
 +
 
 +
== <span id="Solid"> [http://www.schemacentral.com/sc/niem21/e-gml32_Solid.html gml:Solid]</span>==
    
Ein Solid modelliert einen beliebigen Festkörper. Die Oberfläche des Solid wird über eine Menge von Polygonen beschrieben, die bestimmte strukturgebende Eigenschaften erfüllen müssen.
 
Ein Solid modelliert einen beliebigen Festkörper. Die Oberfläche des Solid wird über eine Menge von Polygonen beschrieben, die bestimmte strukturgebende Eigenschaften erfüllen müssen.
 
Die Menge <math>C=\lbrace S_1,S_2,...,S_n \rbrace</math> von Polygonen beschreibt die Oberfläche eines Solid genau dann, wenn gilt:
 
Die Menge <math>C=\lbrace S_1,S_2,...,S_n \rbrace</math> von Polygonen beschreibt die Oberfläche eines Solid genau dann, wenn gilt:
   −
# Die Schnittmenge zweier Polygone <math>S_k</math>  und <math>S_l</math>  aus <math>C</math>  ist entweder leer oder besteht nur aus Punkten und Kanten, die auch in den beiden linearen Ringen vorkommen. Bezeichne <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math>  den planaren linearen Ring, der das Polygon <math>S</math> definiert. Dann gilt:<br>
+
# Die Schnittmenge zweier Polygone <math>S_k</math>  und <math>S_l</math>  aus <math>C</math>  ist entweder leer oder besteht nur aus Punkten und Kanten, die auch in den beiden linearen Ringen vorkommen. Bezeichne <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math>  den planaren linearen Ring, der das Polygon <math>S</math> definiert. Dann gilt:<br><math>S_i \cap S_k= \begin{cases}\emptyset\\ \lbrace Q_0,Q_1,...,Q_m\rbrace,Q_j=P_k^i\\ \lbrace e_0,e_1,...,e_m\rbrace,e_j=\overline{P_i^kP_{i+1}^k} \end{cases}</math>
 
# Jede Kante <math>e_k=\overline{P_i^kP_{i+1}^k}</math> eines linearen Rings <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math> , der ein Polygon <math>S_k \in C</math>  definiert, wird genau einmal als Kante <math>e_l=\overline{P_j^lP_{j+1}^l}</math>  in einem linearen Ring <math>R_l=(P_0^l,P_1^l,...,P_m^l)</math>  genutzt, der ein anderes Polygon <math>S_l \in C</math>  definiert.<br>Es gilt <math>P_i^k=P_{j+1}^l</math>  und <math>P_{i+1}=P_j^l</math>.
 
# Jede Kante <math>e_k=\overline{P_i^kP_{i+1}^k}</math> eines linearen Rings <math>R_k=(P_0^k,P_1^k,...,P_n^k)</math> , der ein Polygon <math>S_k \in C</math>  definiert, wird genau einmal als Kante <math>e_l=\overline{P_j^lP_{j+1}^l}</math>  in einem linearen Ring <math>R_l=(P_0^l,P_1^l,...,P_m^l)</math>  genutzt, der ein anderes Polygon <math>S_l \in C</math>  definiert.<br>Es gilt <math>P_i^k=P_{j+1}^l</math>  und <math>P_{i+1}=P_j^l</math>.
 
# Die Polygone aus <math>C</math>  sind so orientiert, dass die Flächennormalen nicht ins Innere des Festkörpers zeigen, sondern nach außen.
 
# Die Polygone aus <math>C</math>  sind so orientiert, dass die Flächennormalen nicht ins Innere des Festkörpers zeigen, sondern nach außen.
# Die Polygone aus <math>C</math>  sind zusammenhängend, d.h. in dem dualen Graphen von  <math>C</math> gibt es einen Weg, der alle Knoten umfasst. Der duale Graph G<sub>C</sub> =(V<sub>C</sub>, E<sub>C</sub>)</math> von <math>C</math>  besteht aus einer Menge V<sub>C</sub> von Knoten und einer Menge E<sub>C</sub> von Kanten. Jeder Knoten v aus V<sub>C</sub> repräsentiert genau ein Polygon aus <math>C</math> . Eine Kante zweier Polygone <math>S_k</math>  und <math>S_l</math>  aus <math>C</math>  wird in G<sub>C</sub> durch eine Kante <math>e=(v_{s_k},v_{s_l})</math> in E<sub>C</sub> dargestellt.
+
# Die Polygone aus <math>C</math>  sind zusammenhängend, d.h. in dem dualen Graphen von  <math>C</math> gibt es einen Weg, der alle Knoten umfasst. Der duale Graph G<sub>C</sub> =(V<sub>C</sub>, E<sub>C</sub>) von <math>C</math>  besteht aus einer Menge V<sub>C</sub> von Knoten und einer Menge E<sub>C</sub> von Kanten. Jeder Knoten v aus V<sub>C</sub> repräsentiert genau ein Polygon aus <math>C</math> . Eine Kante zweier Polygone <math>S_k</math>  und <math>S_l</math>  aus <math>C</math>  wird in G<sub>C</sub> durch eine Kante <math>e=(v_{s_k},v_{s_l})</math> in E<sub>C</sub> dargestellt.
# Für jeden Punkt P, der in einem linearen Ring eines Polygons aus   vorkommt, gilt: Der Graph GP =(VP, EP), der aus Polygonen und Kanten gebildet wird, die P berühren, ist zusammenhängend. Dabei repräsentiert jeder Knoten v aus VP genau ein Polygon, dessen linearer Ring P enthält. Zwei Knoten sind genau dann mit einer Kante e aus EP verbunden, wenn die Polygone, die durch die Knoten repräsentiert werden, eine gemeinsame Kante haben, die P berührt .
+
# Für jeden Punkt <math>P</math>, der in einem linearen Ring eines Polygons aus <math>C </math> vorkommt, gilt: Der Graph <math>G_P =(V_P, E_P)</math>, der aus Polygonen und Kanten gebildet wird, die <math>P</math> berühren, ist zusammenhängend. Dabei repräsentiert jeder Knoten <math>v</math> aus <math>V_P</math> genau ein Polygon, dessen linearer Ring <math>P</math> enthält. Zwei Knoten sind genau dann mit einer Kante <math>e</math> aus <math>E_P</math> verbunden, wenn die Polygone, die durch die Knoten repräsentiert werden, eine gemeinsame Kante haben, die <math>P</math> berührt .
    
Aus (1) und (2) ergibt sich, dass die Oberfläche, die durch  <math>C</math>  beschrieben wird, keine Löcher enthalten darf. Mit den weiteren Bedingungen (4) und (5) ergibt sich, dass das Innere des durch <math>C</math>  beschriebenen Festkörpers zusammenhängend sein muss.  
 
Aus (1) und (2) ergibt sich, dass die Oberfläche, die durch  <math>C</math>  beschrieben wird, keine Löcher enthalten darf. Mit den weiteren Bedingungen (4) und (5) ergibt sich, dass das Innere des durch <math>C</math>  beschriebenen Festkörpers zusammenhängend sein muss.  
<math>S</math> wird auch als geschlossene CompositeSurface bezeichnet.
+
<math>S</math> wird auch als geschlossene [http://www.schemacentral.com/sc/niem21/e-gml32_CompositeSurface.html '''CompositeSurface'''] bezeichnet.
 +
 
 +
 
 +
'''Beispiele:'''
   −
== <span id="MultiSurface">gml:MultiSurface</span> ==
+
<table width="1200px"  border="1" cellspacing="0" style="border:thin">
Eine Menge   von Polygonen wird als MultiSurface bezeichnet. Es gelten keinerlei Bedingungen für die Struktur der in  enthaltenen Polygone. Sie können sich beispielsweise überlappen oder durchdringen. Es ist auch nicht notwendig, dass die Polygone in   eine zusammenhängende Oberfläche beschreiben. Die Polygone können beliebig orientiert sein.
+
<!-- Zeile 1 ------------------------------------------->
Das MultiSurface-Element ist daher sehr einfach zu nutzen.
+
  <tr align="middle" valign="top">
Allerdings sind die häufigsten Fehler, die in einem Modell enthalten sind, auf die Verwendung von MultiSurface-Elemente zurückzuführen, da keinerlei strukturgebende Randbedingungen vorhanden sind.
+
    <td width="300px">
In der Computergraphik wird eine solche Menge von Polygonen ohne explizite Struktur auch „Polygon-Suppe“ genannt.  
+
[[image:Solid-Fall-01.png|200px]]
Problematisch ist bei der Verwendung von MultiSurface Elementen, dass mit diesem Geometrieelement Objekte dargestellt werden können, die keine Festkörper sind. Dies ist zwar ein sehr flexibler Ansatz, sollte aber nur verwendet werden, wenn explizit keine Festkörper modelliert werden sollen.
+
    </td>
 +
    <td width="300px">
 +
[[image:Solid-Fall-02.png|200px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:Solid-Fall-03.png|200px]]
 +
    </td> 
 +
    <td width="300px">
 +
[[image:Solid-Fall-04.png|200px]]
 +
    </td>
 +
 
 +
 
 +
  </tr>
 +
<!-- Zeile 2 --------------------------------------------------->
 +
  <tr align="middle">
 +
  <td width="300px" valign="top">
 +
Korrekt: 6 Flächen, geschlossen, Flächenorientierung korrekt
 +
    </td>
 +
    <td width="300px" valign="top">
 +
Korrekt: 11 Flächen, geschlossen, Flächenorientierung korrekt
 +
    </td>
 +
    <td width="300px" valign="top">
 +
Korrekt: 10 Flächen, geschlossen, Flächenorientierung korrekt
 +
    </td> 
 +
    <td width="300px" valign="top">
 +
Korrekt: 30 Flächen, geschlossen, Flächenorientierung korrekt
 +
    </td> 
 +
</tr>
 +
</table>
 +
 
 +
 
 +
<table width="1200px"  border="1" cellspacing="0" style="border:thin">
 +
<!-- Zeile 1 ------------------------------------------->
 +
  <tr align="middle" valign="top">
 +
    <td width="300px">
 +
[[image:Solid-Fall-05.png|200px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:Solid-Fall-06.png|200px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:Solid-Fall-07.png|200px]]
 +
    </td> 
 +
    <td width="300px">
 +
[[image:Solid-Fall-08.png|200px]]
 +
    </td>
 +
 
 +
 
 +
  </tr>
 +
<!-- Zeile 2 --------------------------------------------------->
 +
  <tr align="middle">
 +
  <td width="300px" valign="top">
 +
Nicht Korrekt: 5 Flächen, nicht geschlossen, Flächenorientierung korrekt
 +
    </td>
 +
    <td width="300px" valign="top">
 +
Nicht Korrekt: 6 Flächen, geschlossen, Flächenorientierung nicht korrekt
 +
    </td>
 +
    <td width="300px" valign="top">
 +
Nicht Korrekt: 12 Flächen, nicht geschlossen (zwei Außenhüllen), Flächenorientierung korrekt
 +
    </td> 
 +
    <td width="300px" valign="top">
 +
Nicht Korrekt: 12 Flächen, nicht geschlossen (innere und äußere Hülle), Flächenorientierung korrekt
 +
    </td> 
 +
</tr>
 +
</table>
 +
 
 +
== <span id="CompositeSolid">[http://www.schemacentral.com/sc/niem21/e-gml32_CompositeSolid.html gml:CompositeSolid]</span>==
 +
Ein CompositeSolid wird durch eine nichtleere Menge <math>C = \{S_1,..., S_n\}</math> von '''[[#Solid|Solids]]''' (vgl. 12.) beschrieben, für die gilt:
 +
 
 +
# Der Schnitt der Inneren zweier Solids <math>S_i</math>, <math>S_j</math>, 1 ≤ i ≤ n, 1 ≤ j ≤ n, i ≠ j, ist leer, d.h. entweder sind beide Solids <math>S_i</math>, <math>S_j</math> disjunkt oder beide berühren sich nur in Flächen, Linien oder Punkten
 +
# Sei <math>C'</math> die Vereinigung aller Solids aus <math>C</math>. Dann ist die Begrenzung von <math>C'</math> (die Oberfläche von <math>C'</math> ohne die Flächen oder Punkte, in denen sich die Solids berühren) die Begrenzung eines Solid.
 +
 
 +
In CityGML werden bei CompositeSolids ebenso wie bei Solids innere Einschlüsse (Hohlräume) nicht betrachtet.
 +
 
 +
 
 +
'''Beispiele:'''
 +
 
 +
<table width="1200px"  border="1" cellspacing="0" style="border:thin">
 +
<!-- Zeile 1 ------------------------------------------->
 +
  <tr align="middle" valign="top">
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall01.png|300px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall02.png|220px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall03.png|240px]]
 +
    </td>    
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall04.png|260px]]
 +
    </td>
 +
 
 +
 
 +
  </tr>
 +
<!-- Zeile 2 --------------------------------------------------->
 +
  <tr align="middle">
 +
  <td width="300px" valign="bottom">
 +
Korrekt; Flächenberührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
Korrekt; Flächenberührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
Korrekt; Flächenberührung
 +
    </td> 
 +
    <td width="300px" valign="bottom">
 +
Korrekt; Flächenberührung
 +
    </td> 
 +
 +
 
 +
</tr>
 +
 
 +
 
 +
</table>
 +
 
 +
 
 +
 
 +
<table width="1200px"  border="1" cellspacing="0" style="border:thin">
 +
<!-- Zeile 1 ------------------------------------------->
 +
  <tr align="middle" valign="top">
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall05.png|260px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall06.png|260px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall07.png|280px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall08.png|180px]]
 +
    </td>
 +
 
 +
  </tr>
 +
<!-- Zeile 2 --------------------------------------------------->
 +
  <tr align="middle">
 +
 +
    <td width="300px" valign="bottom">
 +
Falsch; Linienberührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
Falsch; Punktberührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
Falsch; keine Berührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
Falsch; Durchdringung
 +
    </td>
 +
 
 +
</tr>
 +
 
 +
 
 +
</table>
 +
 
 +
 
 +
<table width="1200px"  border="1" cellspacing="0" style="border:thin">
 +
<!-- Zeile 1 ------------------------------------------->
 +
  <tr align="middle" valign="top">
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall14.png|220px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall14a.png|220px]]
 +
    </td>
 +
    <td width="300px">
 +
[[image:CompositeSolid-01-Fall14b.png|220px]]
 +
    </td> 
 +
 
 +
 
 +
 
 +
  </tr>
 +
<!-- Zeile 2 --------------------------------------------------->
 +
  <tr align="middle">
 +
  <td width="300px" valign="bottom">
 +
Falsch; 26 Quader mit Flächenberührung
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
aber mit Hohlraum
 +
    </td>
 +
    <td width="300px" valign="bottom">
 +
nicht korrekt; Innere Begrenzung
 +
    </td> 
 +
 
 +
 +
 
 +
</tr>
 +
 
 +
 
 +
</table>
   −
== gml:Triangle ==
+
== <span id="Triangle">[http://www.schemacentral.com/sc/niem21/e-gml32_Triangle.html gml:Triangle]</span> ==
 
* Ein Triangle ist ein Spezialfall eines Polygons, das von einem äußeren linearen Ring mit vier Punkten begrenzt wird.
 
* Ein Triangle ist ein Spezialfall eines Polygons, das von einem äußeren linearen Ring mit vier Punkten begrenzt wird.
 
* Es gibt keine inneren Ringe (kein Element "interior").
 
* Es gibt keine inneren Ringe (kein Element "interior").
   −
== gml:TriangulatedSurface ==
+
== <span id="TriangulatedSurface">[http://www.schemacentral.com/sc/niem21/e-gml32_TriangulatedSurface.html gml:TriangulatedSurface]</span> ==
Eine triangulated surface ist eine Composite Surface (vgl. Abschnitt 7), die nur aus triangles besteht, jedoch nicht geschossen ist, d.h. sie darf Ränder besitzen. Bezüglich der Art und Weise, wie die Triangulation hergeleitet wurde, gibt es keine Einschränkung.
+
Eine triangulated surface ist eine Composite Surface (vgl. Abschnitt 10), die nur aus triangles besteht, jedoch nicht geschossen ist, d.h. sie darf Ränder besitzen. Bezüglich der Art und Weise, wie die Triangulation hergeleitet wurde, gibt es keine Einschränkung.
   −
== gml:TIN ==
+
== <span id="TIN">[http://www.schemacentral.com/sc/niem21/e-gml32_Tin.html gml:Tin] </span>==
Im Gegensatz zur gml:TriangulatedSurface sind in einem gml:TIN die triangles nicht explizit repräsentiert, sondern nur durch ihre Eckpunkte (genannt Kontrollpunkte). Zusätzlich können breaklines, stop lines und die maximale Länge einer Dreiecksseite in einem gml:TIN repräsentiert werden.  
+
Im Gegensatz zur gml:TriangulatedSurface sind in einem gml:Tin die triangles nicht explizit repräsentiert, sondern nur durch ihre Eckpunkte (genannt Kontrollpunkte). Zusätzlich können breaklines, stop lines und die maximale Länge einer Dreiecksseite in einem gml:Tin repräsentiert werden.  
    
# Ein TIN ist eine triangulierte Oberfläche, die Ergebnis der Anwendung eines Delaunay Algorithmus oder eines ähnlichen Verfahrenes ist. Diese wird ergänzt um die Berücksichtigung von Stoplinien, Bruchkanten und der max. Länge von Dreieckseiten. Diese Netze erfüllen das Delaunay Kriterium:
 
# Ein TIN ist eine triangulierte Oberfläche, die Ergebnis der Anwendung eines Delaunay Algorithmus oder eines ähnlichen Verfahrenes ist. Diese wird ergänzt um die Berücksichtigung von Stoplinien, Bruchkanten und der max. Länge von Dreieckseiten. Diese Netze erfüllen das Delaunay Kriterium:
Zeile 150: Zeile 739:  
# Es gibt mindestens drei Kontrollpunkte.
 
# Es gibt mindestens drei Kontrollpunkte.
 
# Die Oberfläche, die durch das TIN repräsentiert ist, hängt nicht von der Reihenfolge der Kontrollpunkte ab. Anwendungsschemata können Angaben zur Reihenfolge der Kontrollpunkte beinhalten, um die Rekonstruktion des TIN aus den Kontrollpunkten zu beschleunigen.
 
# Die Oberfläche, die durch das TIN repräsentiert ist, hängt nicht von der Reihenfolge der Kontrollpunkte ab. Anwendungsschemata können Angaben zur Reihenfolge der Kontrollpunkte beinhalten, um die Rekonstruktion des TIN aus den Kontrollpunkten zu beschleunigen.
 +
 +
{| width="100%" cellspacing="6" border="0"
 +
|- valign="top" align="left"
 +
| width="80%" | <div style="margin: 10px; border: 2px solid #dfdfdf; background-color:#f8f8ff;">{{Copyright-BY-NC-SA-4.0}}</div>
 +
|}
419

Bearbeitungen

Navigationsmenü