[zurück]

2.1. Entwicklung des Plugins (Kanten)

[vor]

Als nächstes fügen wir die Linien (bzw. Kanten) hinzu. Der Einfachheit halber machen wir das getrennt nach Längs- und Querlinien.

// Linien setzen
...// Zähler zurücksetzen
......zz = 0;
...// Linien längs
......for (i=0; i<=Nu; i++)
......{
..........for (j=0; j<Nv; j++)
..........{
..............// Linie speichern
.................M->SetEdge(zz,i * (Nv + 1) + j,i * (Nv + 1) + j + 1);
..............// Zähler erhöhen
.................zz = zz + 1;
..........}
......}

Die entsprechenden Punkte werden durch Linien (bzw. Kanten) miteinander verbunden. Die Nummern der Punkte müssen wir allerdings durch die Schleifenindizes ausdrücken um eine Kante zu setzten.

......SetEdge(zz,i * (Nv + 1) + j,i * (Nv + 1) + j + 1);

Wir greifen uns aus dem Gitternetz (siehe Abb. 1) zwei Punkte (P38, P39) als Beispiel heraus.


Abb. 2

Bei der Berechnung dieser Linie haben die Schleifenindizes die Werte i=5 und j=3.

 

Punkt

Formel

Resultat

 

38

i*(Nv + 1) + j

5*(6 + 1) + 3 = 38

 

39

i*(Nv + 1) + j + 1

5*(6 + 1) + 3 + 1 = 39

Zur Berechnung vom Punkt 39 müssen wir ebenfalls j=3 einsetzen da wir uns bei der Berechnung im gleichen Schleifendurchlauf für j befinden. Das Skript mit den Längslinien kann getestet werden (M_Test2.cof).

 

Als nächstes können wir die Querlinien hinzufügen. Da alle Linien fortlaufend numeriert sind dürfen wir den Zähler nicht wieder auf Null setzten.

// Querlinien setzen
......for (j=0; j<=Nv; j++)
......{
..........for (i=0; i<Nu; i++)
..........{
..............// Linie speichern
.................M->SetEdge(zz,i * (Nv + 1) + j,(i + 1) * (Nv + 1) + j);
..............// Zähler erhöhen
.................zz = zz + 1;
..........}
......}

Die Benennung der Punkte erfolgt ähnlich wie bei dem Längslinien. Wir greifen uns aus dem Gitternetz (siehe Abb. 1) zwei Punkte (P38, P45) als Beispiel heraus.


Abb. 3

Bei der Berechnung dieser Linie haben die Schleifenindizes die Werte i=5 und j=3.

 

Punkt

Formel

Resultat

 

38

i*(Nv + 1) + j

5*(6 + 1) + 3 = 38

 

45

(i + 1)*(Nv + 1) + j

(5 + 1)*(6 + 1) + 3 = 45

Das Skript mit allen Linien (bzw. Kanten) kann getestet werden (M_Test3.cof).


[zurück] [Inhaltsverzeichnis] [vor]