|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.05.2010, 19:28 | #1 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
Точки на плоскости, нахождение квадрата
Такая задача:
Даны N точек на плоскости(N>=4). Выяснить, найдутся ли среди этих точек такие, которые являются вершинами квадрата. Найти стороны этого квадрата. Можете объяснить способ нахождения вершин квадрата и его сторон? |
21.05.2010, 00:45 | #2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Общий принцип: у вас есть N точек с координатами x и y. Берете 4 точки и считаете расстояние между парами 1-2, 2-3, 3-4 и 4-1. Если эти расстояния равны, значит точки образуют ромб. Остается найти какой-нибудь угол и проверить, равен ли он 90 градусам. Если так, то имеем квадрат. И так нужно перебрать все комбинации 4-х точек.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
21.05.2010, 09:39 | #3 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
Это понятно, но вот как найти длины сторон и угол, вот это проблема.
Пока я сделал так, завел два массива, один с точками, другой с разностью между точками. Если они равны то это квадрат. Я понимаю что это далеко неправильно. |
21.05.2010, 09:48 | #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. |
||
27.05.2010, 19:07 | #5 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
Массив C[,] хранит номера точек которые образуют квадрат, нужно чтобы не выводило на экран повтор-ся квадраты, помогите правильно отсортировать массив, можно допустим делать флаг на повторах и не выводить на экран, но сам поиск повторов не могу написать
Код:
|
28.05.2010, 06:45 | #6 |
Пользователь
Регистрация: 20.12.2009
Сообщений: 40
|
Я кстати обошелся без поиска угла, я просто сравниваю длины сторон, потом диагоналей, если они равны то это квадрат
|
28.05.2010, 06:45 | #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 |