Вычисление декартовых координат вершин правильного треугольника


Разработать ООП для вычисления декартовых координат вершин правильного треугольника с заданной длиной стороны, центр которого лежит на оси Х (рисунок 1). Длина стороны треугольника должна передаваться программе через аргумент командной строки, а полученные координаты должны отображаться через стандартный вывод. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями ее декартовых координат и публичными методами доступа к ним и конструктором инициализации их значений. Кроме того нужно предусмотреть статический метод конструирования точки по ее полярным координатам (программа polar.cc).

 

Рисунок 1 – К постановке задачи вычисления декартовых координат правильного треугольника

 

// Программа polar.cc

#include <stdlib.h>

#include <math.h>

#include <iostream.h>

// Класс Point2 точки плоскости

class Point2 {

private:

float x;

float y;

Point2(float _x, float _y) : x(_x), y(_y) { };// приватный конструктор

public:

float getx() { return x; }; // доступ к x

float gety() { return y; }; // доступ к y

static Point2 Polar(float, float); // именованный конструктор точки - статический метод

Point2() { x=y=0.0; }; // конструктор по умолчанию (для массива точек)

}; // Point2

// конструирование точки по полярным координатам

inline Point2 Point2 :: Polar(float R, float F) {

Point2 p(R*cos(F), R*sin(F)); // перевод полярных координат в декартовы

return p; // возврат объекта класса точки

}; //polar

// основная функция

int main(int argc, char* argv[ ]) {

float edge = 1.0; // сторона треугольника (1.0 – длина по умолчанию)

float angle = 0.0; // полярный угол вершины

float pi; // число pi

pi = acos (-1.0 ); // вычислить pi (можно M_PI из math.h)

float radius; // радиус-вектор вершины

int i = 0; // счетчик вершин треугольника

Point2 vertex [3]; // массив вершин треугольника vertex[0], vertex[1], vertex[2]

if(argc > 1)

edge = atof (argv[1]);// получить длину стороны из командной строки

cout << "pi=" << pi << endl;

radius = edge / (2*sin(pi/3.0)); // радиус описанной окружности

while (i<3) { // цикл вычисления декартовых координат вершин

vertex[ i ] = Point2::Polar(radius, angle);

angle += ((4.0*pi)/3.0); // +120 градусов =4* pi/3

i++;

}// while

do { // Печать декартовых координат вершин в обратном порядке

--i;

cout << vertex[ i ].getx() << ';' << vertex[ i ].gety() << endl;

} while(i > 0); //do- while

return (0); // Корректное завершение программы

}// main



Дата добавления: 2021-07-22; просмотров: 485;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.007 сек.