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;
}
|