小编And*_*ust的帖子

OpenGL照明

我试图弄清楚如何在OpenGL中使用Lighting引擎.我的目标是在相机的方向模拟一个火炬.

gluLookAt(  x, y, z,
        x+lx, y+ly,  z+lz,
        0.0f, 1.0f,  0.0f);
GLfloat light_position[] = { x+1, y, z+1, 0.0f };
GLfloat light_direction[] = { x+lx,y+ly,z+lz};
GLfloat light_angle[] ={20};
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION,light_direction);
glLightfv(GL_LIGHT0,GL_SPOT_CUTOFF,light_angle);
Run Code Online (Sandbox Code Playgroud)

但是当我执行它时,只显示少量的环境光,就像方向上的光束一样.我究竟做错了什么?

c++ opengl

1
推荐指数
1
解决办法
1060
查看次数

围绕另一个点旋转 3D 点

我的程序中有一个函数,它可以将一个点 (x_p, y_p, z_p) 围绕另一个点 (x_m, y_m, z_m) 旋转角度 w_nx & w_ny。新坐标存储在全局变量 x_n、y_n 和 z_n 中。绕 y 轴旋转(因此更改 w_nx 的值 - 以便 y 值不会受到损害)工作正常,但是一旦我绕 x 或 z 轴旋转(更改 w_ny 的值)坐标不再准确。我评论了我认为我的错所在的行,但我无法弄清楚该代码有什么问题。

谁能帮我?

void rotate(float x_m, float y_m, float z_m, float x_p, float y_p, float z_p, float w_nx ,float w_ny)
    {
        float z_b = z_p - z_m;
        float x_b = x_p - x_m;
        float y_b = y_p - y_m;
        float length_ = sqrt((z_b*z_b)+(x_b*x_b)+(y_b*y_b));
        float w_bx = asin(z_b/sqrt((x_b*x_b)+(z_b*z_b))) + w_nx;
        float w_by = …
Run Code Online (Sandbox Code Playgroud)

c++ opengl math trigonometry

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×2

opengl ×2

math ×1

trigonometry ×1