f32/d2/rect.go
func (r Rectangle) Union(s Rectangle) Rectangle {
	if r.Empty() {
		return s
	}
	if s.Empty() {
		return r
	}
	if r.Min[0] > s.Min[0] {
		r.Min[0] = s.Min[0]
	}
	if r.Min[1] > s.Min[1] {
		r.Min[1] = s.Min[1]
	}
	if r.Max[0] < s.Max[0] {
		r.Max[0] = s.Max[0]
	}
	if r.Max[1] < s.Max[1] {
		r.Max[1] = s.Max[1]
	}
	return r
}
func (r Rectangle) Union(s Rectangle) Rectangle {
	if r.Empty() {
		return s
	}
	if s.Empty() {
		return r
	}
	if r.Min[0] > s.Min[0] {
		r.Min[0] = s.Min[0]
	}
	if r.Min[1] > s.Min[1] {
		r.Min[1] = s.Min[1]
	}
	if r.Max[0] < s.Max[0] {
		r.Max[0] = s.Max[0]
	}
	if r.Max[1] < s.Max[1] {
		r.Max[1] = s.Max[1]
	}
	return r
}
// Union returns the smallest rectangle that contains both r and s.