private void setCorrectedSegements() { for (int i = 0; i < originalSegments.Count; ++i) { if (i == 0) { double cx = originalSegments[i].getGStart().getPnt3d().getX() + originalSegments[i].cdx(); double cy = originalSegments[i].getGStart().getPnt3d().getY() + originalSegments[i].cdy(); pnt3d correctedEndPnt = new pnt3d(cx, cy, 0); VTex correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge()); pnt3d newStartPoint = new pnt3d(originalSegments[i].getGStart().getPnt3d().getX(), originalSegments[i].getGStart().getPnt3d().getY(), 0); double newBulgeStart = originalSegments[i].getGStart().getBuldge(); VTex correctedStartVertex = new MWCadNameSpace.VTex(newStartPoint, newBulgeStart); Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex); correctedSegments.Add(newCorrectedSegment); } else { VTex correctedStartVertex = correctedSegments[i - 1].getGEnd(); //double check_cdx = originalSegments[i].cdx(); //double check_cdy = originalSegments[i].cdy(); //MessageBox.Show("Corrected dx and dy " + check_cdx + "," + check_cdy); //double check_getx = correctedStartVertex.getPnt3d().getX(); //double check_gety = correctedStartVertex.getPnt3d().getY(); //MessageBox.Show("Corrected startx and starty " + check_getx + "," + check_gety); double cx = correctedStartVertex.getPnt3d().getX() + originalSegments[i].cdx(); double cy = correctedStartVertex.getPnt3d().getY() + originalSegments[i].cdy(); double newEndx = cx; double newEndy = cy; pnt3d correctedEndPnt = new pnt3d(newEndx, newEndy, 0); VTex correctedEndVertex = new VTex(correctedEndPnt, originalSegments[i].getGEnd().getBuldge()); Segment newCorrectedSegment = new MWCadNameSpace.Segment(correctedStartVertex, correctedEndVertex); correctedSegments.Add(newCorrectedSegment); } } }
public Segment extractAsSegment(pnt3d startPnt) { //set the start point VTex startV = new VTex(startPnt, this.radiusAsBuldge()); //find the end point double bearingAngle = (Convert.ToDouble(degrees) + Convert.ToDouble(minutes) / 60.00 + Convert.ToDouble(seconds) / 3600.00) * (Math.PI / 180); double dx = 0; double dy = 0; if (startDirection.Value == "North" && endDirection.Value == "East") { dx = (Math.Sin(bearingAngle) * length); dy = (Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "North" && endDirection.Value == "West") { dx = -(Math.Sin(bearingAngle) * length); dy = (Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "South" && endDirection.Value == "West") { dx = -(Math.Sin(bearingAngle) * length); dy = -(Math.Cos(bearingAngle) * length); } else if (startDirection.Value == "South" && endDirection.Value == "East") { dx = +(Math.Sin(bearingAngle) * length); dy = -(Math.Cos(bearingAngle) * length); } pnt3d endPnt = new pnt3d(startV.getPnt3d().getX() + dx, startV.getPnt3d().getY() + dy); VTex endV = new VTex(endPnt, 0); Segment returnSeg = new Segment(startV, endV); return(returnSeg); }
public double dx() { double returnVal = gEnd.getPnt3d().getX() - gStart.getPnt3d().getX(); return(returnVal); }