summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog2/Z-Uebung/Teil2/main2.cpp
blob: 17a829f69300ad4cf9b002967cc1de239dd0ae44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// �bung PG 2, Teil 2

// test Shape, Polyline, Line, Polygon, Rectangle, Ellipse, Circle.

// Author: Prinz / Kirch-Prinz / Weber

// Date: 26.05.05



#include "shape.h"



int main()

{

   cout << "\nGeometrische Figuren\n" << endl;



   Point vertices[] = { Point( -1, 0 ), Point( 0, 2 ), Point( 1, 0 ) };

   

   Polyline poly1,

            poly2( Point( 1, 2 ), Point( 2, 0 ) ),

            poly3( vertices, 3 ),

            poly4( poly3 );  // use of copy constructor



   cout << "Die Punkte der vier Linienzuege: \n"

        << poly1.toString() << endl

        << poly2.toString() << endl

        << poly3.toString() << endl

        << poly4.toString() << endl;

   cin.get();



   cout << "Zuweisungen testen:" << endl;  // test assignment 

   poly1 = poly4;

   cout << poly1.toString() << endl;

   poly1 = Polyline();

   cout << poly1.toString() << endl << endl;



   cout << "Punkte anhaengen:" << endl;  // append points

   poly1 += Point( 0.5, 2.5 );

   cout << poly1.toString() << endl;

   poly4 += Point( 2, 2 );

   cout << poly4.toString() << endl;

   cout << "Anzahl Linien: " << poly4.getNumberOfLines() << endl  

        << "Laenge       : " << poly4.getLength() << endl;



   cout << "Nach der Skalierung mit dem Faktor 2.0" << endl;

   poly4.scale( 2.0 );

   cout << poly4.toString() << endl << endl;



   cout << "Linienzuege anhaengen:" << endl;  // append lines

   poly2 += poly1;                            

   cout << poly2.toString() << endl;

   poly4 += poly3;

   cout << poly4.toString() << endl << endl;

 

   cout << "Linienzug verschieben:" << endl;  // displacement

   poly4.move( 1,0 );

   cout << poly4.toString() << endl;

   cout << "Neuer Anker: " << poly4.getAnchor() << endl; 

   cin.get();



   cout << "Linien testen: " << endl;

   Line line1( 0, 0, 1, 1 ),

        *pLine = new Line( line1 );  // use of copy constructor

   cout << line1.toString() << endl;

   pLine->move( -1.0, -1.0 );  // displacement

   cout << pLine->toString() << endl;



   cout << "Laenge der Line: " << pLine->getLength() << endl;

   cout << "Nach der Skalierung mit dem Faktor 2.0" << endl;

   pLine->scale( 2.0 );

   cout << pLine->toString() << endl;



   line1 = *pLine;  // test assignment

   delete pLine;

   cout << "Nach der Zuweisung:" << endl;

   cout << line1.toString() << endl << endl;



   cout << "Polygone testen: " << endl;

   Polygon *pPolygon = new Polygon,

           triangle( vertices, 3 ),

           quadrangle( triangle );  // use of copy constructor

   quadrangle += Point( 0, -2 );



   cout << pPolygon->toString() << endl;

   cout << "Dreieck:  " << triangle.toString() << endl;

   cout << "Viereck:  " << quadrangle.toString() << endl;

   cout << "Anzahl Ecken: " << quadrangle.getNumberOfVertices() << endl  

        << "Umfang      : " << quadrangle.getCircumference() << endl;



   cout << "Zuweisung:" << endl;

   *pPolygon = triangle;  // test assignment

   cout << pPolygon->toString() << endl;

   cout << "Umfang des Dreiecks: "

        << pPolygon->getCircumference() << endl << endl;

   delete pPolygon;



   cout << "Rechtecke:" << endl; 

   Rectangle rect1( Point( -2, -1 ), 2, 1 ),  // left lower corner, width, height

             rect2( Point( 0, 0 ), Point( 1, 1 ) );

   cout << rect1.toString() << endl;

   cout << rect2.toString() << endl;

   cout << "Umfang der Rechtecke: "

        << rect1.getCircumference() << " und "

        << rect2.getCircumference() << endl;

   cin.get();



   cout << "Ellipsen und Kreise:" << endl; 

   Ellipse ellipse( Point( 0, 0 ), 2, 1 );  // center, semi-axis

   cout << ellipse.toString() << endl;

   cout << "Umfang: " << ellipse.getCircumference() << endl;



   Circle  circle( Point( 0, 0 ), 1 );

   cout << circle.toString() << endl;

   cout << "Umfang: " << circle.getCircumference() << endl;

   circle.scale( 2.0 );

   cout << circle.toString() << endl;

   cout << "Umfang: " << circle.getCircumference() << endl;



   return 0;

}