public static XbimMeshGeometry3D MakeBoundingBox(XbimRect3D r3D, XbimMatrix3D transform) { XbimMeshGeometry3D mesh = new XbimMeshGeometry3D(8); XbimPoint3D p0 = transform.Transform(r3D.Location); XbimPoint3D p1 = p0; p1.X += r3D.SizeX; XbimPoint3D p2 = p1; p2.Z += r3D.SizeZ; XbimPoint3D p3 = p2; p3.X -= r3D.SizeX; XbimPoint3D p4 = p3; p4.Y += r3D.SizeY; XbimPoint3D p5 = p4; p5.Z -= r3D.SizeZ; XbimPoint3D p6 = p5; p6.X += r3D.SizeX; XbimPoint3D p7 = p6; p7.Z += r3D.SizeZ; mesh.Positions.Add(p0); mesh.Positions.Add(p1); mesh.Positions.Add(p2); mesh.Positions.Add(p3); mesh.Positions.Add(p4); mesh.Positions.Add(p5); mesh.Positions.Add(p6); mesh.Positions.Add(p7); mesh.TriangleIndices.Add(3); mesh.TriangleIndices.Add(0); mesh.TriangleIndices.Add(2); mesh.TriangleIndices.Add(0); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(2); mesh.TriangleIndices.Add(4); mesh.TriangleIndices.Add(5); mesh.TriangleIndices.Add(3); mesh.TriangleIndices.Add(5); mesh.TriangleIndices.Add(0); mesh.TriangleIndices.Add(3); mesh.TriangleIndices.Add(7); mesh.TriangleIndices.Add(6); mesh.TriangleIndices.Add(4); mesh.TriangleIndices.Add(6); mesh.TriangleIndices.Add(5); mesh.TriangleIndices.Add(4); mesh.TriangleIndices.Add(2); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(7); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(6); mesh.TriangleIndices.Add(7); mesh.TriangleIndices.Add(4); mesh.TriangleIndices.Add(3); mesh.TriangleIndices.Add(7); mesh.TriangleIndices.Add(3); mesh.TriangleIndices.Add(2); mesh.TriangleIndices.Add(7); mesh.TriangleIndices.Add(6); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(5); mesh.TriangleIndices.Add(1); mesh.TriangleIndices.Add(0); mesh.TriangleIndices.Add(5); return mesh; }
public BoundingBox TransformBy(XbimMatrix3D m) { return new BoundingBox(m.Transform(PointMin), m.Transform(PointMax)); }