Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/Routines2D.cs =================================================================== diff -u -r4132 -r4172 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/Routines2D.cs (.../Routines2D.cs) (revision 4132) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/Routines2D.cs (.../Routines2D.cs) (revision 4172) @@ -269,37 +269,41 @@ while (index < polygon.CalcPoints.Count) { - deltaX = polygon[index].X - x; - deltaZ = polygon[index].Z - z; - absX = Math.Abs(deltaX); - absZ = Math.Abs(deltaZ); - if ((absX < epsilon) && (absZ < epsilon)) + if (polygon[index] != null) { - UndoAddIfNeeded(polygon, pointAdded); - return PointInPolygon.OnPolygonEdge; - } + deltaX = polygon[index].X - x; + deltaZ = polygon[index].Z - z; + absX = Math.Abs(deltaX); + absZ = Math.Abs(deltaZ); + if ((absX < epsilon) && (absZ < epsilon)) + { + UndoAddIfNeeded(polygon, pointAdded); + return PointInPolygon.OnPolygonEdge; + } - double al2 = Math.Atan2(deltaZ, deltaX); - double al3 = al2 - al1; + double al2 = Math.Atan2(deltaZ, deltaX); + double al3 = al2 - al1; - if (al3 < -Math.PI) - { - al3 = al3 + (2.0 * Math.PI); - } + if (al3 < -Math.PI) + { + al3 = al3 + (2.0 * Math.PI); + } - if (al3 > Math.PI) - { - al3 = al3 - (2.0 * Math.PI); - } + if (al3 > Math.PI) + { + al3 = al3 - (2.0 * Math.PI); + } - if (((Math.PI - al3) < epsilon) || ((Math.PI + al3) < epsilon)) - { - UndoAddIfNeeded(polygon, pointAdded); - return PointInPolygon.OnPolygonEdge; + if (((Math.PI - al3) < epsilon) || ((Math.PI + al3) < epsilon)) + { + UndoAddIfNeeded(polygon, pointAdded); + return PointInPolygon.OnPolygonEdge; + } + + som = som + al3; + al1 = al2; } - som = som + al3; - al1 = al2; index++; }