129 float rectangleALeft = rectangleA.center.x - rectangleA.size.x/2.;
130 float rectangleARight = rectangleA.center.x + rectangleA.size.x/2.;
131 float rectangleABottom = rectangleA.center.y - rectangleA.size.y/2.;
132 float rectangleATop = rectangleA.center.y + rectangleA.size.y/2.;
134 float rectangleBLeft = rectangleB.center.x - rectangleB.size.x/2.;
135 float rectangleBRight = rectangleB.center.x + rectangleB.size.x/2.;
136 float rectangleBBottom = rectangleB.center.y - rectangleB.size.y/2.;
137 float rectangleBTop = rectangleB.center.y + rectangleB.size.y/2.;
139 float tolerance = 0.00001;
141 if (rectangleARight < rectangleBLeft + tolerance
142 || rectangleBRight < rectangleALeft + tolerance
143 || rectangleATop < rectangleBBottom + tolerance
144 || rectangleBTop < rectangleABottom + tolerance)
148 float intersectionLeft =
MAX(rectangleALeft, rectangleBLeft);
149 float intersectionRight =
MIN(rectangleARight, rectangleBRight);
150 float intersectionBottom =
MAX(rectangleABottom, rectangleBBottom);
151 float intersectionTop =
MIN(rectangleATop, rectangleBTop);
154 { (intersectionLeft + intersectionRight) / 2.,
155 (intersectionBottom + intersectionTop) / 2. },
156 { intersectionRight - intersectionLeft,
157 intersectionTop - intersectionBottom }
169 VuoReal left =
MIN(rectangleA.center.x - rectangleA.size.x / 2., rectangleB.center.x - rectangleB.size.x / 2.);
170 VuoReal right =
MAX(rectangleA.center.x + rectangleA.size.x / 2., rectangleB.center.x + rectangleB.size.x / 2.);
171 VuoReal bottom =
MIN(rectangleA.center.y - rectangleA.size.y / 2., rectangleB.center.y - rectangleB.size.y / 2.);
172 VuoReal top =
MAX(rectangleA.center.y + rectangleA.size.y / 2., rectangleB.center.y + rectangleB.size.y / 2.);
175 { (left + right) / 2.,
176 (bottom + top) / 2. },