OpenGL 画圆球
来源:互联网 发布:淘宝花呗分期手续费 编辑:程序博客网 时间:2024/04/20 19:57
OpenGL 画圆球
只需要两个点,然后使用GL_TRIANGLE_STRIP(按顺序依次组成三角形)方式画三角形就可以了
从上至下,一圈一圈往下计算
球面点计算公式
// x=x0+r sinθcosφ// y=y0+r sinθsinφ// z=z0+r cosθ
θ为yz平面
GLfloat * calculateBallVertex(GLfloat r){// x=x0+r sinθcosφ// y=y0+r sinθsinφ// z=z0+r cosθGLfloat radius = 0.8 * r;// GLfloat delta = 2 * M_PI / 100;GLfloat *dest = (GLfloat *) malloc(sizeof(GLfloat) * 2 * kRow * kCol * 3);GLfloat k = kHeight * 1.0 / kWidth;float step_z = M_PI / kRow ; //z方向每次步进的角度(上下,纬度)float step_xy = 2*M_PI/ kCol; //x,y平面每次步进的角度(经度)float x[2],y[2],z[2]; //用来存坐标float angle_z = 0; //起始角度float angle_xy = 0;int i=0, j=0;// 90 --> -90for(i = 0; i < kRow; i++){angle_z = i * step_z; //每次步进step_zfor(j = 0; j < kCol ; j++){// j++;angle_xy = j * step_xy; //每次步进step_xy//整个的过程可以想象3D打印机,一层一层的画出来x[0] = k * radius * sin(angle_z) * cos(angle_xy); //第一个小平面的第一个顶点坐标y[0] = radius * sin(angle_z) * sin(angle_xy);z[0] = radius * cos(angle_z);x[1] = k * radius * sin(angle_z + step_z) * cos(angle_xy); //第一个小平面的第二个顶点坐标,下面类似y[1] = radius * sin(angle_z + step_z) * sin(angle_xy);z[1] = radius * cos(angle_z + step_z);//整个的过程可以想象3D打印机,一层一层的画出来// x[0] = k * radius * cos(angle_z) * sin(angle_xy); //第一个小平面的第一个顶点坐标// y[0] = radius * sin(angle_z);// z[0] = radius * cos(angle_z) * cos(angle_xy);// // x[1] = k * radius * cos(angle_z + step_z) * sin(angle_xy); //第一个小平面的第一个顶点坐标// y[1] = radius * sin(angle_z + step_z);// z[1] = radius * cos(angle_z + step_z) * cos(angle_xy);//至此得到一个平面的3个顶点for(int k=0; k<2; k++){ dest[i * kCol * 2 * 3 + j * 2 * 3 + k*3+0] = x[k]; dest[i * kCol * 2 * 3 + j * 2 * 3 + k*3+1] = y[k]; dest[i * kCol * 2 * 3 + j * 2 * 3 + k*3+2] = z[k];}} //循环画出这一层的平面,组成一个环} //z轴++,画出剩余层return dest;}
阅读全文
0 0
- OpenGL 画圆球
- OPENGL-ES画圆球体
- 自定义View画圆球+Hanlder倒计时跳转
- Android属性动画与自定义控件画圆球移动
- 圆球渲染
- 圆球动态效果
- flex_圆球滚动动画代码;
- 关于Android手势缩放圆球
- Android 圆球组成数字控件
- css实现圆球顺时针滚动
- Android自定义一个圆球View
- EasyX实现圆球的反弹
- 简单圆球水波动。手写
- 圆球canvas图,类似进度条
- 关于3d圆球顶点数据算法
- 圆球度: 圆度与球度
- irrlicht圆球与三角形碰撞测试
- 自定义view,跟随手指滑动的圆球
- 算法导论 最长公共子序列(原书思路)
- 设计模式练习--单例模式
- C#的类型转换:显示类型转换、强制类型转换、不兼容类型转换
- 遗传算法及TSP问题
- 记舅舅的离去
- OpenGL 画圆球
- youtube8m视频识别竞赛
- makefile的一些笔记
- unity3d简单变换移动
- python学习心得(5)— Python插件化开发
- POJ 1312 Numerically Speaking 笔记
- Storm on YARN
- 构建乘积数组
- Java 对象的生命周期