[Wsplgen-commits] r69 - trunk/src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Oct 19 21:26:53 CEST 2006


Author: mrchip
Date: 2006-10-19 21:26:53 +0200 (Thu, 19 Oct 2006)
New Revision: 69

Modified:
   trunk/src/file.cpp
   trunk/src/test_xy.cpp
   trunk/src/tri.cpp
   trunk/src/wsplgen.cpp
   trunk/src/wsplgen.h
   trunk/src/xy.cpp
Log:
Der erste Release Candidate. Der Parameter ? wurde noch eingef?\195?\188gt.

Wird als das Programm mit WSPLGEN.EXE ? aufgerufen, so gibt es nur die Versionsnummer zur?\195?\188ck und beendet sich sofort wieder.

Modified: trunk/src/file.cpp
===================================================================
--- trunk/src/file.cpp	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/file.cpp	2006-10-19 19:26:53 UTC (rev 69)
@@ -1256,14 +1256,12 @@
 
 				ExChangeProfil->AddPoint(X, Y);
 			}
-			ProfilList->erase(i);
-			delete NachProfil;
-			ProfilList->insert(ExChangeProfil);
-			i = ProfilList->begin();
-			VorProfil = 0;
-			NachProfil = 0;
-			Count = 0;
-			continue;
+
+			TPointList* TempPointList = NachProfil->PointList;
+            NachProfil->PointList = ExChangeProfil->PointList;
+			ExChangeProfil->PointList = TempPointList;
+
+			delete ExChangeProfil;
 		}
 		i++;
 	}
@@ -1271,6 +1269,76 @@
 
 	write_fortschritt("<-Ausrichten der Profilspuren beendet\n");
 
+
+	write_fortschritt("->Überprüfung der Profilspuren gestartet\n");
+
+	VorProfil = 0;
+	NachProfil = 0;
+	Count = 0;
+	i = ProfilList->begin();
+	while (i != ProfilList->end())
+	{
+		Count++;
+
+		if (DebugLevel >= 9 || (DebugLevel >= 1 && Count % 10 == 0) || (Count > 0 && Count % 100 == 0))
+		{
+			write_fortschritt("%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
+		}
+
+		VorProfil = NachProfil;
+		NachProfil = *i;
+
+		if (VorProfil == 0)
+		{
+			i++;
+			continue;
+		}
+
+
+		TPoint* VP1 = 0;
+		TPoint* VP2 = 0;
+		TPointList::iterator j = VorProfil->PointList->begin();
+		while (j != VorProfil->PointList->end())
+		{
+			VP1 = VP2;
+			VP2 = *j;
+
+			if (VP1 == 0)
+			{
+				j++;
+				continue;
+			}
+
+			TPoint* NP1 = 0;
+			TPoint* NP2 = 0;
+			TPointList::iterator k = NachProfil->PointList->begin();
+			while (k != NachProfil->PointList->end())
+			{
+				NP1 = NP2;
+				NP2 = *k;
+
+				if (NP1 == 0)
+				{
+					k++;
+					continue;
+				}
+
+				double X = 0.0;
+				double Y = 0.0;
+				if (Calc2Schnitt(VP1->X, VP1->Y, VP2->X, VP2->Y, NP1->X, NP1->Y, NP2->X, NP2->Y, &X, &Y))
+                {
+                	write_warning(1111, "Die Profile %d unf %d schneiden sich bei (%.2f, %.2f)\n", VorProfil->Station / 1000, NachProfil->Station / 1000, X, Y);
+                }
+                k++;
+			}
+            j++;
+        }
+		i++;
+	}
+	write_fortschritt("%d von %d Profilspuren überprüft\n", Count, ProfilList->size());
+
+	write_fortschritt("<-Überprüfung der Profilspuren beendet\n");
+
 	return (true);
 }
 

Modified: trunk/src/test_xy.cpp
===================================================================
--- trunk/src/test_xy.cpp	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/test_xy.cpp	2006-10-19 19:26:53 UTC (rev 69)
@@ -388,7 +388,7 @@
 		if (NewPolygon1->size() != 13)		printf("Failed\n");
 		else if (Xy1->X != 4147)			printf("Failed\n");
 		else if (Xy1->Y != 5503)			printf("Failed\n");
