Войти
ПрограммированиеФорум2D графика и изометрия

Как Обобщить алгоритм IntersectRayToAABBox для N-мерного случая ( 3D-Графика ) (2 стр)

Страницы: 1 2
#15
21:55, 18 июля 2018

werasaimon
> P.S: видь код это искуствво , хороший код как хорошая картина (Восхищает) , и
> заставляет задуматься . Не так ли ?
↓ искусство ↓

+ скажи ещё, что комикс это не искусство

↑ искусство ↑

#16
23:17, 18 июля 2018

Delfigamer
Не понял к чему тут комиксы , вообще ? Но комиксы это круто !
. А на счет кода я с тобою не согласен , и думаю что код это все-таки искусство в каком-то смысле. Видь хорошые програмисты пишут код не и за денег же , видь правда или .....?

#17
23:31, 18 июля 2018

werasaimon
Конечно не из-за денег! Они пишут код на тетрадных листах для удовольствия сидя в своих картонных коробках у стен зданий.

#18
0:07, 19 июля 2018

Vlad2001_MFS
> Конечно не из-за денег! Они пишут код на тетрадных листах для удовольствия сидя
> в своих картонных коробках у стен зданий.

Я говорил о хороших программистах, а не о всех подряд! И это чисто моё ИМХО !

#19
1:10, 19 июля 2018

Я считаю, что программист - это подвид инженера; а инженерные решения оцениваются в первую очередь по практическим критериям - затраты на разработку, на эксплуатацию, на доработку, на замену, на утилизацию и прочими.
Плохо оформленный код плох тем, что он требует больших затрат на доработку.
Ради субъективной красоты писать можно, но это скорее исключение, чем норма.

#20
1:36, 19 июля 2018

Я когда то написал вот такой семпл:
https://www.shadertoy.com/view/4tXfRr
Это рейкаст в выпуклое тело, заданное уравнениями плоскостей. Для рейкаста нужны только уравнения плоскостей и скалярное произведение векторов.
Соответственно ты можешь расширить это N мерного случая, введя N мерную гиперплоскость и dot product.

#21
3:22, 19 июля 2018

werasaimon
> А код должен обязан быть красивым как с точки зрения стиля кода , так и из
> точки алгоритма  . Так и с художественной точки зрения .
табы с пробелами расставлять научись, лол.

#22
20:06, 19 июля 2018

Suslik
> табы с пробелами расставлять научись, лол.
Это такой мой стиль кода , и эсли так подумать то это самый лучший стиль кода в мире, шучу не в мире,  а во всей вселенной.
Это же очевидно .лол !



MrShoor
> Я когда то написал вот такой семпл:
> https://www.shadertoy.com/view/4tXfRr
> Это рейкаст в выпуклое тело, заданное уравнениями плоскостей. Для рейкаста
> нужны только уравнения плоскостей и скалярное произведение векторов.
> Соответственно ты можешь расширить это N мерного случая, введя N мерную
> гиперплоскость и dot product.
Чего-то я не совсем понимаю ,как мне с этого сделать GJK-EPA/GJK-SAP  (N)....?

------ Вопрос.?------
При попытки обобщить GJK-SAP/GJK-EPA на n-мерное пространство, так или иначе придётся использовать оператор CrossProduct() , лично я этот оператор обобщаю n-мерное пространство просто используя кососимметричную матрицу соответствующего ранга , ну то бишь в 2D(2×2) , 3D(3×3), 4D (4×4) skew_symmetric_matrix(a.b.c.....)! 
Ну дело в том  чем больше у пространства степеней свободы  , тем с большего количества векторов надо брать CrossProduct , например в 4D это три вектора CrossProduct(a,b,c) , это потому что в 4D  может быть 4-ортогональных доуг другу вектора , а в 5D пять .и.т.д !
  А поскольку все эти вектора это направления которые так или иначе строят конченый n-simplex . А значит N-Simplex тоже должен быть обобщён на n-мерное пространство .
Но дело в том , что чем больше у пространства степеней свободы
тем больше точек у симплекса , а именно (N - 1) !
И вот может кто подскажет как о адекватно обобщить симплекс который состоит из n-точек в n-мерном пространстве на n-мерное поле ?
-----------------------------------------
А также мне нужно найти детерминат матрицы N×N .
Кароче как взять детирминат с произвольной  матрицы N×N .
Думал испоьзовать методом Гаусса, но он чето не работатет , может есть у кого хорошый код , для етого ?

#23
4:30, 21 июля 2018


