IPB
Новое на форумах
Подписка на тему | Сообщить другу | Версия для печати
Reply to this topic Start new topic Start Poll 

Древовидный · [ Стандартный ] · Линейный

> Нужен совет по модели, Ночь в тоскливом октябре

Askold
post  Reply to Флоран
Jul 22 2011, 11:41 AM
Отправлено #21

[информация]
А какие могут быть неоднозначности ?

Делаешь строго выпуклые фигуры - и вперед.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Флоран
Jul 22 2011, 11:42 AM
Отправлено #22

[информация]
А, вот если ограничивать условием выпуклости...
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
post  Reply to Askold
Jul 22 2011, 11:50 AM
Отправлено #23

[информация]
QUOTE(Askold @ Jul 22 2011, 02:05 PM)
1. Найти самую внешнюю и самую внутреннюю ломанную фигуру, т.е. внешний и внутренний "круги силы"
2. Найти их центры тяжестей.
3. Искомый центр системы находится на прямой, соединяющей центры тяжестей внутренней и внешней фигур, его расположение зависит от количества внутренних фигур - "кругов силы" и количества точек во внешней и внутренней.

Звучит круто.
Самая большая выпуклая фигура - ок.
Что такое самая внутренняя выпуклая фигура? Самая маленькая?
Видится проблема - положение точек, не относящихся к внутренней и внешней фигурам, никак не влияет на результат, пока не пересекает границы фигур, я прав?

User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
post  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)
Учитывать возраст точки
Добавить к точкам связи

Круто! Подумаю над этим.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Askold
post  Reply to Jolaf
Jul 22 2011, 11:57 AM
Отправлено #25

[информация]
Блин. Ну что значит самая внутренняя фигура ?

Построй самую внешнюю и выкинь ее точки. Построй на новом наборе самую внешнюю. И так, пока не останется одна, последняя фигура. Вот она и есть самая внутренняя.

Положение точек, не относящихся к этим фигурам ВЛИЯЮТ на результат на этапе построения, так как ОПРЕДЕЛЯЮТ, что же такое есть самая внешняя и самая внутренняя фигуры. Добавление одной точки приводит к потребности перестраивать последовательность таких фигур - не всю, но возможно существенную ее часть.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
Jul 22 2011, 11:59 AM
Отправлено #26

[информация]
QUOTE(Askold @ Jul 22 2011, 02:57 PM)
Построй самую внешнюю и выкинь ее точки. Построй на новом наборе самую внешнюю. И так, пока не останется одна, последняя фигура. Вот она и есть самая внутренняя.

Понял, да. Может сработать. Спасибо, буду думать.


Сообщение отредактировано: Jolaf, Jul 22 2011, 11:59 AM
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Askold
post  Reply to Jolaf
Jul 22 2011, 12:31 PM
Отправлено #27

[информация]
Кстати, приятный бонус такого метода.

Первичные операции (посмотреть, прикинуть, перестроить) делаются дешево, только карандашом и линейкой. А могут - вообще на глаз. На этом этапе определяются внутренний и внешний круги силы. Если добавление новой точки их не изменило - то все вообще круто, кроме понимания того, что есть, есть еще неизвестные точки, которые могут изменить всю картину.

А финальный этап - построения центра тяжестей и поиск окончательного центра - уже делается сложно и кропотливо. И приступают к нему только когда вид внешнего и внутреннего кругов силы хотя бы примерно понятен и устаканился.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
Jul 22 2011, 02:14 PM
Отправлено #28

[информация]
Попробовал. Замечены следующие проблемы:
- Расстояние между центрами внешнего и внутреннего кругов в подавляющем большинстве случаев очень невелико.
- Очень мало смысла прятать что-либо на уже известном коротком отрезке - в условиях полигона он наверняка будет просматриваться.
- После небольшой тренировки, глядя на карту, я могу сходу, без всякого расчёта, попасть в точку будущего центра с весьма приличной точностью.

Мораль: нужно что-то придумать, чтобы итоговый центр не стремился к центру масс системы, и таким образом не был очевиден.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Юра
post  Reply to Jolaf
Jul 22 2011, 02:27 PM
Отправлено #29
[информация]
Ну то, что центр масс более-менее очевиден - слабое место всех моделей, так или иначе завязанных на центр масс.

