我正在尝试使用带有cimg的.bmp图像来纹理球体,但是它没有正确纹理化。 继承人的纹理图像 texture
这是结果。 result
这是我在交叉点计算颜色的代码。
virtual RGBColor getTexture(Point3D pos){
//normal of intersection point and sphere
Vector3D N = this->getNormal(pos);
N.normalize();
double u = 0.5 + atan2(N.getY(), N.getX()) / (2 * 3.141592653589793);
double v = 0.5 - asin(N.getY()) / 3.141592653589793;
CImg<int> image("pattern.bmp");
float width = u * 150;//105 is image width
float height = v * 105;
float r;
float g;
float b;
r = image(width, height, 0, 0);
g = image(width, height, 0, 1);
b = image(width, height, 0, 2);
return(RGBColor(r,g,b));
}
Pos是交叉点。 任何帮助都是apreciated