示例#1
0
            public override bool Equals(object other)
            {
                if (!(other is INTBOUNDS3))
                {
                    return(false);
                }
                INTBOUNDS3 bounds = (INTBOUNDS3)other;

                return(this.min.Equals(bounds.min) && (this.max + INTVECTOR3.one * this.close_max).Equals(bounds.max + INTVECTOR3.one * bounds.close_max));
            }
示例#2
0
            public static INTBOUNDS3 operator *(INTBOUNDS3 lhs, int rhs)
            {
                if (lhs.close_max == 0)
                {
                    return(new INTBOUNDS3(lhs.min * rhs, lhs.max * rhs));
                }
                INTVECTOR3 ofs    = new INTVECTOR3(lhs.close_max, lhs.close_max, lhs.close_max);
                INTBOUNDS3 retval = new INTBOUNDS3(lhs.min * rhs, (lhs.max + ofs) * rhs - ofs);

                retval.close_max = lhs.close_max;
                return(retval);
            }
示例#3
0
            public static INTBOUNDS3 operator |(INTBOUNDS3 lhs, INTBOUNDS3 rhs)
            {
                INTBOUNDS3 retval = new INTBOUNDS3();
                int        delta  = rhs.close_max - lhs.close_max;

                rhs.close_max    = lhs.close_max;
                rhs.max          = rhs.max + INTVECTOR3.one * delta;
                retval.min.x     = lhs.min.x < rhs.min.x ? lhs.min.x : rhs.min.x;
                retval.min.y     = lhs.min.y < rhs.min.y ? lhs.min.y : rhs.min.y;
                retval.min.z     = lhs.min.z < rhs.min.z ? lhs.min.z : rhs.min.z;
                retval.max.x     = lhs.max.x > rhs.max.x ? lhs.max.x : rhs.max.x;
                retval.max.y     = lhs.max.y > rhs.max.y ? lhs.max.y : rhs.max.y;
                retval.max.z     = lhs.max.z > rhs.max.z ? lhs.max.z : rhs.max.z;
                retval.close_max = lhs.close_max;
                return(retval);
            }