Форум: "Игры";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
ВнизРазбиение на равные части Найти похожие ветки
← →
D-Man (2005-04-20 01:48) [0]Такая задача:
Есть прямоугольник (или треугольник, если так проще), надо разбить его на заданое количество треугольников одинаковой площади.
Кто-нибудь знает как? Или где?
← →
D-Man (2005-04-20 02:11) [1]Забыл, нужно чтобы треугольники могли получиться и в середине, т.е. просто поделить прямоугольник симетрично отрезками, проходящими через центр не пойдет. В идеале если еще добавить некоторый рандом, то каждый раз делиться должно в разных местах
← →
XProger © (2005-04-20 02:36) [2]"надо разбить его на заданое количество треугольников одинаковой площади."
Это не всегда возможно...
← →
D-Man (2005-04-20 08:03) [3]Хотя бы примерный принцип?
← →
boalse © (2005-04-20 08:38) [4]Ну, понятно, что плошадь каждого треугольника будет находиться как общая плошадь/количество. Выбираем две любые стороны большого треугольника, на них будут лежать две стороны первого маленького, причём так, что одна из выбранных сторон большого=одной из сторон маленькой. Таким образом нам во первых известна площадь первого искомого треугольника, во вторых одна из его сторон, в третьих можно найти угол между двумя выбранными нами сторонами, по сути один из углов искомого треугольника. По этим трём параметрам мы вполне можем найти третью сторону, только я фомулу не знаю, не задумывался. Теперь нам известен первый треугольник. Дальше всё похоже. Выбираем найденную нами сторону первого треугольника и ту сторону большого треугольника, которую мы не выбрали прошлый раз. Опять нам известна площадь, одна сторона и один из углов между сторонами искомого треугольника. Находим третью сторону. Далее опять тоже самое. Берём только что найденную сторону и сторону большого, только ту которую мы брали первый раз (в дальнейшем берём по очереди то одну то другую сторону). В конце концов таким образом можно разбить ЛЮБОЙ треугольник.
← →
boalse © (2005-04-20 08:56) [5]А разбить прямоугольник на одинаковые треугольники таким методом ещё проще.
Если количество треугольников чётное:
Сначала выбираем одну из сторон и строим от неё N штук перпендикуляров через равное расстояние, по сути делим прямоугольник на N+1 маленьких одинаковых прямоугольников, где N=(КоличествоТреугольников/2)-1. Теперь просто проводим диагонали в построенных прямоугольниках.
Если количество треугольников нечётное:
Разбиваем на два треугольника и делаем в каждом из них по схеме boalse © (20.04.05 08:38) [4]
← →
D-Man (2005-04-20 11:37) [6]Это все симметрично, даже рандома не добавишь. Я пытаюсь сделать так чтобы могли получаться треугольники любой формы и в любом месте, но площадь сохранялась, т.е чтобы порядка там никакого небыло (казалось что нет).
Допустим я могу нарисовать треугольник случайной формы, но заданной площади, проблема теперь в том, что когда я начинаю заполнять ими прямоугольник, приставляя один к другому по общим сторонам, я могу зайти в тупик или могу создать области с меньшей площадью или например при вставке последнего треугольника может оказаться, что область для него не треугольная, как этого избежать незнаю.
Кстати, если кто играл в Космических Рейнджеров, то видел там карту космоса, она как раз строится случайно. Прямоугольник делится на заданное кол-во полигонов, что помоему можно получить из деления на треугольники. Площадь у них там правда вариируется в заданных пределах. Сделали же как-то люди? Спросить бы у них... но они же не скажут :(
← →
boalse © (2005-04-20 12:06) [7]Может тогда взять прямоугольник, разрезать его на ЛЮБОЕ количетво треугольников, сколько получиться, главное с одинаковой площадью. Затем каждый из получившихся треугольников разбить на N частей по указанной выше схеме схеме. N=(ТребуемоеКоличество/КоличествоПолучившихся), если будет остаток, то тогда один какой-нибудь треугольник разбить не на N, а на N+1 частей.
← →
D-Man (2005-04-20 14:31) [8]Но опять же форма у них помоему будет одинаковая
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c