И чтоб не писать новый пост  , напишу вопрос тут .
Вопрос опять о стиле кода , короче как лучше назвать функцию которая возвращает единичный вектор  так getNoramalized или так getUnit ?
P>S: уже второй год думаю над этим ?

в 0.посте, в коде оператор [] означает взятие компоненты вектора , то бишь min[0] , min[1] , min[3] это тоже самое что и min.x , min.y , min.z !

#24
6:33, 21 июля 2018

werasaimon
> Чего-то я не совсем понимаю ,как мне с этого сделать GJK-EPA/GJK-SAP (N)....?
Не знаю что такое GJK-EPA, но в нульпосте тебя интересует пересечение AABB с лучом.
N мерный AABB можно описать с помощью 2*N гиперплоскостей:

{ 1, 0, 0, ... , 0, C1}
{-1, 0, 0, ... , 0, C1}
{ 0,  1, 0, ... , 0, C2}
{ 0, -1, 0, ... , 0, C2}
....
{ 0, 0, 0, ... ,  1, CN}
{ 0, 0, 0, ... , -1, CN}
В моем коде для трехмерного случая гиперплоскости описаны массивом:
planes[ 0 ] = vec4( 0.54464017315 , -0.81413923881 , -0.201356354805 , -0.943523476532 );
planes[ 1 ] = vec4( 0.940030081246 , -0.339036050957 , 0.0373898716834 , -0.943522897356 );
planes[ 2 ] = vec4( 0.210969315095 , -0.899183404549 , -0.383355126575 , -0.943522843872 );
planes[ 3 ] = vec4( 0.191103708694 , -0.681940395046 , -0.706000474595 , -0.943522854432 );
planes[ 4 ] = vec4( 0.51249698306 , -0.46263317111 , -0.723406795201 , -0.943523515601 );
planes[ 5 ] = vec4( 0.9672732032 , -0.0159771640312 , 0.253233648238 , -0.943522045293 );
и так далее.
И для поиска точки пересечения достаточно только скалярного произведения векторов (dot product).
Так что я не знаю зачем тебе там понадобился cross product.

p.s. Впринципе выходит то, что описывал тебе суслик в посте #1

#25
15:27, 21 июля 2018

Кароче знайте для чего такой стиль кода как в 0.посте MrShoor
> p.s. Впринципе выходит то, что описывал тебе суслик в посте #1
Так это тоже самое что и я написал в 0.посте во втором варянте кода , только мой код более прозрачный.! И в принципе это роботает !

MrShoor
, но в нульпосте тебя интересует пересечение AABB с
> лучом.
> N мерный AABB можно описать с помощью 2*N гиперплоскостей:
Так оно практический так и есть в 0.посте .!

MrShoor
> Не знаю что такое GJK-EPA
Это алгоритм для нахождения колиззии между парой выпуклых обектов.  GJK- ищет с наружы минимальное ростояния между двумя выпуклими шейпами , а EPA-ищет минимальное проникновения одного шейпа в другой, ну и нормаль колизии соотвествено , и вместе ети алгоритмы дают Continus-Collision-Detection.  Это короче аналог  CCD. SAT( Saparation-Axis-Theorem) .
Только GJK-EPA работает быстрей, так ему не нужно проверять все оси как делает SAT . И GJK-EPA роботает с одним шейпом который являеться сумой разницы минковского двух шейпов которые мы проверяем на колизии , а по скольку сума разницы минковского не зависить от количества степеней свободы пространства , то потому этот алгоритм должен обобщаться на n-мерное пространство
P.S: А CrossProduct- это почти самый важный оператор для GJK-EPA !

#26
18:17, 21 июля 2018

werasaimon
> Это алгоритм для нахождения колиззии между парой выпуклых обектов.
В нульпосте ты просишь коллизию луча с AABB, а это другое.

#27
22:12, 21 июля 2018

MrShoor
Но а в посте.#4 , я спрашываю как обобщать GJK-EPA ,  и видимо пока я это не сделаю .то ни кто даже не возьмется за это ! Хотя давно очевидно что этот алгоритм так и просит , ну обобщи меня , ну пожалуйста !

#28
2:28, 22 июля 2018

werasaimon
Я когда в последний раз смотрел, он уже изначально был сформулировал в векторном виде.

#29
20:36, 22 июля 2018

Delfigamer
> Я когда в последний раз смотрел, он уже изначально был сформулировал в
> векторном виде.
Кто он.. ?  GJK-EPA?

Страницы: 1 2
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.