/*
* Copyright (C) 2011-2015, Peter Abeles. All Rights Reserved.
*
* This file is part of Geometric Regression Library (GeoRegression).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package georegression.struct.shapes;
/**
* An axis aligned rectangle in 2D that is specified by its lower extent (x0,y0), and upper extent (x1,y1).
* x0 ≤ x1 and y0 ≤ y1. (x1,y1) is exclusive and not contained in the rectangle.
*/
public class Rectangle2D_I32 {
/**
* Lower extent
*/
public int x0,y0;
/**
* Upper extent
*/
public int x1,y1;
public Rectangle2D_I32(int x0, int y0, int x1, int y1) {
set(x0,y0,x1,y1);
}
public Rectangle2D_I32(Rectangle2D_I32 orig) {
set(orig);
}
public void set( Rectangle2D_I32 orig ) {
this.x0 = orig.x0;
this.y0 = orig.y0;
this.x1 = orig.x1;
this.y1 = orig.y1;
}
public void set(int x0, int y0, int x1, int y1) {
this.x0 = x0;
this.y0 = y0;
this.x1 = x1;
this.y1 = y1;
}
public Rectangle2D_I32() {
}
/**
* Makes sure x0,y0 is the lower extent and x1,y1 is the upper extent
*/
public void enforceExtents() {
if( x1 < x0 ) {
int tmp = x1;
x1 = x0;
x0 = tmp;
}
if( y1 < y0 ) {
int tmp = y1;
y1 = y0;
y0 = tmp;
}
}
public int getWidth() {
return x1-x0;
}
public int getHeight() {
return y1-y0;
}
public int area() {
return (y1-y0)*(x1-x0);
}
public int getX0() {
return x0;
}
public void setX0(int x0) {
this.x0 = x0;
}
public int getY0() {
return y0;
}
public void setY0(int y0) {
this.y0 = y0;
}
public int getX1() {
return x1;
}
public void setX1(int x1) {
this.x1 = x1;
}
public int getY1() {
return y1;
}
public void setY1(int y1) {
this.y1 = y1;
}
public String toString() {
return "RectangleCorner2D_I32( "+x0+" "+y0+" "+x1+" "+y1+" )";
}
}