Нужен совет по модели, Ночь в тоскливом октябре
    |
Нужен совет по модели, Ночь в тоскливом октябре
Askold |
Reply to Флоран
Jul 22 2011, 11:41 AM
Отправлено
#21
|
[информация] |
А какие могут быть неоднозначности ?
Делаешь строго выпуклые фигуры - и вперед. |
Флоран |
Отправлено
#22
|
[информация] |
А, вот если ограничивать условием выпуклости...
|
Jolaf |
Reply to Askold
Jul 22 2011, 11:50 AM
Отправлено
#23
|
[информация] |
QUOTE(Askold @ Jul 22 2011, 02:05 PM) 1. Найти самую внешнюю и самую внутреннюю ломанную фигуру, т.е. внешний и внутренний "круги силы" 2. Найти их центры тяжестей. 3. Искомый центр системы находится на прямой, соединяющей центры тяжестей внутренней и внешней фигур, его расположение зависит от количества внутренних фигур - "кругов силы" и количества точек во внешней и внутренней. Звучит круто. Самая большая выпуклая фигура - ок. Что такое самая внутренняя выпуклая фигура? Самая маленькая? Видится проблема - положение точек, не относящихся к внутренней и внешней фигурам, никак не влияет на результат, пока не пересекает границы фигур, я прав? |
Jolaf |
Reply to elraen
Jul 22 2011, 11:54 AM
Отправлено
#24
|
[информация] |
QUOTE(elraen @ Jul 22 2011, 02:18 PM) С учетом того, что такое занудство - разовое, это не так уж и плохо. Оно не разовое, в том-то и дело. По мере появления в раскладе новых точек или исчезновения старых придётся пересчитывать. QUOTE(elraen @ Jul 22 2011, 02:18 PM) Тебе это для "Ночи в тоскливом октябре" или ты это просто в качестве примера привел? Ну, вообще конечно для. QUOTE(elraen @ Jul 22 2011, 02:18 PM) Учитывать возраст точки Добавить к точкам связи Круто! Подумаю над этим. |
Askold |
Отправлено
#25
|
[информация] |
Блин. Ну что значит самая внутренняя фигура ?
Построй самую внешнюю и выкинь ее точки. Построй на новом наборе самую внешнюю. И так, пока не останется одна, последняя фигура. Вот она и есть самая внутренняя. Положение точек, не относящихся к этим фигурам ВЛИЯЮТ на результат на этапе построения, так как ОПРЕДЕЛЯЮТ, что же такое есть самая внешняя и самая внутренняя фигуры. Добавление одной точки приводит к потребности перестраивать последовательность таких фигур - не всю, но возможно существенную ее часть. |
Jolaf |
Отправлено
#26
|
[информация] |
QUOTE(Askold @ Jul 22 2011, 02:57 PM) Построй самую внешнюю и выкинь ее точки. Построй на новом наборе самую внешнюю. И так, пока не останется одна, последняя фигура. Вот она и есть самая внутренняя. Понял, да. Может сработать. Спасибо, буду думать. Сообщение отредактировано: Jolaf, Jul 22 2011, 11:59 AM |
Askold |
Отправлено
#27
|
[информация] |
Кстати, приятный бонус такого метода.
Первичные операции (посмотреть, прикинуть, перестроить) делаются дешево, только карандашом и линейкой. А могут - вообще на глаз. На этом этапе определяются внутренний и внешний круги силы. Если добавление новой точки их не изменило - то все вообще круто, кроме понимания того, что есть, есть еще неизвестные точки, которые могут изменить всю картину. А финальный этап - построения центра тяжестей и поиск окончательного центра - уже делается сложно и кропотливо. И приступают к нему только когда вид внешнего и внутреннего кругов силы хотя бы примерно понятен и устаканился. |
Jolaf |
Отправлено
#28
|
[информация] |
Попробовал. Замечены следующие проблемы:
- Расстояние между центрами внешнего и внутреннего кругов в подавляющем большинстве случаев очень невелико. - Очень мало смысла прятать что-либо на уже известном коротком отрезке - в условиях полигона он наверняка будет просматриваться. - После небольшой тренировки, глядя на карту, я могу сходу, без всякого расчёта, попасть в точку будущего центра с весьма приличной точностью. Мораль: нужно что-то придумать, чтобы итоговый центр не стремился к центру масс системы, и таким образом не был очевиден. |
Юра |
Отправлено
#29
|
[информация] |
Ну то, что центр масс более-менее очевиден - слабое место всех моделей, так или иначе завязанных на центр масс.
Возможные решения: - большой полигон (мое любимое решение многих проблем ролевых игр - разные веса точек, отрицательные массы - попробовать зайти в суммы векторов, как я писал выше. - что-то еще Сообщение отредактировано: elraen, Jul 22 2011, 02:28 PM |
Флоран |
Отправлено
#30
|
[информация] |
Я вот еще предложил Йолафу вариант с хэш-функцией по множеству координат.
|
Askold |
Reply to Jolaf
Jul 22 2011, 03:09 PM
Отправлено
#31
|
[информация] |
А что потом делают с найденной точкой ? Просто ищут в ней ценности или проводят дорогой ритуал ?
Т.е. насколько дорого "использовать" найденную точку в сравнении с ее расчетом ? |
Jolaf |
Отправлено
#32
|
[информация] |
QUOTE(Askold @ Jul 22 2011, 06:09 PM) А что потом делают с найденной точкой? Проводят в ней Самый Важный Ритуал. Тот, кто оказался самым умным и единственный из всех посчитал правильно - заведомо выиграл игру. Тот, кто посчитал неправильно и оказался такой сукой, что ему никто не сказал правильного ответа - пролетел мимо самого интересного. QUOTE(Askold @ Jul 22 2011, 06:09 PM) Т.е. насколько дорого "использовать" найденную точку в сравнении с ее расчетом? Не понял вопроса. |
Юра |
Отправлено
#33
|
[информация] |
Я вероятно тупой, но как ты будешь считать хэш-функцию, если у тебя есть карта, карандаш и линейка? У тебя даже точной системы координат нет (да, карта возможно разбита на квадраты, но есть разница между здоровыми квадратами и точными координатами).
|
Jolaf |
Root
Jul 22 2011, 03:56 PM
Отправлено
#34
|
[информация] |
Пока самым толковым по результату показал себя следующий метод:
Найти три точки, образующие самый маленький треугольник. Выкинуть их. Повторять. Центром объявить центр последнего треугольника (если остаются одна или две точки - разрулить как-нибудь). Выглядит нелепо и нелогично, и этим мне не нравится, но зато в половине случаев даёт результат вблизи центра масс, а в половине - черт знает где. |
Юра |
Отправлено
#35
|
[информация] |
А как ты вообще собираешься определять самый маленький треугольник? Считать площадь? Периметр?
Площадь вообще не годится - для точек почти на одной прямой, на большом расстоянии друг от друга вполне реально получить треугольник с углом 178 градусов. Его площадь на коленке будет считаться очень неточно, в итоге сравнение с маленьким остроугольным треугольником будет очень неточным. |
Алестен |
Root
Jul 22 2011, 08:49 PM
Отправлено
#36
|
[информация] |
Выбрать самую любую (северную, центральную, и т.д.) точку, начальное направление (например на тот же север).
Берем начальное положение и от него ищем ближайшую (в смысле поворота) влево точку. Выкидываем первую из рассмотрения. Теперь начальное направление - то которое соединяет выкинутую точку и найденную. Повторяем, пока не найдем последнюю точку. Для получения искомой точки, например повторить последний отрезок второй раз. Или найти тот же центр треугольника из трех последних точек. Если выбирать за начальную точку - точку с краю, то получится закручивающаяся внутрь спираль, устойчивая к добавлению внешних точек. Так что лучше или выбирать за первую точку что-то в центре, либо например искать точку от направления *последний построенный луч + угол, зависящий от числа точек*. Даже при линейной зависимости от факта добавления одной точки всё сбивается. Итоговую точку уносит в рандомном направлении за россыпь исходных точек. Правда, если без модификаций, то на бумаге считается быстро. При хорошем пространственном воображении считается на местности. -------------------- Я - гвардеец!
|
Юра |
Отправлено
#37
|
[информация] |
Хорошая идея.
Навскиду сложности: - с начальной точкой в центре все тоже будет достаточно устойчиво к добавлению новых точек. В части случаев новая точка вообще ни на что не будет влиять. По условиям это очень плохо. - Идея "последний построенный луч + угол" плоха тем, что скалдывать углы на бумаге на коленке еще хуже, чем вышепреведенные заморочки с центром тяжести. - Действительно быстро считается. Может быть нужно переходить не в новую точку, а в удвоенное растояние от предыдущей? Это с одной стороны существенно проще, чем складывание углов, а с другой более чувствительно к добавлению новых точек. Плюс вместо закрчивающейся/раскручивающейся спирали будет бросать вокруг основного скопления точек. Плюс финальная точка попадет не на существующую точку, а в поле. Йолаф этого не написал, но вообще это важное условие, "центр" системы не должен совпадать с существующеми точками. |
Алестен |
Отправлено
#38
|
[информация] |
QUOTE(elraen @ Jul 23 2011, 08:34 AM) Навскиду сложности: - с начальной точкой в центре все тоже будет достаточно устойчиво к добавлению новых точек. В части случаев новая точка вообще ни на что не будет влиять. По условиям это очень плохо. - Идея "последний построенный луч + угол" плоха тем, что скалдывать углы на бумаге на коленке еще хуже, чем вышепреведенные заморочки с центром тяжести. - Действительно быстро считается. Добавлямый угол можно при желании сделать каким-нибудь удобным. П/(2^n) - строится не слишком сложно. Впрочем, как и деление отрезка на n частей. Если игрок применяет альтернативные пути вроде "построить угол и откромсать шаблон от ненужного угла карты", то и совсен просто. Да, быстро - это правда. QUOTE(elraen @ Jul 23 2011, 08:34 AM) Может быть нужно переходить не в новую точку, а в удвоенное растояние от предыдущей? Это с одной стороны существенно проще, чем складывание углов, а с другой более чувствительно к добавлению новых точек. Плюс вместо закрчивающейся/раскручивающейся спирали будет бросать вокруг основного скопления точек. Плюс финальная точка попадет не на существующую точку, а в поле. Йолаф этого не написал, но вообще это важное условие, "центр" системы не должен совпадать с существующеми точками. Да, конечно же, должно попадать в поле. Я потому и предлагала для итоговой точки повторять последний отрезок. Но твоя версия лучше - алгоритм однообразнее, что хорошо. -------------------- Я - гвардеец!
|
Kisa |
Root
Jul 23 2011, 10:31 AM
Отправлено
#39
|
[информация] |
Ребят, я наверное тормоз - но отрезок или угол на три равных части разбить не сумею, хоть убей.
Йолаф, можешь раскрыть что-то о точках поподробнее? Есть ли у них какие-то добавочные определимые свойства, как их находят и т.п.? Сможешь ли ты ставить их на карту как захочешь, или придется к чему-то несместимому привязываться? Пока сырая мысль: взять самый длинный и самый короткий отрезки на карте, сложить. Вычесть сумму всех отрезков, идущих параллельно меридиану с погрешностью не более n градусов, получить базовую меру длины. Посчитать количество отрезков запад-восток, получить число m. Посчитать все точки на карте, получить число k. От пересечения самых длинных отрезков "С-Ю" и "З-В" отложить m базовых длин по азимуту {45 градусов умножить на k}. Выполнять ритуал в этом месте. ТАкое возможно только если ты точки ставишь более-менее произвольно. Наверняка в этой мысли есть еще какая-нить засада, но пока я ее не вижу. -------------------- |
Алестен |
Отправлено
#40
|
[информация] |
QUOTE(Kisa @ Jul 23 2011, 01:31 PM) Отрезок на три части делится при помощи теоремы Фалеса. А про угол пару веков назад доказали, что это невозможно : ) Сообщение отредактировано: Алестен, Jul 23 2011, 10:47 AM -------------------- Я - гвардеец!
|
     |
Упрощённая версия | Сейчас: 26th April 2024 - 07:22 PM |