![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
![]()
Такая задача:
Даны N точек на плоскости(N>=4). Выяснить, найдутся ли среди этих точек такие, которые являются вершинами квадрата. Найти стороны этого квадрата. Можете объяснить способ нахождения вершин квадрата и его сторон? |
![]() |
![]() |
![]() |
#2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Общий принцип: у вас есть N точек с координатами x и y. Берете 4 точки и считаете расстояние между парами 1-2, 2-3, 3-4 и 4-1. Если эти расстояния равны, значит точки образуют ромб. Остается найти какой-нибудь угол и проверить, равен ли он 90 градусам. Если так, то имеем квадрат. И так нужно перебрать все комбинации 4-х точек.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
![]()
Это понятно, но вот как найти длины сторон и угол, вот это проблема.
Пока я сделал так, завел два массива, один с точками, другой с разностью между точками. Если они равны то это квадрат. Я понимаю что это далеко неправильно. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
расстояние между точками найти совсем просто:
это корень квадратный из суммы квадратов разностей координат. Поясню на примере. Расстояние между точками X1,Y1 и X2.Y2 равно : L := SQRT( SQR(X1-X2) + SQR(Y1-Y2) ) (здесь SQR - это возведение в квадрат, а SQRT - извлечение квадратного корня). По поводу нахождения угла. Можно сходить по ссылке: Полезные функции и процедуры: часть 1 Цитата:
а ещё можно почитать книжку: Цитата:
... страница 226. Function GetAngle(Const x, у: Real): Real; { *Возвращает угол от 0 до 2*Pi (в радианах) . *} Последний раз редактировалось Serge_Bliznykov; 21.05.2010 в 10:20. |
||
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
![]()
Массив C[,] хранит номера точек которые образуют квадрат, нужно чтобы не выводило на экран повтор-ся квадраты, помогите правильно отсортировать массив, можно допустим делать флаг на повторах и не выводить на экран, но сам поиск повторов не могу написать
Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
![]()
Я кстати обошелся без поиска угла, я просто сравниваю длины сторон, потом диагоналей, если они равны то это квадрат
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
![]()
Помогите с поиском повторений!!!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нахождение точки на медиане треугольника в координатной плоскости. | Вадим Буренков | Свободное общение | 4 | 22.06.2010 19:18 |
Точки на декартовой плоскости | Darth_Programmeder | Помощь студентам | 2 | 20.03.2010 17:29 |
Задача про точки на плоскости | Единорог | Помощь студентам | 3 | 16.12.2009 17:30 |
точки на плоскости (*Х*З*) *PASCAL* | tipson | Помощь студентам | 10 | 09.07.2009 10:28 |
Нахождение трассы движения точки на плоскости | Эмиль_C++ | Общие вопросы C/C++ | 4 | 20.04.2009 14:26 |