Файл DotVec.cpp
#include "DotVec.h"
//////////////////////////// РЕАЛИЗАЦИЯ функциЙ, дружественных классу Dot ////////////////////////////////// // выводит на экран имя точки и значения координат заданной точки void Print (const Dot & D) // константная ссылка на заданную точку { char S [ ] ="Координаты точки "; // объявляет и инициализирует строку заголовка CharToOem (S, S); // преобразует символы строки в кириллицу cout<<S<<D.name<<":"; // выводит на экран заголовок и имя точки cout<<"\tx = "<<D.x<<"\ty = "<<D.y<<'\n'; // выводит на экран значения координат } // вводит значения координат заданной точки с клавиатуры void Input (Dot & D) // ссылка на заданную точку { char S [ ] =”Введите координаты точки ”; // объявляет и инициализирует строку приглашения CharToOem (S, S); // преобразует символы строки в кириллицу cout<<S<<D.name<<'\n'; // выводит на экран приглашение и имя точки cout <<"\tx="; cin >>D.x; // вводит значение абсциссы точки с клавиатуры cout <<"\ty="; cin >>D.y; // вводит значения ординаты точки с клавиатуры } // возвращает расстояние между заданными точками double Dist (const Dot & A, const Dot & B) // константные ссылки на заданные точки { double X = A.x – B.x; // объявляет и инициализирует double Y = A.y – B.y; // катеты прямоугольного треугольника return sqrt (X*X + Y*Y); // возвращает значение гипотенузы прямоугольного треугольника } // возвращает значение площади треугольника, образованного заданными точками double Area (const Dot & A, const Dot & B, const Dot & C) { // константные ссылки на вершины треугольника double a = Dist (C, B); // объявляет и вычисляет double b = Dist (C, A); // длины сторон треугольника double c = Dist (A, B); double p = (a+b+c) / 2.0; // объявляет и вычисляет длину полупериметра return sqrt (p*(p – a)*(p – b)*(p – c)); // вычисляет площадь треугольника по формуле Герона } // возвращает значение угла в градусах с вершиной в точке B double Angle (const Dot & A, const Dot & B, const Dot & C) { // константные ссылки на заданные точки const double pi = 4*atan (1.0); // объявляет константу π Vec BA ("BA"), BC ("BC"); // объявляет вектора Vector (B, A, BA); Vector (B, C, BC);// вычисляет вектора return acos (Scalar (BA, BC) / (Modul (BA) * Modul (BC)))*180 / pi; } // вычисляет угол между векторами в градусах
//////////////////////////// РЕАЛИЗАЦИЯ функциЙ, дружественных классу Vec ////////////////////////////////// // выводит на экран имя и значения проекций заданного вектора void Print (const Vec & V) // константная ссылка на заданный вектор { char S [ ] ="Проекции вектора "; // объявляет и инициализирует строку заголовка CharToOem (S, S); // преобразует символы строки в кириллицу Cout << S << V.name << ":"; // выводит на экран заголовок и имя вектора cout<<"\tx = "<<V.x<<"\ty = "<<V.y<<'\n'; // выводит на экран значения проекций } // возвращает длину заданного вектора double Modul (const Vec & V) // константная ссылка на заданный вектор { return sqrt (V.x * V.x + V.y * V.y); // возвращает длину заданного вектора } // возвращает скалярное произведение заданных векторов double Scalar (const Vec & V, const Vec & W)// константные ссылки на заданные вектора { return (V.x * W.x + V.y * W.y); } // поворачивает заданный вектор на заданный угол void Rotate (const Vec & V, // константная ссылка на заданный вектор double f, // угол поворота в градусах Vec & W) // ссылка на повёрнутый вектор { const double pi = 4 * atan (1.0); // объявляет константу π f *= pi / 180.0; // пересчитывает градусы в радианы W.x = V.x * cos (f) – V.y * sin (f); // вычисляет проекцию вектора на ось X W.y = V.x * sin (f) + V.y * cos (f); // вычисляет проекцию вектора на ось Y }
///////////////////////// РЕАЛИЗАЦИЯ функциЙ, дружественных классАм Vec и Dot //////////////////////////// // вычисляет вектор по координатам его концов void Vector (const Dot & N, // константная ссылка на начало вектора const Dot & K, // константная ссылка на конец вектора Vec & V) // ссылка на вычисляемый вектор { V.x = K.x – N.x; // вычисляет проекцию вектора на ось X V.y = K.y – N.y; // вычисляет проекцию вектора на ось Y } // вычисляет координаты конца заданного вектора void EndVec (const Dot & N, // константная ссылка на начало вектора const Vec & V, // константная ссылка на заданный вектор Dot & K) // ссылка на конец вектора { K.x = N.x + V.x; // вычисляет абсциссу конца вектора K.y = N.y + V.y; // вычисляет ординату конца вектора }
|