Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [Решено] Забуксовал на школьной математике

[Решено] Забуксовал на школьной математике

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 5 Следующая »
MrShoorУчастникwww27 окт. 201721:57#0
Картинка для привлечения внимания:
triangle | [Решено] Забуксовал на школьной математике
Есть исходный треугольник (синий слева). Для каждой грани треугольника есть высота h (красная). Это высота над хордой окружности:
Изображение
Нужно исходный треугольник выгнуть до черной фигуры, у которой все грани - дуги окружности. Внутри треугольника не обязательно сохранять это свойство. Справа на верхнем рисунке представлена примерная топология.

На руках есть 2д координаты вершин треугольника, h для каждой грани и барицентрические координаты. Пробую вывести функцию смещения, но у меня выходит какая-то дичь из вычисления центра и полярных координат. Подозреваю что можно как-то проще.

Условие применимости:
Все h лежат в диапазоне [0;~0.29*R). Следствия: 1. Дуги описывают только выпуклую фигуру 2. Центральный угол опирающийся на каждую из дуг меньше или равен 90 градусов

upd. Решение тут: http://www.gamedev.ru/code/forum/?id=230946&page=5#m62

Правка: 31 окт. 2017 3:52

Андрей5000Постоялецwww27 окт. 201722:02#1
Элементарно же. Находим центры и крутя начальную точку строим сеть
MrShoorУчастникwww27 окт. 201722:05#2
Андрей5000
> Элементарно же. Находим центры и крутя начальную точку строим сеть
Нет у меня крутилки. Есть барицентрические координаты в исходном треугольнике, которые получены после тесселяции этого самого треугольника:
tess2 | [Решено] Забуксовал на школьной математике

Правка: 27 окт. 2017 22:07

FordPerfectПостоялецwww27 окт. 201722:44#3
Вроде, например
Изображение

Решение не единственно.

Правка: исправлена формула.

Правка: 27 окт. 2017 22:51

FordPerfectПостоялецwww27 окт. 201722:46#4
Здесь Изображение - это поворот на π/2 против часовой стрелки.
Андрей5000Постоялецwww27 окт. 201722:52#5
MrShoor
> Нет у меня крутилки. Есть барицентрические координаты в исходном треугольнике,
> которые получены после тесселяции этого самого треугольника:
Тогда вся задача это пересечение луча с кругом
MrShoorУчастникwww27 окт. 201723:07#6
FordPerfect
> Вроде, например
А омега это что? Полярный угол вершины? Есть вывод этой штуки?

> Решение не единственно.
Это как?

FordPerfectПостоялецwww27 окт. 201723:13#7
MrShoor
>А омега это что?
Где там омега? π - это пи.

>Есть вывод этой штуки?
Да там вроде достаточно понятно, как оно.

>Это как?
Т. к.
>Внутри треугольника не обязательно сохранять это свойство.
внутри треугольника можно сделать произвольную фигню преобразовующую его сам в себя, и она тоже будет удовлетворять изначальной задаче.
Например [w0, w1 ,w2] -> [w0, w1^2, 1-w0-w1^2].

SDCПостоялецwww27 окт. 201723:15#8
MrShoor
А обязательно окружность? Может хватит синуса или параболы?

FordPerfectПостоялецwww27 окт. 201723:18#9
w - это барицентрические координаты.

Насчёт вывода.
w0*r0+w1*r1+w2*r2 - это тупо изначальный треугольник.
Соответственно 3 добавки - это сдвиг.
f - тупая геометрия в xy координатах.
(w0+w1) - это вес (0 в углу, 1 на прямой r0r1). Равен 1-w2.
(w1-w0) - это расстояние вдоль ребра в [-1,+1].

FordPerfectПостоялецwww27 окт. 201723:19#10
А, стоп я гоню. Там f неправильная. x и y в разном масштабе, и это эллипс, а не окружность.
FordPerfectПостоялецwww27 окт. 201723:32#11
Но её несложно починить.

Изображение

MrShoorУчастникwww27 окт. 201723:43#12
FordPerfect
> w - это барицентрические координаты.
А, вот её я за омегу принял, да.

FordPerfect
> Но её несложно починить.
Ок, ща попробую втупую подставить.

FordPerfectПостоялецwww28 окт. 20170:06#13
Ещё одна фигня: правильно будет 2*L=|r_i-r_j|.
MrShoorУчастникwww28 окт. 20170:33#14
FordPerfect
А R - это что в исправленной версии? Это радиус?

upd. А, кажется понял, там система R^2 - L^2 = d^2 и R - d = h. И R можно найти из d

Правка: 28 окт. 2017 0:38

Страницы: 1 2 3 4 5 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр