Witam niemal już ukończyłem program wyznaczający diagram Voronoi w oparciu o algorytm Fortune'a z periodycznymi warunkami brzegowymi. Pojawia się jednak mały problem. Otóż przed wejściem do funkcji RemoveParabola Pierwszy elemnt w tablicy Ord[] zostaje podmieniony z 10 na krzaczek 2.3342e-313. Nie zdziwiłbym się gdyby to była wina błędnego przypisania wartości gdzieś w kodzie. Jednak to nie to. Okazuje się, że wina w leży w procesie zapisywania punktów węzłowych do tablicy węzłów NodeTab[]. Przed wartość Ord[0]=10 natomiast po wykonaniu zapisu i przed wejściem do RemoveParabola() mamy Ord[0]=2.3342e-313.
Tutaj kod:
j=NodeTab[0];
do{
SweapLine = Que[1*6+2];
if(Que[1*6+0] == 1.0){
AddParabola( int(Que[1*6+1]), MapSize_x, MapSize_y, SweapLine, VoronoiTab, Ord, Que, NodeTab);
}
else{
// Tutaj Ord[0] = 10
j = j+1;
NodeTab[0]=j;
NodeTab[j*4] = j;
NodeTab[j*4+1] = int(Que[6+3]);
NodeTab[j*4+2] = int(Que[6+4]);
NodeTab[j*4+3] = int(Que[6+5]);
// Tuta już krzaczek
RemoveParabola( NodeTab , MapSize_x, MapSize_y, SweapLine, VoronoiTab, Ord, Que);
}
}while(Que[0] >= 1.0);
Nie jestem mistrzem programowania i uczę się na własną rękę. Moje domysły to takie, że gdzieś wykraczam poza pamięć zarezerwowaną dla NodeTab[] i zmieniam Ord[0]. Co mam zrobić żeby to naprawić ? W czym tkwi błąd ?