Suslik
То есть там имелось ввиду что Sc - это такая фигура, что: Sc*v=max( Sa*v, Sb*v) для любого v (тогда ясно почему это выпуклая оболочка). А как ее получить по двум саппорт мэппингам?
И правда ли что каждый раз саппорт мэппинг надо hill climbing'ом вычислять?
id-mikle
Задать геометрию саппорт мэппингом - это значит сопоставить ей функцию S, которая для каждого направления, бла-бла-бла, написано уже в первом абзаце.
>А как ее получить по двум саппорт мэппингам?
дык ты же сам ниписал : Sc(v)=max( Sa(v), Sb(v)). S - это функция, аргументом которой является вектор. Задав саппорт мэппинг геометрии, ты автоматически задаёшь саму геометрию, что не ясно?
>И правда ли что каждый раз саппорт мэппинг надо hill climbing'ом вычислять?
Саппорт мэппинг полигональной модели - да, один из способов - вычислять его hill climbing'ом. Только саппорт мэппинг изобретён совсем не только для того, чтобы полигональные модели описывать.
Suslik
>Скажу только по поводу мэппинга с рисунком - это не сумма минковского, а выпуклая оболочка. Для неё мэппинг выглядит именно так - посмотри формулу.
Да, просто функция max видимо покомпонентная, а я почему-то подумал что оно выбирает вектор с макс длиной из параметров.
>в смысле? всё так плохо?
не, не в этом смысле. Скорее как-то необычно. Всмысле написано все вроде понятно, по шагам. Но только непонятно почему именно так, почему это дает нужные точки для общего случая, почему вообще работает.
gexogen
>Да, просто функция max видимо покомпонентная, а я почему-то подумал что оно выбирает вектор с макс длиной из параметров.
Блин, тут я накосил. Переписал.
>Но только непонятно почему именно так, почему это дает нужные точки для общего случая, почему вообще работает.
Ну я расчитывал на то, что читающий помозгует, прикинет пару случаев, которые считает каверзными, и сам поймёт..
Suslik
А если например даны два круга радиуса 1 у одного центр в (-100;0), а у другого в (100;0)
Тогда если брать максимумы, то у полученной фигуры максимальное расстояние между любой парой точек по оси X будет не больше 2. Что не очень похоже на выпуклую оболочку)
id-mikle
>Suslik
>А если например даны два круга радиуса 1 у одного центр в (-100;0), а у другого
>в (100;0)
>Тогда если брать максимумы, то у полученной фигуры максимальное расстояние
>между любой парой точек по оси X будет не больше 2. Что не очень похоже на
>выпуклую оболочку)
да ну.
SMap1(v) = (v + Vector2( 100.0f, 0)).GetNorm();
SMap2(v) = (v + Vector2(-100.0f, 0)).GetNorm();
ещё как похоже.
Suslik
Тыже писал что Smap(v) - это p in A, а про нормирование ничего не говорил.
id-mikle
SMap1(v) = (v + Vector2( 100.0f, 0)).GetNorm();
- это функция саппорт-мэппинга для сферы радиуса 1, с координатами центра (-100, 100). что тебя не устраивает?
Suslik
>SMapc(v) = (SMapa(v) * v > SMapb(v) * v) ? SMapa(v) : SMapb(v);
Это наоборот получается тогда, что рисунок неправильный. Я так сначала и подумал. То есть выбираем точку или с квадрата или с эллипса. А те точки плавного перехода ни квадрату, ни эллипсу не принадлежат. Если так и должно быть, то надо исправить рисунок. А может вначале правильно было?
gexogen, нет. сейчас формула и рисунок правильный. Понять это можно так:
Возьмём некоторое направление v, и буем его медленно вращать, описывая получившийся SMap. В моменте, где условие SMapa(v) * v > SMapb(v) * v меняет значение, и происходит "скачёк" с прямоугольника на эллипс, визуально видимый как этот отрезок, их соединяющий.
Suslik
А можешь дать какие нибудь ссылки где много всего про саппорт мэаппинги написано
id-mikle
>>что тебя не устраивает?
Просто из того определения которое ты написал получается что саппорт мэппинг для той сферы будет равен v + Vector2( 100.0f, 0), без нормализации
Suslik
>происходит "скачёк"
должен быть именно резкий переход, а не плавный. Вот смотри:
формула 1:
SMapc(v) = max(SMapa(v), SMapb(v)) (max покомпонентный)
то есть каждая из компонент X,Y,Z выбирается независимо (и видимо по модулю?), и такой рисунок правильный:
так и было вначале, а я ошибся. Точки перехода получаются когда Y компонента выбирается из эллипса, а X из квадрата.
формула 2:
SMapc(v) = (SMapa(v) * v > SMapb(v) * v) ? SMapa(v) : SMapb(v)
рисунок должен быть такой:
Это выбор, то есть выбирается точка из квадрата ИЛИ эллипса. Тут не может быть точек, которые изначально ни квадрату, ни эллипсу не принадлежали.
gexogen
Саппорт мэппинг это не последняя точка по направлению v из начала координат, а судя по твоей последней картинке ты именно так и считаешь)
Тема в архиве.