Точки, полученные в результате пересечения трех сфер с использованием аппаратного обеспечения графического процессора - PullRequest
1 голос
/ 15 июня 2011

Существуют аналитические выражения, которые позволяют рассчитать кривую, возникающую в результате перекрытия трех проникающих сфер. Существуют также приблизительные методы, которые, используя сетки или другие методологии, вычисляют точки с большей или меньшей точностью, которые принадлежат этому пересечению. Интересно, если для последнего, вычисление может быть выполнено как-то с использованием специальных аппаратных функций из графического процессора, с CUDA или OpenGL. Он мне нужен для очень сложной вычислительной программы, так что тривиальные реализации недопустимы, так как они очень медленные, и поэтому я рассматриваю вариант GPU

1 Ответ

1 голос
/ 15 июня 2011

Чтобы проверить, находится ли точка (x, y, z) в сфере, центрированной по (a, b, c) с радиусом r, выполняется тест:

(x - a)^2 + (y - b)^2 + (z - c)^2 < r^2

Проверка, находится ли точка в нескольких сферах, - это просто and похожих выражений.Это требует только вычитания, умножения и сравнения, никаких специальных аппаратных функций не требуется.Вы можете написать ядро ​​CUDA, которое делает это без проблем.

Ближайшее «специализированное оборудование», которое может быть применимо, это функция rsqrtf() в CUDA, которая вычисляет 1 / sqrt (x) с одинарной точностью дляхорошая точность с одной инструкцией по аппаратному обеспечению.Вы можете использовать это, чтобы помочь вычислить значения z для заданных значений x и y сфер, это может быть полезно для более сложных алгоритмов генерации точек для этой задачи.

...