Скачиваний:
14
Добавлен:
01.05.2014
Размер:
3.4 Кб
Скачать
// ” ©«: 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