Уравнение квадрата по 4 точкам

Уравнение квадрата в декартовой системе координат.

Проанализируем расположение квадрата на координатной плоскости.

В общем случае уравнение квадрата в декартовой (прямоугольной) системе координат принимает вид:

где точка О`(a;b)точка пересечения диагоналей квадрата;

d – длина диагонали квадрата.

В частном случае, когда точка О(0;0) — начала координат, является одновременно и точкой пересечения диагоналей квадрата, уравнение квадрата принимает вид:

где dдлина диагонали квадрата.

Задачи по геометрии

Задача № 22. Квадрат по 4 точкам.

На плоскости отмечены 4 точки. Построить квадрат, на сторонах которого лежат эти точки.

Эта запись опубликована Суббота, января 3, 2009 в 08:30 и находится в категории: Задачи на построение, квадрат, четырехугольник. Вы можите читать эту запись через RSS 2.0 поток. Вы также можите оставить комментарий, или поставить trackback со своего сайта.

20 Комментарев на “Задача № 22. Квадрат по 4 точкам.”

Вот мне интересно: на каждой стороне должна лежать одна точка или на одной из сторон можно расположить две точки, оставив одну из сторон без точки?

Для полного решения задачи необходимо рассмотреть все возможные варианты. 🙂

Вот моё построение для случая, когда на каждой стороне по точке.

Не знаю, как у Вас будет прочитана моя длинная ссылка на рисунок.

Видимо ссылка, к сожалению, не прочитана.

Например такие четыре точки — три вершины правильного треугольника и его центр. Как тогда быть?

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

картинку от Jan положил в журнале у Jan (ссылка есть тут у вас) — а то здесь ссылки не удается вставить…

ссылки работают, прошу тестировать

Что-то опять проблемка со ссылками — не добавляется комментарий со ссылками — положил мультики см ссылку выше.

А не скажите откуда эта задача взялась?

Предлагаю продолжение задачи.
Построить правильный 5-угольник по 5 точках на его сторонах.

Если картинки появятся, тестирование всё-таки, то видно, что отнюдь не всегда можно построить квадрат, чтобы все четыре точки лежали на его сторонах.

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

Если два прилежащих угла тупые, а один из оставшихся углов меньше 45 градусов, то построение квадрата будет несколько иным, при этом две точки будут лежать на одной из сторон квадрата, а одна сторона окажется обделённой.

Случается, что применяя оба способа построения, можно впихнуть эти точки в два разных квадрата, отличающихся в размерах.

Если три точки лежат на одной линии, а четвертая соединена с двумя крайними, то на образовавшемся треугольнике можно построить квадрат только в том случае, если высота опущенная из одинокой точки на сторону с тремя точками, будет больше или равна стороне с троеточием.

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

Наверное, если я ничего не напутал и не выпал из темы, есть ещё много допусков и ограничений >:)

«Квадрат невозможно построить, если фигура образованная этими точками, имеет острые или, соответственно тупые противоположные угл…» ой ли! а я вот могу вписать в квадрат параллелограмм, не являющийся прямоугольником.

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

В квадрате отметили 20 точек и соединили их непересекающимися отрезками друг с другом и с вершинами квадрата так, что квадрат разбился на треугольники. Сколько получилось треугольников?

В квадрате отметили 20 точек и соединили их непересекающимися отрезками друг с другом и с вершинами квадрата так, что квадрат разбился на треугольники. Сколько получилось треугольников?

Как проверить, если заданные четыре точки образуют квадрат

По заданным координатам четырех точек на плоскости найдите, составляют ли четыре точки квадрат или нет.
Чтобы проверить квадрат, нам нужно проверить следующее.
а) Все стороны четверок, образованные точками, одинаковы.
б) Угол между любыми двумя сторонами составляет 90 градусов. (Это условие является обязательным, поскольку четырехугольник также имеет те же стороны.
c) Убедитесь, что обе диагонали имеют одинаковое расстояние

Идея состоит в том, чтобы выбрать любую точку и рассчитать ее расстояние от остальных точек. Пусть выбранная точка будет «р». Чтобы сформировать квадрат, расстояние двух точек должно быть одинаковым от «р», пусть это расстояние будет d. Расстояние от одной точки должно отличаться от этого d и должно быть равно √2 раз d. Пусть эта точка с разным расстоянием будет ‘q’.
Вышеупомянутое условие не достаточно хорошо, поскольку точка с другим расстоянием может быть на другой стороне. Мы также должны проверить, что q находится на том же расстоянии от 2 других точек, и это расстояние такое же, как и d.

Ниже приведены реализации вышеуказанной идеи.

// Программа на C ++ для проверки, составляют ли четыре заданные точки квадрат или нет.
#include

using namespace std;

// Структура точки в 2D-пространстве

// Полезная функция для поиска квадрата расстояния
// из точки ‘p’ в точку ‘q’

int distSq(Point p, Point q)

return (p.x — q.x) * (p.x — q.x) + (p.y — q.y) * (p.y — q.y);

// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

bool isSquare(Point p1, Point p2, Point p3, Point p4)

int d2 = distSq(p1, p2); // от p1 до p2

int d3 = distSq(p1, p3); // от p1 до p3

int d4 = distSq(p1, p4); // от p1 до p4

// Если длины if (p1, p2) и (p1, p3) одинаковы, то

// следующие условия должны быть выполнены, чтобы сформировать квадрат.

// 1) Квадрат длины (p1, p4) такой же, как дважды

// 2) Квадрат длины (p2, p3) одинаков

// как двойной квадрат (p2, p4)

if (d2 == d3 && 2 * d2 == d4

&& 2 * distSq(p2, p4) == distSq(p2, p3)) <

// Два приведенных ниже случая похожи на приведенный выше

if (d3 == d4 && 2 * d3 == d2

&& 2 * distSq(p3, p2) == distSq(p3, p4)) <

if (d2 == d4 && 2 * d2 == d3

&& 2 * distSq(p2, p3) == distSq(p2, p4)) <

// Программа драйвера для проверки вышеуказанной функции

isSquare(p1, p2, p3, p4) ? cout «Yes» : cout «No» ;

// Java-программа для проверки, составляют ли четыре заданные точки квадрат или нет.

// Структура точки в 2D-пространстве

static class Point

public Point( int x, int y)

// Полезная функция для поиска квадрата расстояния
// из точки ‘p’ в точку ‘q’

static int distSq(Point p, Point q)

return (p.x — q.x) * (p.x — q.x) + (p.y — q.y) * (p.y — q.y);

// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

static boolean isSquare(Point p1, Point p2, Point p3, Point p4)

int d2 = distSq(p1, p2); // от p1 до p2

int d3 = distSq(p1, p3); // от p1 до p3

int d4 = distSq(p1, p4); // от p1 до p4

// Если длины if (p1, p2) и (p1, p3) одинаковы, то

// следующие условия должны быть выполнены, чтобы сформировать квадрат.

// 1) Квадрат длины (p1, p4) такой же, как дважды

// 2) Квадрат длины (p2, p3) одинаков

// как двойной квадрат (p2, p4)

if (d2 == d3 && 2 * d2 == d4

&& 2 * distSq(p2, p4) == distSq(p2, p3))

// Два приведенных ниже случая похожи на приведенный выше

if (d3 == d4 && 2 * d3 == d2

&& 2 * distSq(p3, p2) == distSq(p3, p4))

if (d2 == d4 && 2 * d2 == d3

&& 2 * distSq(p2, p3) == distSq(p2, p4))

public static void main(String[] args)

Point p1 = new Point( 20 , 10 ), p2 = new Point( 10 , 20 ),

p3 = new Point( 20 , 20 ), p4 = new Point( 10 , 10 );

System.out.println(isSquare(p1, p2, p3, p4)== true ? «Yes» : «No» );

// Этот код предоставлен PrinciRaj1992

# Программа Python3 для проверки
# четыре заданные точки образуют квадрат или нет.

# Структура точки в 2D-пространстве

def __init__( self , x, y):

# Полезная функция для поиска квадрата
# расстояние от точки ‘p’ до точки ‘q’

return (p.x — q.x) * (p.x — q.x) + \

# Эта функция возвращает true, если (p1, p2, p3, p4)
# сформировать квадрат, иначе ложь

def isSquare(p1, p2, p3, p4):

d2 = distSq(p1, p2) # от p1 до p2

d3 = distSq(p1, p3) # от p1 до p3

d4 = distSq(p1, p4) # от p1 до p4

# Если длины, если (p1, p2) и (p1, p3) одинаковы, то

# следующие условия должны быть выполнены, чтобы сформировать квадрат.

# 1) Квадрат длины (p1, p4) такой же, как дважды

# 2) Квадрат длины (p2, p3) одинаков

# в два раза больше квадрата (p2, p4)

if d2 = = d3 and 2 * d2 = = d4 and \

2 * distSq(p2, p4) = = distSq(p2, p3):

# Два приведенных ниже случая похожи на приведенный выше

if d3 = = d4 and 2 * d3 = = d2 and \

2 * distSq(p3, p2) = = distSq(p3, p4):

if d2 = = d4 and 2 * d2 = = d3 and \

2 * distSq(p2, p3) = = distSq(p2, p4):

if __name__ = = «__main__» :

p1 = Point( 20 , 10 )

p2 = Point( 10 , 20 )

p3 = Point( 20 , 20 )

p4 = Point( 10 , 10 )

if isSquare(p1, p2, p3, p4):

# Этот код предоставлен Mayank Chaudhary
# aka chaudhary_19

// Программа AC # для проверки, составляют ли четыре заданные точки квадрат или нет.

// Структура точки в 2D-пространстве

public Point( int x, int y)

// Полезная функция для поиска квадрата расстояния
// из точки ‘p’ в точку ‘q’

static int distSq(Point p, Point q)

return (p.x — q.x) * (p.x — q.x) + (p.y — q.y) * (p.y — q.y);

// Эта функция возвращает истину, если (p1, p2, p3, p4) образуют
// квадрат, иначе ложь

static bool isSquare(Point p1, Point p2, Point p3, Point p4)

int d2 = distSq(p1, p2); // от p1 до p2

int d3 = distSq(p1, p3); // от p1 до p3

int d4 = distSq(p1, p4); // от p1 до p4

// Если длины if (p1, p2) и (p1, p3) одинаковы, то

// следующие условия должны быть выполнены, чтобы сформировать квадрат.

// 1) Квадрат длины (p1, p4) такой же, как дважды

// 2) Квадрат длины (p2, p3) одинаков

// как двойной квадрат (p2, p4)

if (d2 == d3 && 2 * d2 == d4

&& 2 * distSq(p2, p4) == distSq(p2, p3))

// Два приведенных ниже случая похожи на приведенный выше

if (d3 == d4 && 2 * d3 == d2

&& 2 * distSq(p3, p2) == distSq(p3, p4))

if (d2 == d4 && 2 * d2 == d3

&& 2 * distSq(p2, p3) == distSq(p2, p4))

public static void Main(String[] args)

Point p1 = new Point(20, 10), p2 = new Point(10, 20),

p3 = new Point(20, 20), p4 = new Point(10, 10);

Console.WriteLine(isSquare(p1, p2, p3, p4) == true ? «Yes» : «No» );

// Этот код предоставлен 29AjayKumar

Выход:

Эта статья предоставлена Anuj . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме


источники:

http://geom.uz/?p=133

http://espressocode.top/check-given-four-points-form-square/