Witam,
Mam takie zadanie:
"Napisać metodę przesuwającą prostokąt o zadany wektor. Jeśli to coś ułatwi, można zmodyfikować klasę Punkt".
Napisałem taką wersję roboczą - metoda "PrzesuńOWektor". Pytanie, czy poprawnie?
#include "stdafx.h"
#include <iostream>
using namespace std;
class Prostokat
{
private:
double przekątnaAx;
double przekątnaAy;
double przekątnaDx;
double przekątnaDy;
//double długośćBokuA;
//double długośćBokuB;
//double przekątnaC;
double wektorA; // współrzędna X wektora, który przesuwa prostokąt
double wektorB; // współrzędna Y wektora, który przesuwa prostokąt
public:
// ustaw przekątną A i D
void Ustaw1(double aPrzekatnaAx, double aPrzekatnaAy,
double aPrzekatnaDx, double aPrzekatnaDy)
{
przekątnaAx = aPrzekatnaAx;
przekątnaAy = aPrzekatnaAy;
przekątnaDx = aPrzekatnaDx;
przekątnaDy = aPrzekatnaDy;
}
// ustaw wierzchołki B i C
void Ustaw2(double aWierzchołekBx, double aWierzchołekAy,
double aWierzchołekCx, double aWierzchołekCy)
{
// wierzchołek B
przekątnaDx = aWierzchołekBx;
przekątnaAy = aWierzchołekAy;
// wierzchołek C
przekątnaDy = aWierzchołekCx;
przekątnaAx = aWierzchołekCy;
}
// wierzchołek A i długośc boków a i b
// wierzchołek A i długość boków a i b
void Ustaw3(double aPrzekatnaAx, double aPrzekatnaAy,
double aDługośćBokuA, double aDługośćBokuB)
{
// wierzchołek A
przekątnaAx = aPrzekatnaAx;
przekątnaAy = aPrzekatnaAy;
przekątnaDx = przekątnaAx+aDługośćBokuA;
przekątnaDy = przekątnaAy+aDługośćBokuB;
}
// ustaw współrzędne wierchołka A oraz dł. boków a i przekątnej c
void Ustaw4(double aPrzekatnaAx, double aPrzekatnaAy,
double aDługośćBokuA, double aPrzekątnaC)
{
// wierzchołek A
przekątnaAx = aPrzekatnaAx;
przekątnaAy = aPrzekatnaAy;
przekątnaDx = przekątnaAx+aDługośćBokuA;
//poniższy wzór korzysta z tw. Pitagorasa
przekątnaDy = przekątnaAy+sqrt(aPrzekątnaC*aPrzekątnaC-aDługośćBokuA*aDługośćBokuA);
}
// metoda ma przesunąć prostokąt o zadany wektor
void PrzesuńOWektor(double wierzchołekAprimX, double wierzchołekAprimY,
double wierzchołekBprimX, double wierzchołekBprimY,
double wierzchołekCprimX, double wierzchołekCprimY,
double wierzchołekDprimX, double wierzchołekDprimY,
double aWektorA, double aWektorB)
{
// parametry wektora
wektorA = aWektorA;
wektorB = aWektorB;
// punkt przesunięty A`
wierzchołekAprimX = przekątnaAx + wektorA;
wierzchołekAprimY = przekątnaAy + wektorB;
// punkt przesunięty B`
wierzchołekBprimX = przekątnaDx + wektorA;
wierzchołekBprimY = przekątnaAy + wektorB;
// punk przesunięty C`
wierzchołekCprimX = przekątnaDy + wektorA;
wierzchołekCprimY = przekątnaAx + wektorB;
// punkt przesunięty D`
wierzchołekDprimX = przekątnaDx + wektorA;
wierzchołekDprimY = przekątnaDy + wektorB;
// sprawdzam wypisując na ekran przesunięte wierzchołki A`, B` ...
cout << "wierzcholek AprimX: " << wierzchołekAprimX << endl;
cout << "wierzcholekAprimY: " << wierzchołekAprimY << endl;
cout << "wierzcholekBprimX: " << wierzchołekBprimX << endl;
cout << "wierzcholekBprimY: " << wierzchołekBprimY << endl;
// ...
}
/*
void CzyProstokatRownolegly()
{
if ((przekatnaAx == przekatnaAx) && (przekatnaAy == przekatnaAy)) // to przecież nie ma sensu
cout << "Jest równoległy";
else
cout << "Nie jest równoległy" << endl;
}
*/
int CzyProstokatRownolegly()
{
return 1;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Prostokat prostokat;
prostokat.Ustaw1(2, -8, 7, -11);
prostokat.Ustaw2(7, -8, -11, 2);
prostokat.Ustaw3(2, -8, 5, 3);
prostokat.Ustaw4(2, -8, 5, 5);
prostokat.PrzesuńOWektor(2, -8, 7, -8, -11, 2, 7, -11, 3, 2);
system("pause");
return 0;
}