Пользователь
Регистрация: 08.12.2011
Сообщений: 24
|
Треугольник
даны координаты точек треугольника
найти 1) площади, периметра;
2) длины медианы, принадлежащей любой стороне;
3) определение значений углов;
4) перемещение в направлении одной из осей;
5) поворот вокруг центра тяжести треугольника.
в последних двух пунктах можно найти только измененные координаты
площадь, периметр, медианы и углы нашла, а остальные никак
Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
const double Pi=3.14159265359;
class Triangle
{private:
double x1, y1, x2, y2, x3, y3;
double xx, yy;
public:
Triangle();
explicit Triangle( double, double, double, double, double, double );
~Triangle() {}
double square() const;
double perimeter() const;
double mediana() const;
double alfa() const;
double betta() const;
double gamma() const;
double per();
static double length ( double, double, double, double );
friend std::ostream& operator << ( std::ostream&, const Triangle& );
};
Triangle::Triangle()
{
cout<<"Введите координаты вершин треугольника:"<<endl;
cout<<"x1: "; cin>>x1;
cout<<"y1: "; cin>>y1;
cout<<"x2: "; cin>>x2;
cout<<"y2: "; cin>>y2;
cout<<"x3: "; cin>>x3;
cout<<"y3: "; cin>>y3;
}
Triangle::Triangle( double _x1, double _y1, double _x2, double _y2, double _x3, double _y3 )
{
x1 = _x1;
y1 = _y1;
x2 = _x2;
y2 = _y2;
x3 = _x3;
y3 = _y3;
}
double Triangle::length( double x1, double y1, double x2, double y2 )
{
return sqrt( (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) );
}
double Triangle::perimeter() const
{
return length(x1, y1, x2, y2) + length(x1, y1, x3, y3) + length(x2, y2, x3, y3);
}
double Triangle::square() const
{
return fabs( x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) ) / 2.;
}
double Triangle::mediana() const
{
return sqrt( 2*(length(x2,y2, x3, y3)*length(x2,y2, x3, y3)) +2*(length(x1, y1, x3, y3)*length(x1, y1, x3, y3))-(length(x1, y1, x2, y2)*length(x1, y1, x2, y2)))/2.;
}
double Triangle::alfa() const
{
return (180/Pi)*acos((length(x2,y2, x3, y3)*length(x2,y2, x3, y3)+length(x1, y1, x3, y3)*length(x1, y1, x3, y3)-length(x1, y1, x2, y2)*length(x1, y1, x2, y2))/(2*length(x2,y2, x3, y3)*length(x1, y1, x3, y3)));
}
double Triangle::betta() const
{
return (180/Pi)*acos((length(x1, y1, x2, y2)*length(x1, y1, x2, y2)+length(x1, y1, x3, y3)*length(x1, y1, x3, y3)-length(x2,y2, x3, y3)*length(x2,y2, x3, y3))/(2*length(x2,y2, x1, y1)*length(x1, y1, x3, y3)));
}
double Triangle::gamma() const
{
return (180/Pi)*acos((length(x1, y1, x2, y2)*length(x1, y1, x2, y2)+length(x2, y2, x3, y3)*length(x2, y2, x3, y3)-length(x1,y1, x3, y3)*length(x1,y1, x3, y3))/(2*length(x2,y2, x1, y1)*length(x2, y2, x3, y3)));
}
double Triangle::per()
{
cout<<"На сколько переместить треугольник?"<<endl;
cout<<"По оси Х"; cin>>xx;
cout<<"По оси У"; cin>>yy;
x1=x1+xx; x2=x2+xx; x3=x3+xx;
y1=y1+yy; y2=y2+yy; y3=y3+yy;
return 1;
}
std::ostream& operator << ( std::ostream& stream, const Triangle& t )
{
stream << '(' << t.x1 << ';' << t.y1 << "), "
<< '(' << t.x2 << ';' << t.y2 << "), "
<< '(' << t.x3 << ';' << t.y3 << ')' ;
return stream;
}
int main()
{ setlocale(0, "");
Triangle t;
cout << "Координаты вершин треугольника: " << t << endl;
cout << "Площадь: " << t.square() << endl;
cout << "Периметр: " << t.perimeter() << endl;
cout << "Медиана: " << t.mediana() << endl;
cout << "Угол альфа: " << t.alfa() << endl;
cout << "Угол бетта: " << t.betta() << endl;
cout << "Угол гамма: " << t.gamma() << endl;
cout<<"На сколько переместить треугольник?"<<endl;
_getch();
}
|