00001 #ifndef TRIANGLE_IMPLEMENTATION_FILE
00002 #define TRIANGLE_IMPLEMENTATION_FILE
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "cartesian_objects.h"
00019 #include "line.cpp"
00020 #include "rectangle.cpp"
00021 #include "triangle.h"
00022
00023 namespace geometric {
00024
00025 triangle::triangle()
00026 : _vertex_1(new cartesian_point(origin())),
00027 _vertex_2(new cartesian_point(origin())),
00028 _vertex_3(new cartesian_point(origin()))
00029 {}
00030
00031 triangle::triangle(const cartesian_point &vertex_1,
00032 const cartesian_point &vertex_2, const cartesian_point &vertex_3)
00033 : _vertex_1(new cartesian_point(vertex_1)),
00034 _vertex_2(new cartesian_point(vertex_2)),
00035 _vertex_3(new cartesian_point(vertex_3))
00036 {}
00037
00038 triangle::triangle(const triangle &to_copy)
00039 : _vertex_1(new cartesian_point(*to_copy._vertex_1)),
00040 _vertex_2(new cartesian_point(*to_copy._vertex_2)),
00041 _vertex_3(new cartesian_point(*to_copy._vertex_3))
00042 {}
00043
00044 triangle::~triangle()
00045 {
00046 WHACK(_vertex_1);
00047 WHACK(_vertex_2);
00048 WHACK(_vertex_3);
00049 }
00050
00051 triangle &triangle::operator =(const triangle &to_copy)
00052 {
00053 if (this == &to_copy) return *this;
00054 *_vertex_1 = *to_copy._vertex_1;
00055 *_vertex_2 = *to_copy._vertex_2;
00056 *_vertex_3 = *to_copy._vertex_3;
00057 return *this;
00058 }
00059
00060 line<double> triangle::side_1_2() const
00061 { return line<double>(*_vertex_1, *_vertex_2); }
00062
00063 line<double> triangle::side_2_3() const
00064 { return line<double>(*_vertex_2, *_vertex_3); }
00065
00066 line<double> triangle::side_3_1() const
00067 { return line<double>(*_vertex_3, *_vertex_1); }
00068
00069 cartesian_point triangle::vertex_1() const { return *_vertex_1; }
00070
00071 cartesian_point triangle::vertex_2() const { return *_vertex_2; }
00072
00073 cartesian_point triangle::vertex_3() const { return *_vertex_3; }
00074
00075 void triangle::vertex_1(const cartesian_point &to_set) { *_vertex_1 = to_set; }
00076
00077 void triangle::vertex_2(const cartesian_point &to_set) { *_vertex_2 = to_set; }
00078
00079 void triangle::vertex_3(const cartesian_point &to_set) { *_vertex_3 = to_set; }
00080
00081 bool triangle::inside(const cartesian_point &where) const
00082 {
00083
00084 if (where.x()) where.y();
00085 return false;
00086 }
00087
00088 double triangle::area() const
00089 {
00090
00091 return 5;
00092 }
00093
00094 }
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 #endif //TRIANGLE_IMPLEMENTATION_FILE
00117