コード例 #1
0
        public AxisAlignedBox3D GetBounds3D()
        {
            var cW         = (float)CoverWidth;
            var cH         = (float)CoverHeight;
            var sW         = (float)SpineWidth;
            var bookPoints = new List <Point3D>
            {
                FrontCover3D.TransformMatrix3D.Transform(Point3D.Zero),
                FrontCover3D.TransformMatrix3D.Transform(new Point3D(cW, cH, 0f)),
                Spine3D.TransformMatrix3D.Transform(Point3D.Zero),
                Spine3D.TransformMatrix3D.Transform(new Point3D(sW, cH, 0f)),
                BackCover3D.TransformMatrix3D.Transform(Point3D.Zero),
                BackCover3D.TransformMatrix3D.Transform(new Point3D(cW, cH, 0f)),
                TopBackCoverPages3D.TransformMatrix3D.Transform(Point3D.Zero),
                TopBackCoverPages3D.TransformMatrix3D.Transform(new Point3D(cW, sW * 0.5f, 0f)),
                TopSpinePages3D.TransformMatrix3D.Transform(Point3D.Zero),
                TopSpinePages3D.TransformMatrix3D.Transform(new Point3D(sW, sW * 0.5f, 0f)),
                TopFrontCoverPages3D.TransformMatrix3D.Transform(Point3D.Zero),
                TopFrontCoverPages3D.TransformMatrix3D.Transform(new Point3D(cW, sW * 0.5f, 0f)),
                InnerPageRight3D.TransformMatrix3D.Transform(Point3D.Zero),
                InnerPageRight3D.TransformMatrix3D.Transform(new Point3D(cW, cH, 0f))
            };

            var bounds3D        = new AxisAlignedBox3D(bookPoints);
            var rotY            = Matrix3D.CreateFromAxisAngle(yAxis, MathUtility.ToRadians((float)Config.Shelf3D.ShelfRotationY));
            var rotX            = Matrix3D.CreateFromAxisAngle(xAxis, MathUtility.ToRadians((float)Config.Shelf3D.ShelfRotationX));
            var boundsTransform = rotY * rotX;

            return(bounds3D.CreateTransformedBoundingVolume(boundsTransform));
        }