[2] 立方体(Box)图形的生成算法
顶点数据的生成
- bool YfBuildBoxVertices
- (
- Yreal extentX,
- Yreal extentY,
- Yreal extentZ,
- YeOriginPose originPose,
- Yuint vertexStriding,
- Yuint vertexPos,
- void* pVerticesBuffer
- )
- {
- if (!pVerticesBuffer)
- {
- return false;
- }
- Yuint numVertices = ;
- // 顶点赋值
- char* vertexPtr = (char*)pVerticesBuffer + vertexPos;
- YsVector3* curVertexPtr = NULL;
- YsVector3* curNormalPtr = NULL;
- YsVector2* curTexcoordPtr = NULL;
- Yuint nOffset = ;
- YsVector3 vOriginOffset(-extentX / , -extentY / , -extentZ / );
- if (originPose == YE_ORIGIN_POSE_TOP)
- {
- vOriginOffset.y = -extentY;
- }
- else if (originPose == YE_ORIGIN_POSE_BOTTOM)
- {
- vOriginOffset.y = 0.0f;
- }
- for (Yuint k = ; k < ; k++)
- {
- for (Yuint j = ; j < ; j++)
- {
- for (Yuint i = ; i < ; i++)
- {
- nOffset = (k* + j* + i) * vertexStriding;
- curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
- curVertexPtr->x = extentX*i + vOriginOffset.x;
- curVertexPtr->z = extentZ*j + vOriginOffset.z;
- curVertexPtr->y = extentY*k + vOriginOffset.y;
- }
- }
- }
- return true;
- }
三角形索引数据的生成
- bool YfBuildBoxTriIndices
- (
- YeIndexType indexType,
- Yuint indexStriding,
- Yuint indexPos,
- void* pTriIndicesBuffer
- )
- {
- if (!pTriIndicesBuffer)
- {
- return false;
- }
- char* indexPtr = (char*)pTriIndicesBuffer + indexPos;
- if (indexType == YE_INDEX_16_BIT)
- {
- YsTriIndex16* triIndexPtr[];
- for (Yuint i = ; i < ; i++)
- {
- triIndexPtr[i] = (YsTriIndex16*)(indexPtr + i * indexStriding);
- }
- // bottom
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // top
- triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
- triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
- // front side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // back side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // right side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // left side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- }
- else
- {
- YsTriIndex32* triIndexPtr[];
- for (Yuint i = ; i < ; i++)
- {
- triIndexPtr[i] = (YsTriIndex32*)(indexPtr + i * indexStriding);
- }
- // bottom
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // top
- triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
- triIndexPtr[]->index0= ; triIndexPtr[]->index1= ; triIndexPtr[]->index2= ;
- // front side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // back side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // right side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- // left side
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- triIndexPtr[]->index0 = ; triIndexPtr[]->index1 = ; triIndexPtr[]->index2 = ;
- }
- return true;
- }
线框索引数据的生成
- bool YfBuildBoxWireIndices
- (
- YeIndexType indexType,
- Yuint indexStriding,
- Yuint indexPos,
- void* pWireIndicesBuffer
- )
- {
- if (!pWireIndicesBuffer)
- {
- return false;
- }
- char* indexPtr = (char*)pWireIndicesBuffer + indexPos;
- if (indexType == YE_INDEX_16_BIT)
- {
- YsLineIndex16* lineIndexPtr[];
- for (Yuint i = ; i < ; i++)
- {
- lineIndexPtr[i] = (YsLineIndex16*)(indexPtr + i * indexStriding);
- }
- // bottom
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- // center
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- // top
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
- lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
- }
- else
- {
- YsLineIndex32* lineIndexPtr[];
- for (Yuint i = ; i < ; i++)
- {
- lineIndexPtr[i] = (YsLineIndex32*)(indexPtr + i * indexStriding);
- }
- // bottom
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- // center
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- // top
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0 = ; lineIndexPtr[]->index1 = ;
- lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
- lineIndexPtr[]->index0= ; lineIndexPtr[]->index1= ;
- }
- return true;
- }
[2] 立方体(Box)图形的生成算法的更多相关文章
- [20] 鼓状物(Drum)图形的生成算法
顶点数据的生成 bool YfBuildDrumVertices ( Yreal radius, Yreal assistRadius, Yuint slices, Yuint stacks, YeO ...
- [17] 楼梯(Stairs)图形的生成算法
感觉这图形怎么看怎么像搓衣板. 顶点数据的生成 bool YfBuildStairsVertices ( Yreal width, Yreal length, Yreal height, Yuint ...
- [19] 半球形(Hemisphere)图形的生成算法
顶点数据的生成 bool YfBuildHemisphereVertices ( Yreal radius, Yuint slices, Yuint stacks, YeOriginPose orig ...
- [18] 螺旋楼梯(Spiral Stairs)图形的生成算法
顶点数据的生成 bool YfBuildSpiralStairsVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint sli ...
- [16] 螺旋面(Spire)图形的生成算法
顶点数据的生成 bool YfBuildSpireVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, Yu ...
- [15] 星星(Star)图形的生成算法
顶点数据的生成 bool YfBuildStarVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, YeO ...
- [14] 齿轮(Gear Wheel)图形的生成算法
顶点数据的生成 bool YfBuildGearwheelVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices ...
- [13] 弧面(Arc)图形的生成算法
顶点数据的生成 bool YfBuildArcVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, Yuint stac ...
- [12] 扇形体(Fan)图形的生成算法
顶点数据的生成 bool YfBuildFunVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, YeOriginPo ...
随机推荐
- liniux Crontab 的重启和设置
重启crontab,service cron restart 05 01 * * * /usr/local/php/bin/php FILE 10,30,50 * * * * /usr/local/p ...
- PHP的钩子实现解析
钩子是编程里一个常见的概念,非常的重要.它使得系统变得非常容易拓展(而不用理解其内部的实现机理,这样可以减少很多工作量).只要有一个钩子样本,能很容易仿照第一个钩子快速的编写第二个钩子,这里对钩子进行 ...
- IDEA JSP项目构建及学习心得
近期学习的东西比较杂乱,导致了很多东西都有些忘却.在这里记录一份心得. 简而言之JSP也就是Java代码在页面上的一种呈现方式,用于Web项目的前台展示. 在这里不做过多的阐述. MVC设计模式,Se ...
- python开发_webbrowser_浏览器控制模块
''' python的webbrowser模块支持对浏览器进行一些操作 主要有以下三个方法: webbrowser.open(url, new=0, autoraise=True) webbrowse ...
- codevs 1073 家族 并查集
家族 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1073/ Description 若某个家族 ...
- Python— isinstance用法说明
在学习自动化测试的脚本中发现了这个函数,所以在网上查了一下资料进行如下整理: 通过帮助查看如下: 作用:来判断一个对象是否是一个已知的类型: 其第一个参数(object)为对象,第二个参数为类型名(i ...
- Illegal instruction错误的定位---忽略编译期警告的代价
在原计算机的linux c++程序可以正确跑起来,但是换了一台机器运行时出现致命错误,程序直接当掉,错误提示如下: Illegal instruction (core dumped) 造成改错的主要原 ...
- 指针式压力表自动读数:Auto Read the Value of Manometer
指针式压力表的自动读数,用摄像头对准压力计,然后实时自动地读取压力计的读数.视频效果如下视频所示,红色数字为识别到的指针读数.
- [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项
Go变量 初始化 对 复合类型(数组.切片.字典.结构体)变量的初始化是,有一些语法限制: 1.初始化表达式必须包含类型标签: 2.左花括号必须在类型尾部,不能另起一行: 3.多个成员初始值以逗号分隔 ...
- 字符串变量作mysql查询条件
原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...