-		else if (NewPolygon2->size() != 11)	printf("Failed\n");
+		else if (NewPolygon2->size() != 10)	printf("Failed\n");
 		else if (Xy2->X != 5044)			printf("Failed\n");
 		else if (Xy2->Y != 5540)			printf("Failed\n");
 		else								printf("Pass\n");
@@ -427,7 +427,7 @@
 		TXY* Xy = *NewPolygon->begin();
 
 		if (NewPolygon->size() != 20)	printf("Failed\n");
-		else if (Xy->X != 32484)		printf("Failed\n");
+		else if (Xy->X != 32485)		printf("Failed\n");
 		else if (Xy->Y != 61982)		printf("Failed\n");
 		else							printf("Pass\n");
 

Modified: trunk/src/tri.cpp
===================================================================
--- trunk/src/tri.cpp	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/tri.cpp	2006-10-19 19:26:53 UTC (rev 69)
@@ -340,8 +340,16 @@
 	NodeList->SortByXY();
 	NodeList->ClearEdgeIndex();
 
+	// Erst mal genug Speicher besorgen
+    ElementList->reserve((size_t)(NodeList->size() * 2.2));
+	write_fortschritt("Kapazität der Elementliste wurde auf %d erhöht\n", ElementList->capacity());
+
 	TEdgeList *EdgeList = new TEdgeList;
 
+	// Erst mal genug Speicher besorgen
+    EdgeList->EdgeVector.reserve((size_t)(NodeList->size() * 2.2 * 2.2));
+	write_fortschritt("Kapazität der Kantenliste wurde auf %d erhöht\n", EdgeList->EdgeVector.capacity());
+
 	TEdge* NewEdge = new TEdge(NewNode1, NewNode2);
 	EdgeList->Add(NewEdge);
 

Modified: trunk/src/wsplgen.cpp
===================================================================
--- trunk/src/wsplgen.cpp	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/wsplgen.cpp	2006-10-19 19:26:53 UTC (rev 69)
@@ -57,6 +57,11 @@
 		fhlog = fopen ("wsplgen_log.txt", "w");
 		fhsta = fopen ("wsplgen_sta.txt", "w");
 	}
+	else if (argc >= 1 || argv[1][0] == '?')
+	{
+		printf ("%s\n", Version);
+        return (0);
+	}
 	else
 	{
 		fhlog = stdout;

Modified: trunk/src/wsplgen.h
===================================================================
--- trunk/src/wsplgen.h	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/wsplgen.h	2006-10-19 19:26:53 UTC (rev 69)
@@ -10,8 +10,12 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
-const char Version[] = "0.9.18 r2";
+const char Version[] = "1.0.0 rc1";
 
+// Das Schneiden von Profilen wird jetzt noch überprüft
+
+// const char Version[] = "0.9.18 r2";
+
 // Ein Problem mit 'falsch' orientierten Dreieken aus TIN Dateien wurde behoben.
 // Der Fehler existierte erst ab Version 0-9-18-r2
 

Modified: trunk/src/xy.cpp
===================================================================
--- trunk/src/xy.cpp	2006-10-16 21:00:35 UTC (rev 68)
+++ trunk/src/xy.cpp	2006-10-19 19:26:53 UTC (rev 69)
@@ -395,7 +395,7 @@
 	Add(Xy->X, Xy->Y);
 
 
-    // Jetzt das CutProfil verlängern, dammit es wirklich zwei Schnittpunkte gibt
+    // Jetzt das CutProfil verlängern, damit es wirklich zwei Schnittpunkte gibt
 	long X = 0;
 	long Y = 0;
 
@@ -1178,7 +1178,7 @@
 //---------------------------------------------------------------------
 void TNodeList::ReScale(void)
 {
-	write_fortschritt("->Zurückverschiebung	des Koordinatensystems gestartet\n");
+	write_fortschritt("->Zurückverschiebung des Koordinatensystems gestartet\n");
 
 	for (iterator i	= begin(); i !=	end(); i++)
 	{
@@ -1196,7 +1196,7 @@
 	DiffX =	0;
 	DiffY =	0;
 
-	write_fortschritt("<-Zurückverschiebung	des Koordinatensystems beendet\n");
+	write_fortschritt("<-Zurückverschiebung des Koordinatensystems beendet\n");
 }
 
 //---------------------------------------------------------------------
@@ -2089,6 +2089,7 @@
 			Point =	0;
 		}
 		delete PointList;
+        PointList = 0;
 	}
 
 	MinX = 0;



More information about the Wsplgen-commits mailing list