Android 3d 球形建模
来源:互联网 发布:谭浩强c语言源代码下载 编辑:程序博客网 时间:2024/04/28 20:27
opengl里的对球形的建模:首先要把球形表式由点组成的模型。现在的问题是:怎么把这个球用点集进行表示。
代码如下:
- final int UNIT_SIZE=10000;
- ArrayList<Integer> alVertix=new ArrayList<Integer>();//存放顶点坐标的ArrayList
- final int angleSpan=18;//将球进行单位切分的角度
- for(int vAngle=-90;vAngle<=90;vAngle=vAngle+angleSpan){//垂直方向angleSpan度一份
- for(int hAngle=0;hAngle<360;hAngle=hAngle+angleSpan)//水平方向angleSpan度一份
- {//纵向横向各到一个角度后计算对应的此点在球面上的坐标
- double xozLength=scale*UNIT_SIZE*Math.cos(Math.toRadians(vAngle));
- int x=(int)(xozLength*Math.cos(Math.toRadians(hAngle)));
- int z=(int)(xozLength*Math.sin(Math.toRadians(hAngle)));
- int y=(int)(scale*UNIT_SIZE*Math.sin(Math.toRadians(vAngle)));
- //将计算出来的XYZ坐标加入存放顶点坐标的ArrayList
- alVertix.add(x);alVertix.add(y);alVertix.add(z);
- }
- }
讲解:
1. 首先把球想成由很多的半径不一样的圆所组成的。把球想像成由很多平形于x,z平面的圆所组成的。
2. x,z轴的圆的角度是由0-360,y轴的变动由-90到90。
3. 在java里,三角函数要用弧度计算,而我们平实一般都是角度来计算。其实不管三角函数用的是角度和弧度,其都是度量的是角的大小,所以对于同一个角,其三角函数的值都是一样的(不管是用角度计算,还是用弧度计算)。所以sin(x)就不要注重其x是角度还是弧度,只要关心,其是由对边/斜边(前题是直角三角形)。
4. 如果对于计算球上每个点的坐标,不太理解,可以在笛卡尔级坐标系里,画一个点,再把这个点进行映射到三个坐标轴上去,就可以了。
注:角度和弧度的理解:http://hi.baidu.com/kent_edwin/blog/item/9425f0029e06967e3812bb28.html
- Android 3d 球形建模
- Android 3D球形效果
- 3D建模技巧
- 3d建模入门
- 3d建模教程
- 3d 建模工具
- Kinect 3D建模
- 3D建模基础教程
- 3D建模
- 球形摄像机平面坐标与3D坐标转换算法
- Canvas 3D球形文字云动画特效
- 3D建模工具Blender
- (笔记)关于3d建模
- 3D 建模 平面模型
- 3D建模,打印正当时
- 《3D建模初步》参考资料
- 3d建模个人流程
- Android+NDK+OpenGL绘制球形
- Mysql的实时同步 - 双机互备.
- 使用LGame开发游戏的摸索历程之一:sample们是怎么跑起来的
- py 中 import 指定文件夹下的库
- temp
- UICustomSwitch 的用法
- Android 3d 球形建模
- MySQL 数据类型
- Silverlight开发工具汇总
- 长连接与短连接
- Ubuntu实用软件推荐
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- 新浪微博API使用
- 用CMarkup类创建xml文件的方法
- could not load an entity问题