private void UpdateDisplays() { Hull displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 0, 180); FrontDisplay.SetHull(displayHull); Debug.WriteLine("Front size: ({0})", displayHull.GetSize()); displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 90, 90); TopDisplay.SetHull(displayHull); displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 90, 180); SideDisplay.SetHull(displayHull); if (PerspectiveManip.perspective == HullManip.PerspectiveType.FRONT) { displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 0, 180); Debug.WriteLine("Perspective Front size: ({0})", displayHull.GetSize()); PerspectiveDisplay.SetHull(displayHull); Debug.WriteLine("Perspective Front size: ({0})", displayHull.GetSize()); PerspectiveManip.perspective = HullManip.PerspectiveType.FRONT; PerspectiveManip.IsEditable = true; } else if (PerspectiveManip.perspective == HullManip.PerspectiveType.TOP) { displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 90, 90); PerspectiveDisplay.SetHull(displayHull); PerspectiveManip.perspective = HullManip.PerspectiveType.TOP; PerspectiveManip.IsEditable = true; } else if (PerspectiveManip.perspective == HullManip.PerspectiveType.SIDE) { displayHull = myHull.CopyToFullHull(); displayHull.Rotate(0, 90, 180); PerspectiveDisplay.SetHull(displayHull); PerspectiveManip.perspective = HullManip.PerspectiveType.SIDE; PerspectiveManip.IsEditable = true; } else // must be PERSPECTIVE { displayHull = myHull.CopyToFullHull(); displayHull.Rotate(10, 30, 190); PerspectiveDisplay.SetHull(displayHull); } FrontManip.Draw(); TopManip.Draw(); SideManip.Draw(); PerspectiveManip.Draw(); }
private void Panelize(Hull hull) { Hull highResHull = hull.Copy(); highResHull.PrepareChines(POINTS_PER_CHINE); int numPanels = highResHull.numChines() - 1; m_panels = new List <Panel>(); for (int ii = 0; ii < numPanels; ii++) { Panel panel = new Panel(highResHull.GetChine(ii), highResHull.GetChine(ii + 1)); panel.name = "Chine " + (ii + 1); m_panels.Add(panel); } //********************************* // bulkheads: int numBulkheads = hull.numBulkheads(); if (hull.GetBulkhead(numBulkheads - 1).type == Bulkhead.BulkheadType.BOW) { numBulkheads--; } Hull fullHull = hull.CopyToFullHull(); for (int bulkhead = 0; bulkhead < fullHull.numBulkheads(); bulkhead++) { int numChines = fullHull.numChines(); if (fullHull.GetBulkhead(bulkhead).type != Bulkhead.BulkheadType.BOW) { Bulkhead bulk = fullHull.GetBulkhead(bulkhead); Point3DCollection points = new Point3DCollection(); Point3D basePoint = bulk.GetPoint(0); for (int chine = 0; chine < numChines; chine++) { Point3D point = bulk.GetPoint(chine); if (bulk.type == Bulkhead.BulkheadType.TRANSOM) { point.Y = basePoint.Y + (point.Y - basePoint.Y) / Math.Sin(bulk.TransomAngle); } points.Add(bulk.GetPoint(chine)); } // close the shape if (points[0].X != 0) { points.Add(points[0]); } Panel panel = new Panel(points); panel.name = "Bulkhead " + (bulkhead + 1); m_panels.Add(panel); } } }