// PascalABC.NET 3.3, сборка 1547 от 07.10.2017 // Внимание! Если программа не работает, обновите версию!
begin var (x1,y1):=ReadReal2('Координаты 1-й точки:'); var (x2,y2):=ReadReal2('Координаты 2-й точки:'); var a:=Abs(x2-x1); // считаем, что координаты указаны верно var d:=a*Sqrt(2); var (xc,yc):=((x2+x1)/2,(y2+y1)/2); Writeln('Длина стороны ',a,', диагональ ',d); Writeln('Координаты центра пересечения диагоналей: ',xc,' ',yc) end.
Пример Координаты 1-й точки: -3 3.5 Координаты 2-й точки: 4 -3.5 Длина стороны 7, диагональ 9.89949493661167 Координаты центра пересечения диагоналей: 0.5 0
находим k1, k2, b1, b2, b3, b4 как уравнения прямых, проходящих через пары заданных точек (если расположение неизвестно, то придется либо сначала сортировать точки, либо посчитать ещё и диагонали, а потом их исключить, как не имеющих параллельной пары с таким же k)
ba1 и ba2 как уравнения, прямых, проходящих через заданную точку и имеющих известные k.
коэффициенты b - это вертикальные смещения, по сути, поэтому точка принадлежит прямоугольнику, если смещения прямых через неё проходящих, находятся внутри диапазона смещений (между соответствующими параллельными прямыми). Условие должно выполняться для первой И для второй пары.
Если надо учитывать ещё и когда точка лежит прямо на стороне, то "<" и ">" в условиях заменить на "<=" и ">=" соответственно.
случай когда прямоугольник не "повернут" - простой и можно учесть отдельно (чтоб не получались бесконечные k)
// Внимание! Если программа не работает, обновите версию!
begin
var (x1,y1):=ReadReal2('Координаты 1-й точки:');
var (x2,y2):=ReadReal2('Координаты 2-й точки:');
var a:=Abs(x2-x1); // считаем, что координаты указаны верно
var d:=a*Sqrt(2);
var (xc,yc):=((x2+x1)/2,(y2+y1)/2);
Writeln('Длина стороны ',a,', диагональ ',d);
Writeln('Координаты центра пересечения диагоналей: ',xc,' ',yc)
end.
Пример
Координаты 1-й точки: -3 3.5
Координаты 2-й точки: 4 -3.5
Длина стороны 7, диагональ 9.89949493661167
Координаты центра пересечения диагоналей: 0.5 0
находим k1, k2, b1, b2, b3, b4 как уравнения прямых, проходящих через пары заданных точек (если расположение неизвестно, то придется либо сначала сортировать точки, либо посчитать ещё и диагонали, а потом их исключить, как не имеющих параллельной пары с таким же k)
ba1 и ba2 как уравнения, прямых, проходящих через заданную точку и имеющих известные k.
коэффициенты b - это вертикальные смещения, по сути, поэтому точка принадлежит прямоугольнику, если смещения прямых через неё проходящих, находятся внутри диапазона смещений (между соответствующими параллельными прямыми).
Условие должно выполняться для первой И для второй пары.
Если надо учитывать ещё и когда точка лежит прямо на стороне, то "<" и ">" в условиях заменить на "<=" и ">=" соответственно.
случай когда прямоугольник не "повернут" - простой и можно учесть отдельно (чтоб не получались бесконечные k)