|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
Начертить треугольники по координатам, чтобы они не пересекались21.12.2009, 19:51. Показов 4974. Ответов 23
Метки нет (Все метки)
0
|
|
| 21.12.2009, 19:51 | |
|
Ответы с готовыми решениями:
23
Как сместить оси координат,чтобы они пересекались в точке (0;0) Определить даты приезда для каждого из друзей так, чтобы они не пересекались
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|
| 22.12.2009, 08:20 | |
|
Проект, в котором есть функции для определения: пересекаются ли треугольники. Может это как-то поможет.
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 22.12.2009, 15:33 [ТС] | |
|
А как можно узнать точку пересечения двух отрезков, зная их координаты???
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|||||||||||
| 22.12.2009, 16:38 | |||||||||||
|
Оформил базовые функции в виде отдельного модуля.
Полный код модуля:
0
|
|||||||||||
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 22.12.2009, 17:19 [ТС] | |
|
а если точки заданны их координатами на плоскости и нужно построить так треугольники чтоб они не пересекались???? Но могут иметь общую сторону........
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|
| 23.12.2009, 01:42 | |
|
А может один треугольник быть полностью внутри другого? Такое допускается?
И ещё - если один треугольник своей вершиной касается стороны другого треугольника - такие треугольники считаются пересекающимися или нет?
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 23.12.2009, 05:55 [ТС] | |
|
Нет!!! Необходимо построить n треугольников по точкам (3*n - количество точек на плоскости)... Так чтобы они не пересекались и не лежали друг в друге. Но они могут иметь общую сторону.... Т.е грубо говоря даны точки необходимо так их соединить чтоб получить n треугольников, без пересечения прямых....
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
||||||
| 23.12.2009, 10:22 | ||||||
|
В общем, реализовал так: задаётся квадратная сетка точек NxN, где N = 2..10. И по точкам этой сетки строятся непересекающиеся треугольники. Надо иметь в виду, что разбиение на треугольники можно делать поразному. Поэтому картина (набор треугольников) может получиться другой, если придумать другой способ группировки точек.
Алгоритм работает так: Перебор точек начинается с первой строки матрицы. И идёт слева направо и сверху вниз. Т. е. построчно, начиная с самой верхней строки и первого столбца и заканчивая самой нижней строкой и самым правым столбцом. Во время этого процесса формируется массив непересекающихся треугольников. Т. е. очередной выбранный треугольник проверяется - не пересекается ли он с уже найденными треугольниками (которые записаны в массив). Если не пересекается, то он тоже добавляется в массив. Если пересекается хотябы с одним, то в массив он не добавляется. И так по всем треугольникам матрицы. Таким образом когда заканчивается перебор точек матрицы, одновременно заканчивается формирование массива непересекающихся треугольников. Затем, все треугольники из массива рисуются на канве компонента TImage. А в компоненте TMemo распечатываются координаты треугольников. Я посмотрел - вроде верно работает. Хотя конечно прогу ещё надо погонять. ![]()
0
|
||||||
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
||||||
| 23.12.2009, 11:02 | ||||||
|
Там в комментах, если где-то встретятся слова: "равностронние" или "равнобедренные" - стирай их - это от прошлого проекта осталось.
![]() И сообщение надо подправить:
0
|
||||||
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 23.12.2009, 11:07 [ТС] | |
|
"задаётся квадратная сетка точек NxN, где N = 2..10" - это понятно по сетке, а как реализовать прорисовку треугольников не по квадратной сетке, а по конкретными координатами, которые пользователь вводит (x,y) например в StringGrid. А начертить нужно не бесконечное число треугольников, а n треугольников. Причем при вводе n, точек становиться n*3...
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|||||||||||
| 23.12.2009, 12:20 | |||||||||||
|
Можно сделать и по набору точек, координаты которых вводит пользователь. Все введённые пользователем точки (например, координаты точек пользователь вводит в Memo) надо поместить в массив ArrDot. Затем надо организовать перебор комбинаций точек "непересекающимися" тройками.
Т. е. все введённые пользователем точки читаем из Мемо, затем записываем в массив ArrDot и запускаем цикл перебора точек. При этом цикл над переписать немного подругому. Был такой цикл:
0
|
|||||||||||
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 23.12.2009, 14:40 [ТС] | |
|
Чет я переделывать начал...ошибок до кучи...вроде исправил, теперь просто прога висит!!! Если можно то поподробней...А лучше полностью прогу...
Ошибка исходит от теоремы косинусов...вроде...
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
||||||
| 23.12.2009, 17:19 | ||||||
|
Скорректировал проект. Правда, ввод координат исходных точек через StringGrid не сделал. Т. е. массив исходных точек формируется через генератор случайных чисел.
Исходные треугольники рисуются зелёным цветом. Непересекающиеся треугольники - синим цветом.
Если что, вечером таблицу добавлю в проект.
0
|
||||||
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 23.12.2009, 17:54 [ТС] | |
|
отлично...
У меня почти тоже самое получилось когда я задал вопрос в форуме, а проблема вот в чем дальше: нужно теперь так нарисовать треугольники, по этим точкам, чтоб их было n и они не пересекались, но могут иметь общую сторону... Причем например мы ввели число 5, то точек должно быть 5*3..., а треугольников 5... У тебя задача получилась более рациональней, чем у меня...У меня весь программный код на одном событии ButtonClick... Сейчас попробую в твою прогу StrinGrid приделать...
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 23.12.2009, 18:26 [ТС] | |
|
Вбил таблицу... с координатами вот что получилось...
0
|
|
|
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
|
|
| 23.12.2009, 21:12 | |
|
Мы хотим построить N треугольников и выделяем для этого N * 3 точек. При этом треугольники могут иметь общие вершины. Тогда реально для построения N треугольников может потребоваться меньше чем N * 3 точек. Как строить такие треугольники - надо подумать.
![]() Идеи возникают такие: 1. Взять исходное множество точек и найти в нём самую левую точку (с наименьшей координатой по X). Пускай это будет точка А. 2. Отсортировать множество (массив) точек по возрастанию растояний до точки А. 3. Строить треугольники последовательно по отсортированному множеству точек. Возможно здесь не обязательно перебирать точки порциями по три - можно идти и с шагом = 1 - при этом расчитывая именно на варианты треугольников со смежными сторонами. В общем, надо подумать как действовать дальше... Добавлено через 9 минут Наверное, вот где копать нужно: Триангуляция Делоне.
0
|
|
|
0 / 0 / 0
Регистрация: 23.12.2009
Сообщений: 3
|
|
| 24.12.2009, 03:20 | |
|
Привет всем!!! У меня тоже такая задача и я уже сделала сортировку с лева на право и беру по одной точке... Но ничего не получается.... Помогите пожалуйста...
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 24.12.2009, 03:38 [ТС] | |
|
"Определение триангуляции Делоне" - отличная статья и теорема... Жаль, но С++ я не понимаю... Теоретически я понял как она выглядит, но как это реализовать???
![]() Добавлено через 1 минуту Катенька87 А программный код можно посмотреть...
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 24.12.2009, 07:55 [ТС] | |
|
Mawrat слушай вот мой код на эту задачу, он конечно не ахти и не рациональный, но мне просто так более понятнее! У кого не спрашивал про нее ничего внятного сказать не могут ты один кто что-то мне подсказал интересного, а именно упорядочить координаты по Х и строить начиная с меньшего... Я это сделал, но все равно ошибки, рисует не правильно... Посмотри пожалуйста может что еще подскажешь или ты знаешь еще какой-нибудь вариант решения...
0
|
|
|
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
|
|
| 24.12.2009, 12:41 [ТС] | |
|
Я нашел ошибку...Он рисует треугольники...
Знаешь что я понял когда нашел ошибку: УСЛОВИЕ ЗАДАЧИ... ТРЕУГОЛЬНИКИ НЕ ПЕРЕСЕКАЮТСЯ т.е. вводим число n потом умножаем на 3 получаем кол-во точек А ПОСТРОИТЬ то надо N треугольников!!!!!!!!!!!! Я неделю долби эту задачу чтоб построить n*3 треугольников когда надо всего n... Сможешь мне помочь твоя прога почти правильно считает надо только ее подправить, малость... Заранее спасибо!!!!
0
|
|
| 24.12.2009, 12:41 | |
|
Помогаю со студенческими работами здесь
20
Найти и начертить все треугольники, образованные сочетанием любых трех точек из К как сделать чтобы эти 2 окружности пересекались? Как начертить линию в Java по координатам (double, но не int) Подкорректируйте код, чтобы случайно распределенные окружности не пересекались Нарисовать ломаную с вершинами в заданных точках, чтобы её звенья не пересекались Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|