Из текста даны 3 точки, нужно найти окружность, которая охватывает все точки к примеру три точки с координатами: a(100 100) b(300 300) c(100 300) а вывести координаты центра и на котором лежат все точки. какой код будет на pascal?
Точки A, B, C, заданные на плоскости координатами, соединяем между собой и получаем треугольник. Задача сводится к нахождению радиуса и координат центра окружности, описанной вокруг треугольника. Направим вдоль сторон треугольника ABC векторы: a от В к С, b от А к С, с от А к В. Радиус описанной окружности можно найти по формуле: В числителе последней дроби стоит скалярное произведение векторов, в знаменателе - произведение их модулей. Координаты центра вычисляются по формулам: В приведенных формулах используются координаты точек, а не векторов. Площадь треугольника S может быть вычислена по формуле Герона:
type Vector = record x: real; y: real; l: real end; Point = record x: real; y: real end;
procedure InitPoint(s: string; var P: Point); //Вводит координаты x,y точки P begin write('Введите координаты x,y точки ' + s, ' '); readln(P.x, P.y) end;
procedure GetVector(A: Point; B: Point; var AB: Vector); // Определяет координаты вектора и его длину по пвре точек begin with AB do begin x := B.x - A.x; y := B.y - A.y; l := sqrt(sqr(x) + sqr(y)) end end;
function InnerProd(a: Vector; b: Vector): real; begin Result := a.x * b.x + a.y * b.y end;
function Alpha(a: Vector; b: Vector): real; // Возвращает угол между векторами a,b begin result := arccos(abs(InnerProd(a, b)) / (a.l * b.l)); end;
function TriangleSq(a: real; b: real; c: real): real; // Возвращает площадь треугольника, найденную по трем сторонам // (формула Герона) var p: real; begin p := (a + b + c) / 2; Result := sqrt(p * (p - a) * (p - b) * (p - c)) end;
procedure GetCenter(A: Point; B: Point; C: Point; S: Real; var D: Point); // Помещает в запись D координаты центра окружности площадью S, // описанной вокруг треугольника с вершинами А,В и С var la2, lb2, lc2, detx, dety: real;
Тестовое решение (проверено геометрическим построением):
Введите координаты x,y точки A 100 100 Введите координаты x,y точки B 300 300 Введите координаты x,y точки C 100 300 Радиус описанной окружности R=141.42 Координаты центра этой окружности: О(200.0;200.0)
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку