private void AppendToStart(LineStripElement <T, TK> newElement, TK edge = null) { if (edge != null) { Edges.Add(edge); } if (InternalEquals(Start, newElement.Position)) { return; } var firstVertex = Elements.First; if (edge != null) { if (firstVertex.Value.Elements.Count == 2) { throw new Exception(); } firstVertex.Value.Elements.Add(edge); } // ReSharper disable once PossibleNullReferenceException if (Collinear( newElement.Position, firstVertex.Value.Position, firstVertex.Next.Value.Position)) { firstVertex.Value = newElement; } else { Elements.AddFirst(newElement); } }
public EdgesLineStrip(Edge3D edge) { Elements.AddFirst(new LineStripElement <Vertex3D, Edge3D>(edge.Start, edge)); Elements.AddLast(new LineStripElement <Vertex3D, Edge3D>(edge.End, edge)); Edges.Add(edge); }