package płaszczyzna;
public class Prostokąt {
Punkt pozycja; // pozycja dolnego lewego wierzchołka
Punkt rozmiar; // szerokośc i wysokośc prostokąta. Uwaga! oba rozmiary muszą być dodatnie
double przekątna() {
return rozmiar.odlOdŚrodka();
}
Prostokąt(int x, int y, int szer, int wys) {
pozycja = new Punkt(x, y);
rozmiar = new Punkt(Math.abs(szer), Math.abs(wys));
}
Prostokąt(Punkt dolny, Punkt rozmiar) {
pozycja = dolny;
this.rozmiar = rozmiar;
}
double pole() {
return rozmiar.getX() * rozmiar.getY();
}
double obwód() {
return rozmiar.getX() + rozmiar.getY();
}
void przesuń(Punkt ile) {
pozycja = pozycja.dodaj(ile);
}
void przesuń(int x, int y) {
przesuń(new Punkt(x, y));
}
void zmieńRozmiar(int x, int y) {
if (x >= 0 && y >= 0) {
rozmiar = new Punkt(x, y);
}
}
void zmienRozmiar(Punkt r) {
if (r.getX() >= 0 && r.getY() >= 0) {
rozmiar = r;
}
}
void wypiszWspółrzędne() {
System.out.println("Prostokat: " + pozycja + ", " +
pozycja.dodaj(new Punkt(rozmiar.getX(), 0)) + " " +
pozycja.dodaj(new Punkt(0, rozmiar.getY())) +
pozycja.dodaj(rozmiar));
}
@Override
public String toString() {
return "prostokąt o wsp. " + pozycja + " i rozmiarze " + rozmiar;
}
boolean otacza(Punkt a) {
if (pozycja.getX() >= a.getX() &&
pozycja.dodaj(rozmiar).getX() <= a.getX() &&
pozycja.getY() >= a.getY() &&
pozycja.dodaj(rozmiar).getY() <= a.getY()) {
return true;
}
return false;
}
static public void main(String[] args) {
Prostokąt a = new Prostokąt(1, 2, 3, 4);
a.wypiszWspółrzędne();
System.out.println(a);
Punkt p1 = new Punkt(-1, -2);
Punkt p2 = new Punkt(-3, -4);
Prostokąt b = new Prostokąt(p1, p2);
System.out.println(b);
b.przesuń(1, 2);
System.out.println(b);
b.przesuń(new Punkt(3,4));
System.out.println(b);
System.out.println("Przekątna "+b.przekątna());
System.out.println("Pole "+b.pole());
System.out.println(b.obwód());
}
}