[Wsplgen-commits] r74 - trunk/src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Oct 26 00:00:51 CEST 2006


Author: mrchip
Date: 2006-10-26 00:00:50 +0200 (Thu, 26 Oct 2006)
New Revision: 74

Modified:
   trunk/src/wsplgen.cpp
   trunk/src/wsplgen.h
   trunk/src/xy.cpp
Log:
Zwei Fehler wurden korrigiert.
1. Die Parameterauswertung erkennt jetzt nicht mehr immer $ und gibt die Versionsnummer aus.

2. Doppelte Punkte in Begrenzungspolygonen werden jetzt eleminiert. Bisher brach WSPLGEN immer ab, wenn es eine solche Situation vorfand.

Modified: trunk/src/wsplgen.cpp
===================================================================
--- trunk/src/wsplgen.cpp	2006-10-19 19:49:04 UTC (rev 73)
+++ trunk/src/wsplgen.cpp	2006-10-25 22:00:50 UTC (rev 74)
@@ -57,7 +57,7 @@
 		fhlog = fopen ("wsplgen_log.txt", "w");
 		fhsta = fopen ("wsplgen_sta.txt", "w");
 	}
-	else if (argc >= 1 || argv[1][0] == '?')
+	else if (argc >= 1 && argv[1][0] == '?')
 	{
 		printf ("%s\n", Version);
         return (0);

Modified: trunk/src/wsplgen.h
===================================================================
--- trunk/src/wsplgen.h	2006-10-19 19:49:04 UTC (rev 73)
+++ trunk/src/wsplgen.h	2006-10-25 22:00:50 UTC (rev 74)
@@ -10,8 +10,13 @@
 // Read the file COPYING coming with WSPLGEN for details.
 //
 
-const char Version[] = "1.0.0 rc1";
+const char Version[] = "1.0.0 rc2";
 
+// Eine Erkennung von doppelten Punkten in Begrenzungpolygonen wurde eingeführt.
+// Damit bricht WSPLGEN nicht mehr ab, wenn es solche Situationen findet. 
+
+// const char Version[] = "1.0.0 rc1";
+
 // Das Schneiden von Profilen wird jetzt noch überprüft
 
 // const char Version[] = "0.9.18 r2";

Modified: trunk/src/xy.cpp
===================================================================
--- trunk/src/xy.cpp	2006-10-19 19:49:04 UTC (rev 73)
+++ trunk/src/xy.cpp	2006-10-25 22:00:50 UTC (rev 74)
@@ -390,10 +390,14 @@
 {
 	TXYList* CutXyList = new TXYList();
 
-	// Zuerst den ersten Punkt am Ende hinzufügen
-	TXY* Xy	= *begin();
-	Add(Xy->X, Xy->Y);
+	// Zuerst (wenn notwendig )den ersten Punkt am Ende hinzufügen
+	TXY* XyFirst = *begin();
+	TXY* XyLast = *rbegin();
 
+    if (XyFirst->X != XyLast->X || XyFirst->Y != XyLast->Y)
+    {
+		Add(XyFirst->X, XyFirst->Y);
+    }
 
     // Jetzt das CutProfil verlängern, damit es wirklich zwei Schnittpunkte gibt
 	long X = 0;
@@ -424,45 +428,50 @@
 		Xy0 = Xy1;
 		Xy1 = *i;
 
-	if (Xy0	== 0)
-	{
-		continue;
-	}
+		if (Xy0	== 0)
+		{
+			continue;
+		}
 
-	TXY* CutXy0 = 0;
-	TXY* CutXy1 = 0;
-	bool Schnitt = false;
-	double SX = 0;
-	double SY = 0;
-	for	(TXYList::iterator j=CutXyList->begin(); j != CutXyList->end();	j++)
-	{
-		CutXy0 = CutXy1;
-		CutXy1 = *j;
+		if (Xy0->X == Xy1->X && Xy0->Y == Xy1->Y)
+        {
+	        continue;
+        }
 
-		if (CutXy0 == 0)	continue;
+		TXY* CutXy0 = 0;
+		TXY* CutXy1 = 0;
+		bool Schnitt = false;
+		double SX = 0;
+		double SY = 0;
+		for	(TXYList::iterator j=CutXyList->begin(); j != CutXyList->end();	j++)
+		{
+			CutXy0 = CutXy1;
+			CutXy1 = *j;
 
-		Schnitt	= Calc2Schnitt(Xy0->X, Xy0->Y, Xy1->X, Xy1->Y, CutXy0->X, CutXy0->Y, CutXy1->X,	CutXy1->Y, &SX,	&SY);
+			if (CutXy0 == 0)	continue;
 
-		if (Schnitt)	break;
-	}
+			Schnitt	= Calc2Schnitt(Xy0->X, Xy0->Y, Xy1->X, Xy1->Y, CutXy0->X, CutXy0->Y, CutXy1->X,	CutXy1->Y, &SX,	&SY);
 
-	if (Schnitt)
-	{
-		long LSX = (long)(SX + 0.5);
-		long LSY = (long)(SY + 0.5);
-		SideZero->Add(LSX, LSY);
-		SideOne->Add(LSX, LSY);
-		Side = 1 - Side;    // Wechsel von 0 zu	1 oder von 1 zu	0
-	}
+			if (Schnitt)	break;
+		}
 
-	if (Side == 0)
-	{
-		SideZero->Add(Xy1->X, Xy1->Y);
-	}
-	else
-	{
-		SideOne->Add(Xy1->X, Xy1->Y);
-	}
+		if (Schnitt)
+		{
+			long LSX = (long)(SX + 0.5);
+			long LSY = (long)(SY + 0.5);
+			SideZero->Add(LSX, LSY);
+			SideOne->Add(LSX, LSY);
+			Side = 1 - Side;    // Wechsel von 0 zu	1 oder von 1 zu	0
+		}
+
+		if (Side == 0)
+		{
+			SideZero->Add(Xy1->X, Xy1->Y);
+		}
+		else
+		{
+			SideOne->Add(Xy1->X, Xy1->Y);
+		}
     }
 
 



More information about the Wsplgen-commits mailing list