
Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Различные алгоритмы минимизации, реализованные в С++ / all / MAIN
.CPP// ” ©«: main.cpp
// ’Ґбв®ў п Їа®Ја ¬¬ ¤«п Є« ббa cFigure
// Ђўв®а: ђг®ў Ђ.Ђ. Ја. 2355
// „ в : 20.02.2005
#include <iostream.h>
#include <conio.h>
#include <assert.h>
#include <fstream.h>
#include "point.cpp"
#include "celement.cpp"
#include "clist.cpp"
#include "cfigure.cpp"
#define OUT(n) cout << "p" << n << "(" << f2.getP(n).GetX() << "," << f2.getP(n).GetY() << ") "
#define OUTALL OUT(0); OUT(1); OUT(2); cout << " angle1=" << f2.getAngle(0)*180/M_PI << " angle2=" << f2.getAngle(1)*180/M_PI ; cout << endl;
int equalWithEps(float f1, float f2)
{
float eps = 0.0001;
return (abs(f1-f2) < eps);
}
void main()
{
clrscr();
/********************************
Ќ Ў®а ўв®¬ вЁ§Ёа®ў ле вҐбв®ў
¤«п Є« бб cFigure
********************************/
// ЁЁжЁ «Ё§ жЁп дЁЈгал :
Point p0(0,0);
Point p1(1,0);
Point p2(0,1);
float angle1 = M_PI / 4;
float angle2 = 3 * M_PI / 4;
cFigure f1(p0,p1,p2,angle1,angle2);
float fW = f1.getWidth();
float fH = f1.getHeight();
// вҐбвЁа®ў ЁҐ Є®бвагЄв®а :
assert(f1.getP(0) == p0);
assert(f1.getP(1) == p1);
assert(f1.getP(2) == p2);
assert(f1.getAngle(0) == angle1);
assert(f1.getAngle(1) == angle2);
// вҐбвЁа®ў ЁҐ ¬Ґв®¤ Rotate :
f1.Rotate(p0, M_PI/2);
// -- Їа®Ё§®иҐ« Ї®ў®а®в :
assert(f1.getP(0) % p0);
assert(f1.getP(1) % p2);
assert(f1.getP(2) % Point(-1,0));
// -- гЈ«л Ґ Ё§¬ҐЁ«Ёбм :
assert(f1.getAngle(0) == angle1);
assert(f1.getAngle(1) == angle2);
// -- ўлб®в Ё ®б®ў ЁҐ Ґ Ё§¬ҐЁ«Ёбм :
assert( equalWithEps(fW, f1.getWidth()) );
assert( equalWithEps(fH, f1.getHeight()) );
// вҐбвЁа®ў ЁҐ ¬Ґв®¤ MoveTo :
f1.MoveTo(Point(1,1));
// -- Їа®Ё§®иҐ« ЇҐаҐ®б :
assert(f1.getP(0) % Point(1,1));
assert(f1.getP(1) % Point(1,2));
assert(f1.getP(2) % Point(0,1));
// -- гЈ«л Ґ Ё§¬ҐЁ«Ёбм :
assert(f1.getAngle(0) == angle1);
assert(f1.getAngle(1) == angle2);
// -- ўлб®в Ё ®б®ў ЁҐ Ґ Ё§¬ҐЁ«Ёбм :
assert( equalWithEps(fW, f1.getWidth()) );
assert( equalWithEps(fH, f1.getHeight()) );
/********************
’ҐбвЁа®ў ЁҐ cFigure
********************/
float p0x,p0y,p1x,p1y,p2x,p2y;
cout << "p0.x = ";
cin >> p0x;
cout << "p0.y = ";
cin >> p0y;
cout << "p1.x = ";
cin >> p1x;
cout << "p1.y = ";
cin >> p1y;
cout << "p2.x = ";
cin >> p2x;
cout << "p2.y = ";
cin >> p2y;
cout << "angle1 = ";
cin >> angle1;
angle1 *= M_PI / 180;
cout << "angle2 = ";
cin >> angle2;
angle2 *= M_PI / 180;
cFigure f2(Point(p0x,p0y), Point(p1x,p1y), Point(p2x,p2y), angle1, angle2);
char c=' ';
while (c != 'q')
{
cout << endl << endl;
cout << "'1' - Rotate figure" << endl;
cout << "'2' - Move figure" << endl;
cout << "'p' - Print figure" << endl;
cout << "'q' - Quit" << endl;
cin >> c;
switch(c)
{
case '1': // rotate
cout << "Rotate figure :" << endl;
cout << "pNEW.x = ";
cin >> p1x;
cout << "pNEw.y = ";
cin >> p1y;
cout << "angleNEW = ";
cin >> angle1;
angle1 *= M_PI / 180;
f2.Rotate(Point(p1x,p1y), angle1);
break;
case '2':
cout << "Move figure to :" << endl;
cout << "pNEW.x = ";
cin >> p1x;
cout << "pNEw.y = ";
cin >> p1y;
f2.MoveTo(Point(p1x,p1y));
break;
case 'p':
OUTALL;
break;
}
}
}
Соседние файлы в папке all