Возможные решения:
- большой полигон (мое любимое решение многих проблем ролевых игр wink.gif
- разные веса точек, отрицательные массы
- попробовать зайти в суммы векторов, как я писал выше.
- что-то еще

Сообщение отредактировано: elraen, Jul 22 2011, 02:28 PM
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Флоран
Jul 22 2011, 02:30 PM
Отправлено #30

[информация]
Я вот еще предложил Йолафу вариант с хэш-функцией по множеству координат.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Askold
post  Reply to Jolaf
Jul 22 2011, 03:09 PM
Отправлено #31

[информация]
А что потом делают с найденной точкой ? Просто ищут в ней ценности или проводят дорогой ритуал ?

Т.е. насколько дорого "использовать" найденную точку в сравнении с ее расчетом ?
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
Jul 22 2011, 03:41 PM
Отправлено #32

[информация]
QUOTE(Askold @ Jul 22 2011, 06:09 PM)
А что потом делают с найденной точкой?

Проводят в ней Самый Важный Ритуал. Тот, кто оказался самым умным и единственный из всех посчитал правильно - заведомо выиграл игру. Тот, кто посчитал неправильно и оказался такой сукой, что ему никто не сказал правильного ответа - пролетел мимо самого интересного.

QUOTE(Askold @ Jul 22 2011, 06:09 PM)
Т.е. насколько дорого "использовать" найденную точку в сравнении с ее расчетом?

Не понял вопроса.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Юра
Jul 22 2011, 03:46 PM
Отправлено #33
[информация]
Я вероятно тупой, но как ты будешь считать хэш-функцию, если у тебя есть карта, карандаш и линейка? У тебя даже точной системы координат нет (да, карта возможно разбита на квадраты, но есть разница между здоровыми квадратами и точными координатами).
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Jolaf
post Root
Jul 22 2011, 03:56 PM
Отправлено #34

[информация]
Пока самым толковым по результату показал себя следующий метод:

Найти три точки, образующие самый маленький треугольник. Выкинуть их. Повторять. Центром объявить центр последнего треугольника (если остаются одна или две точки - разрулить как-нибудь).

Выглядит нелепо и нелогично, и этим мне не нравится, но зато в половине случаев даёт результат вблизи центра масс, а в половине - черт знает где.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Юра
post  Reply to Jolaf
Jul 22 2011, 07:09 PM
Отправлено #35
[информация]
А как ты вообще собираешься определять самый маленький треугольник? Считать площадь? Периметр?

Площадь вообще не годится - для точек почти на одной прямой, на большом расстоянии друг от друга вполне реально получить треугольник с углом 178 градусов. Его площадь на коленке будет считаться очень неточно, в итоге сравнение с маленьким остроугольным треугольником будет очень неточным.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Алестен
post Root
Jul 22 2011, 08:49 PM
Отправлено #36

[информация]
Выбрать самую любую (северную, центральную, и т.д.) точку, начальное направление (например на тот же север).
Берем начальное положение и от него ищем ближайшую (в смысле поворота) влево точку. Выкидываем первую из рассмотрения. Теперь начальное направление - то которое соединяет выкинутую точку и найденную. Повторяем, пока не найдем последнюю точку. Для получения искомой точки, например повторить последний отрезок второй раз. Или найти тот же центр треугольника из трех последних точек.
Если выбирать за начальную точку - точку с краю, то получится закручивающаяся внутрь спираль, устойчивая к добавлению внешних точек. Так что лучше или выбирать за первую точку что-то в центре, либо например искать точку от направления *последний построенный луч + угол, зависящий от числа точек*. Даже при линейной зависимости от факта добавления одной точки всё сбивается.
Итоговую точку уносит в рандомном направлении за россыпь исходных точек.
Правда, если без модификаций, то на бумаге считается быстро. При хорошем пространственном воображении считается на местности.


--------------------
Я - гвардеец!
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Юра
Jul 23 2011, 05:34 AM
Отправлено #37
[информация]
Хорошая идея.

Навскиду сложности:
- с начальной точкой в центре все тоже будет достаточно устойчиво к добавлению новых точек. В части случаев новая точка вообще ни на что не будет влиять. По условиям это очень плохо.
- Идея "последний построенный луч + угол" плоха тем, что скалдывать углы на бумаге на коленке еще хуже, чем вышепреведенные заморочки с центром тяжести.
- Действительно быстро считается.

Может быть нужно переходить не в новую точку, а в удвоенное растояние от предыдущей? Это с одной стороны существенно проще, чем складывание углов, а с другой более чувствительно к добавлению новых точек. Плюс вместо закрчивающейся/раскручивающейся спирали будет бросать вокруг основного скопления точек. Плюс финальная точка попадет не на существующую точку, а в поле. Йолаф этого не написал, но вообще это важное условие, "центр" системы не должен совпадать с существующеми точками.
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Алестен
Jul 23 2011, 07:04 AM
Отправлено #38

[информация]
QUOTE(elraen @ Jul 23 2011, 08:34 AM)
Навскиду сложности:
- с начальной точкой в центре все тоже будет достаточно устойчиво к добавлению новых точек. В части случаев новая точка вообще ни на что не будет влиять. По условиям это очень плохо.
- Идея "последний построенный луч + угол" плоха тем, что скалдывать углы на бумаге на коленке еще хуже, чем вышепреведенные заморочки с центром тяжести.
- Действительно быстро считается.
*


Добавлямый угол можно при желании сделать каким-нибудь удобным. П/(2^n) - строится не слишком сложно. Впрочем, как и деление отрезка на n частей. Если игрок применяет альтернативные пути вроде "построить угол и откромсать шаблон от ненужного угла карты", то и совсен просто.
Да, быстро - это правда.

QUOTE(elraen @ Jul 23 2011, 08:34 AM)
Может быть нужно переходить не в новую точку, а в удвоенное растояние от предыдущей? Это с одной стороны существенно проще, чем складывание углов, а с другой более чувствительно к добавлению новых точек. Плюс вместо закрчивающейся/раскручивающейся спирали будет бросать вокруг основного скопления точек. Плюс финальная точка попадет не на существующую точку, а в поле. Йолаф этого не написал, но вообще это важное условие, "центр" системы не должен совпадать с существующеми точками.
*


Да, конечно же, должно попадать в поле. Я потому и предлагала для итоговой точки повторять последний отрезок.
Но твоя версия лучше - алгоритм однообразнее, что хорошо.


--------------------
Я - гвардеец!
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Kisa
post Root
Jul 23 2011, 10:31 AM
Отправлено #39

[информация]
Ребят, я наверное тормоз - но отрезок или угол на три равных части разбить не сумею, хоть убей.
Йолаф, можешь раскрыть что-то о точках поподробнее? Есть ли у них какие-то добавочные определимые свойства, как их находят и т.п.? Сможешь ли ты ставить их на карту как захочешь, или придется к чему-то несместимому привязываться?
Пока сырая мысль: взять самый длинный и самый короткий отрезки на карте, сложить. Вычесть сумму всех отрезков, идущих параллельно меридиану с погрешностью не более n градусов, получить базовую меру длины. Посчитать количество отрезков запад-восток, получить число m. Посчитать все точки на карте, получить число k. От пересечения самых длинных отрезков "С-Ю" и "З-В" отложить m базовых длин по азимуту {45 градусов умножить на k}. Выполнять ритуал в этом месте.
ТАкое возможно только если ты точки ставишь более-менее произвольно.
Наверняка в этой мысли есть еще какая-нить засада, но пока я ее не вижу.


--------------------
Рашид бен Усама аль Халифа

user posted image
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post
Алестен
post  Reply to Kisa
Jul 23 2011, 10:47 AM
Отправлено #40

[информация]
QUOTE(Kisa @ Jul 23 2011, 01:31 PM)
Ребят, я наверное тормоз - но отрезок или угол на три равных части разбить не сумею, хоть убей.
*


Отрезок на три части делится при помощи теоремы Фалеса. А про угол пару веков назад доказали, что это невозможно : )

Сообщение отредактировано: Алестен, Jul 23 2011, 10:47 AM


--------------------
Я - гвардеец!
User is offline
Profile Card PM
   Go to the top of the page
+Quote Post

Fast Reply Reply to this topic Topic Options Start new topic 
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

 

Упрощённая версия Сейчас: 28th March 2024 - 04:15 PM