public static VsObject Prism(VsPolygon3 bs, double thickness) { VsObject ret = new VsObject(); Matrix44 m = new Matrix44(); ret.Add(new VsPolygon3(bs)); m.SetTMat(0.0D, 0.0D, thickness); VsPolygon3 p = (VsPolygon3)bs.Transform(m); int n = bs.pol.NVertex(); for (int i = 0; i < n; i++) { int j = i + 1; if (j >= n) { j = 0; } Polygon3D temp = new Polygon3D(); temp.AddVertex(new Vector3D(bs.pol.GetVertex(i))); temp.AddVertex(new Vector3D(p.pol.GetVertex(i))); temp.AddVertex(new Vector3D(p.pol.GetVertex(j))); temp.AddVertex(new Vector3D(bs.pol.GetVertex(j))); ret.Add(new VsPolygon3(temp, new Material(bs.mate))); } p.pol.Reverse(); ret.Add(p); return(ret); }
public static VsObject QubeM(Material mate) { VsObject ret = new VsObject(); VsPolygon3 a = SquareM(mate); Matrix44 m = new Matrix44(); m.SetTMat(0.0D, 0.0D, -0.5D); a = (VsPolygon3)a.Transform(m); ret.Add(a); m.SetRyMat(MathTool.DegToRad(180.0D)); ret.Add(a.Transform(m)); m.SetRyMat(MathTool.DegToRad(90.0D)); ret.Add(a.Transform(m)); m.SetRyMat(MathTool.DegToRad(-90.0D)); ret.Add(a.Transform(m)); m.SetRxMat(MathTool.DegToRad(90.0D)); ret.Add(a.Transform(m)); m.SetRxMat(MathTool.DegToRad(-90.0D)); ret.Add(a.Transform(m)); return(ret); }