Я ищу образец текстуры вдоль дуги окружности в фрагментном шейдере.Такого рода исключаются рекурсивные методы, такие как this .
Я придумал несколько разных способов сделать это: два, которые кажутся наиболее разумными: (Учитывая начальную позицию p
, центр c
, радиус r = length(c-p)
, угол (степень дуги) theta
в радианах и N
позициях):
1) Поверните вектор pc вокруг c на theta/N
, N
раз: это требует построения матрицы вращения, которая будет многократно использоваться: стоимость- это две функции триггера, умножение матрицы N
2x2, N
или около того векторных вычитаний
2) Найти длину хорды одного сегмента, проходящего через сектор: его длина равна 2*r*sin(theta/2)
.Получив первый вектор, я могу повернуть его и добавить в предыдущую позицию, чтобы «шагнуть» по моей дуге.Проблема этого метода в том, что я до сих пор не знаю выражения для получения ориентации моего вектора длины 2*r*sin(theta/2)
.Даже если бы я это сделал, мне, вероятно, понадобились бы тригонометрические функции для его построения.Мне все еще нужно повернуть его так, что мне может потребоваться построить матрицу вращения.Тьфу.
Могу ли я рассмотреть другие методы?