void gluSphere(
GLUquadricObj qobj,
GLdouble radius,
GLint slices,
GLint stacks
);
其中各个参数的含义是这样的:
qobj
利用gluNewQuadric创建的一个二次对象
radius
圆的半径
slices
stacks是对圆的划分参数。相机是一样的,加上防暴型外壳级别相机中,基于工业级防爆要求很复杂,主要是防水,防结露,防气,防机械冲击基本上密封状态下,许多壳牌也比照相机的情况下更昂贵,相机不高或低,防暴外壳在千元以上。在OpenGL中确定鼠标点击坐标在圆柱体范围内的方法有多种。一种常用的方法是使用投影和反投影矩阵。首先,你需要在渲染圆柱体之前设置投影矩阵,然后在鼠标点击事件中获取当前点击坐标。接下来,使用反投影矩阵将当前点击坐标转换为世界坐标。最后,计算当前点击坐标与圆柱体中心点之间的距离(只看x,y),并判断该距离是否小于圆柱体的半径,还需要在计算距离时考虑圆柱体的高度(只看z)。可以使用如下代码来判断点击坐标是否在圆柱体范围内:
普通算法 void onMouseClick(int x, int y) { // 获取当前点击坐标 glm::vec4 viewport = glm::vec4(0, 0, window_width, window_height); glm::vec3 wincoord = glm::vec3(x, y, 0); glm::vec3 objcoord = glm::unProject(wincoord, view model, projection, viewport); // 计算点击坐标与圆柱体中心点之间的距离 float dx = objcoordx - cylinder_centerx; float dy = objcoordy - cylinder_centery; float distance = sqrt(dx dx + dy dy); // 判断距离是否小于圆柱体半径 if (distance // 点击坐标在圆柱体范围内 std::cout std::cout // 判断点是否在高度范围内 if (objcoordz > cylinder_bottom && objcoordz std::cout
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)