private static void FillLineSegments(ObjModel model, IList <string> args) { if (args.Count < 2) { return; } var segments = new LineSegments(); foreach (var a in args) { var numStrs = a.Trim().Split('/'); var vIndex = FindIndex(model.Positions, numStrs[0]); uint?vtIndex = null; if (numStrs.Length == 2) { if (!String.IsNullOrEmpty(numStrs[1])) { vtIndex = FindIndex(model.TextureCoords, numStrs[1]); } } segments.Vertices.Add(new LineVertex(vIndex, vtIndex)); } if (segments.Vertices.Count > 0) { model.Lines.Add(segments); } }
// construct a pathfigure from the line segments static PathFigure FromPointCollection(LineSegments ls) { var pc = new PointCollection(ls); var pls = new PolyLineSegment(pc, true); var psc = new PathSegmentCollection(); psc.Add(pls); return(new PathFigure(pc.First(), psc, false)); }
/// <summary> /// creates or adds a segment to the collections /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <param name="startOffset"></param> /// <param name="endOffset"></param> public void CreateOrAddSegment(ComplexGeometry geometry, Dictionary <Point, LineSegments> segments, int x, int y, Vector startOffset, Vector endOffset) { Point ptMiddle = new Point(x, y); Point startPoint = ptMiddle + startOffset; Point endPoint = ptMiddle + endOffset; if (segments.ContainsKey(startPoint)) { var pc = segments[startPoint]; segments.Remove(startPoint); if (pc.First() == startPoint) { pc.Insert(0, endPoint); } else if (pc.Last() == startPoint) { pc.Add(endPoint); } if (!segments.ContainsKey(endPoint)) { segments.Add(endPoint, pc); } } else if (segments.ContainsKey(endPoint)) { var pc = segments[endPoint]; segments.Remove(endPoint); if (pc.First() == endPoint) { pc.Insert(0, startPoint); } else if (pc.Last() == endPoint) { pc.Add(startPoint); } if (!segments.ContainsKey(startPoint)) { segments.Add(startPoint, pc); } } else { var pc = new LineSegments(); pc.Add(startPoint); pc.Add(endPoint); segments.Add(startPoint, pc); segments.Add(endPoint, pc); geometry.Add(pc); } }
void createRope(VerletWorld world) { // create an array of points for our rope var linePoints = new Vector2[10]; for (var i = 0; i < 10; i++) { linePoints[i] = new Vector2(30 * i + 50, 10); } var line = new LineSegments(linePoints, 0.3f) .pinParticleAtIndex(0); world.addComposite(line); }
internal override int ReadParameters(List <string> parameters, IgesReaderBinder binder) { var index = 0; var segmentCount = Integer(parameters, ref index); ArrowHeight = Double(parameters, ref index); ArrowWidth = Double(parameters, ref index); var zDepth = Double(parameters, ref index); var x = Double(parameters, ref index); var y = Double(parameters, ref index); ArrowheadCoordinates = new Point3D(x, y, zDepth); for (int i = 0; i < segmentCount; i++) { x = Double(parameters, ref index); y = Double(parameters, ref index); LineSegments.Add(new Point3D(x, y, zDepth)); } return(segmentCount * 2 + 6); }