, : calculus, : Top


24 Вычислительная геометрия - точки, векторы, прямые

Справочник по математическим функциям

Данные функции описаны в заголовочном файле cmath и должны подключаться директивой

     #include <cmath>

Все углы измеряются в радианах!

fabs(x)
Вычисляет абсолютное значение числа.
sqrt(x)
Вычисляет корень из числа.
sin(x)
Вычисляет синус числа.
cos(x)
Вычисляет косинус числа.
tan(x)
Вычисляет тангенс числа.
asin(x)
Вычисляет арксинус числа.
acos(x)
Вычисляет арккосинус числа.
atan(x)
Вычисляет арктангенс числа.
atan2(y,x)
Возвращает угол, тангенс которого равен y/x
Полезные константы
M_PI
3.14159265358979323846 /* pi */
M_PI_2
1.57079632679489661923 /* pi/2 */
M_PI_4
0.78539816339744830962 /* pi/4 */
M_1_PI
0.31830988618379067154 /* 1/pi */

Упражнения

Все входные числа – целые, по модулю не превышающие 10000. Все углы необходимо выводить в радианах. Все вещественные числа должны выводиться с точностью, не менее 10-5. В случае неоднозначного ответа вывести любой верный.

(A) Расстояние между двумя точками

Даны координаты двух точек. Найдите расстояние между ними.

     Ввод                       Вывод
     0 0                        1.4142135623730951
     1 1

(B) Полярный угол точки

Даны два числа – координаты точки, не совпадающей с началом координат.

Выведите ее полярный угол (величину от 0 до 2π).

     Ввод                       Вывод
     2 3                        0.98279

(C) Угол между векторами

Даны четыре числа: координаты двух невырожденных векторов.

Выведите величину неориентированного угла между ними.

     Ввод                       Вывод
     2 1 3 5                    0.56673

(D) Площадь треугольника

Даны шесть чисел: координаты трех вершин треугольника.

Выведите значение площади треугольника.

     Ввод                       Вывод
     1 0 2 4 5 2                7.0

(E) Классификация векторов

Даны четыре числа: координаты двух ненулевых векторов. Если эти вектора коллинеарны, выведите 1. Если эти вектора перпендикулярны, выведите 2. Иначе выведите 0.

В этой задаче нельзя использовать обратные тригонометрические функции.

     Ввод                       Вывод
     1 1                        1
     2 2
     
     Ввод                       Вывод
     0 1                        2
     1 0
     
     Ввод                       Вывод
     1 2                        0
     2 1

(F) Уравнение прямой - 1

Прямая задана двумя точками. Задайте ее уравнением.

Программа получает на вход четыре числа: координаты двух различных точек и должна вывести три числа: коэффициенты уравнения прямой.

     Ввод                       Вывод
     1 2 3 1                     -1 -2 5

(G) Уравнение прямой - 2

Прямая задана точкой и вектором нормали. Задайте ее уравнением.

Программа получает на вход четыре числа: координаты точки и вектора нормали и должна вывести три числа: коэффициенты уравнения прямой.

     Ввод                       Вывод
     1 2 3 1                     3 1 -5

(H) Принадлежность точки прямой

Проверьте, принадлежит ли данная точка данной прямой.

Программа получает на вход пять чисел: координаты точки и коэффициенты уравнения прямой и должна вывести строку YES, если точка принадлежит прямой и строку NO иначе.

     Ввод                       Вывод
     3 7 -2 1 -1                 YES

(I) Положение точек вне прямой

Проверьте, лежат ли данные две точки по одну сторону от прямой или нет.

Программа получает на вход семь чисел: координаты двух точек вне прямой и коэффициенты уравнения прямой.

Программа должна вывести YES, если точки лежат по одну сторону от прямой NO в противном случае.

     Ввод                       Вывод
     0 0 2 4 2 -1 -1             YES

(J) Классификация прямых

Программа получает на вход шесть чисел: коэффициенты двух уравнений прямой.

Программа должна вывести 1, если эти прямые совпадают, 2 – если параллельны, 3 – если перпендикулярны и 0 во всех остальных случаях.

     Ввод                       Вывод
     1 2 3                       1
     -1 -2 -3

(К) Три точки

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

Программа должна вывести YES, если эти точки лежат на одной прямой, или NO в противном случае.

     Ввод                       Вывод
     0 0                          YES
     1 1
     2 2

(L) Принадлежность точки лучу

Программа получает на вход шесть чисел: координаты точки и координаты начала и конца вектора. Проверьте, принадлежит ли данная точка лучу, задаваемому данным вектором.

Программа должна вывести YES, если точка принадлежит лучу, или NO в противном случае.

     Ввод                       Вывод
     1 6 3 7 5 8                 NO

(M) Принадлежность точки отрезку

Программа получает на вход шесть чисел: координаты точки и координаты концов отрезка. Проверьте, принадлежит ли данная точка данному отрезку.

Программа должна вывести YES, если точка принадлежит отрезку, или NO в противном случае.

     Ввод                       Вывод
     3 3 1 2 5 4                 YES

(N) Расстояние от точки до прямой

Даны пять чисел: координаты точки и коэффициенты нормального уравнения прямой.

Программа должна вывести одно число: расстояние от данной точки до данной прямой.

     Ввод                       Вывод
     1 1 1 1 -1                  0.70711

(O) Параллельная прямая

Даны четыре числа: коэффициенты нормального уравнения прямой и величина d.

Программа должна вывести три числа: коэффициенты нормального уравнения любой из прямых, паралелльных данной, и лежащих от нее на расстоянии d.

     Ввод                       Вывод
     0 -1 1 1                    0 -1 2

(P) Основание перпендикуляра

Дано пять чисел: координаты точки и коэффициенты нормального уравнения прямой.

Программа должна вывести два числа: координаты основания перпендикуляра, опущенного из данной точки на данную прямую

     Ввод                       Вывод
     1 1 1 1 -1                  0.5 0.5

(Q) Расстояние от точки до луча

Дано шесть чисел: координаты точки, координаты начала и конца вектора.

Программа должна вывести единственное число: расстояние от точки до луча, заданного вектором.

     Ввод                       Вывод
     2 1 1 1 0 2                 1.0

(R) Расстояние от точки до отрезка

Дано шесть чисел: координаты точки и координаты двух концов отрезка.

Программа должна вывести единственное число: расстояние от данной точки до данного отрезка.

     Ввод                       Вывод
     0 4 2 3 2 5                 2.0

(S) Пересечение двух прямых

Дано шесть чисел: коэффициенты нормальных уравнений двух непараллельных прямых.

Программа должна вывести два числа: координаты точки пересечения данных прямых.

     Ввод                       Вывод
     1 1 -1 1 -1 0               0.5 0.5

(T) Пересечение двух отрезков

Дано восемь чисел чисел: координаты концов двух отрезков (сначала координаты концов первого отрезка, затем координаты концов второго отрезка).

Программа должна вывести YES, если данные отрезки имеют общую точку или NO в противном случае.

     Ввод                       Вывод
     5 1 2 6 1 1 7 8             YES

(U) Биссектриса угла

Дано шесть чисел: координаты точек X, Y, Z.

Программа должна вывести три числа: коэффициенты нормального уравнения прямой, являющейся биссектрисой угла ∠YXZ.

     Ввод                       Вывод
     1 1 1 0 0 1                 -1.0 1.0 0.0