Я делаю трассировку лучей с наложением текстур на сферу, но мой вывод делится на две отдельные части. Верхние части начинают текстурироваться, а затем почему-то останавливаются на полпути. Я думаю, что все делаю правильно ...
Это код для получения координат текстуры
float_2 get_t_coords(vector p, int ppm_h, int ppm_w) {
// p is the intersect for ray/sphere
vector N = get_normal(p).normalize() * -1; // the -ve is to make it not mirrored
auto phi = acos(N.X);
auto theta = atan(N.Z/N.Y);
if(theta < 0)
theta += 2*M_PI;
else {}
auto u = floor((theta/(2*M_PI))*(ppm_h-1));
auto v = floor((phi/M_PI)*(ppm_w-1));
return float_2(u, v); // u, v coordinates
}
Вот мой код, который читает в ppm-файле - проблема может быть здесьно я не уверен
vector** arr[ppm_w]; // definition globally
arr[tex_list] = new vector*[ppm_w];
for(int i = 0; i < ppm_h; i++) {
arr[tex_list][i]= new vector[ppm_w];
for (int j = 0; j < ppm_w; j++) {
ifs >> r >> g >> b;
vector c = vector(r, g, b);
arr[tex_list][i][j] = c;
}
}
Первая часть возвращает отображение u, v, которое извлекается в arr для значения i, j ... любая помощь! спасибо ![See sphere image](https://i.stack.imgur.com/VKGEx.png)