[11] 楔形体(Wedge)图形的生成算法
顶点数据的生成
bool YfBuildWedgeVertices
(
Yreal width,
Yreal length,
Yreal height,
YeOriginPose originPose,
Yuint vertexStriding,
Yuint vertexPos,
void* pVerticesBuffer
)
{
if (!pVerticesBuffer)
{
return false;
} Yuint numVertices = ; // 顶点赋值
char* vertexPtr = (char*)pVerticesBuffer + vertexPos;
YsVector3* curVertexPtr = NULL;
Yuint nOffset = ; YsVector3 vOriginOffset(-width / , -height / , -length / );
if (originPose == YE_ORIGIN_POSE_TOP)
{
vOriginOffset.y = -height;
}
else if (originPose == YE_ORIGIN_POSE_BOTTOM)
{
vOriginOffset.y = 0.0f;
} // 底四个顶点
for (Yuint j = ; j < ; j++)
{
for (Yuint i = ; i < ; i++)
{
nOffset = (j* + i) * vertexStriding;
curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
curVertexPtr->x = width*i + vOriginOffset.x;
curVertexPtr->y = vOriginOffset.y;
curVertexPtr->z = length*j + vOriginOffset.z;
}
} // 上顶点
nOffset = * vertexStriding;
if (vertexPtr)
{
curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
curVertexPtr->x = vOriginOffset.x + width / ;
curVertexPtr->y = height + vOriginOffset.y;
curVertexPtr->z = vOriginOffset.z; curVertexPtr = (YsVector3*)(vertexPtr + nOffset + vertexStriding);
curVertexPtr->x = vOriginOffset.x + width / ;
curVertexPtr->y = height + vOriginOffset.y;
curVertexPtr->z = length + vOriginOffset.z;
} return true;
}
三角形索引数据的生成
bool YfBuildWedgeTriIndices
(
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 = NULL; // bottom
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ; // 4 face
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ; // 2 face
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex16*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
}
else
{
YsTriIndex32* triIndexPtr = NULL; // bottom
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ; // 4 face
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ; // 2 face
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
triIndexPtr = (YsTriIndex32*)(indexPtr + *indexStriding);
triIndexPtr->index0 = ; triIndexPtr->index1 = ; triIndexPtr->index2 = ;
} return true;
}
线框索引数据的生成
bool YfBuildWedgeWireIndices
(
YeIndexType indexType,
Yuint indexStriding,
Yuint indexPos,
void* pWireIndicesBuffer
)
{
if (!pWireIndicesBuffer)
{
return false;
} Yuint numVertices = ;
Yuint numLines = ; // 索引赋值
char* indexPtr = (char*)pWireIndicesBuffer + indexPos;
Yuint nOffset = ;
if (indexType == YE_INDEX_16_BIT)
{
YsLineIndex16* lineIndexPtr = NULL; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex16*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ;
}
else
{
YsLineIndex32* lineIndexPtr = NULL; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ; nOffset = * indexStriding;
lineIndexPtr = (YsLineIndex32*)(indexPtr + nOffset);
lineIndexPtr->index0 = ;
lineIndexPtr->index1 = ;
} return true;
}
[11] 楔形体(Wedge)图形的生成算法的更多相关文章
- [20] 鼓状物(Drum)图形的生成算法
顶点数据的生成 bool YfBuildDrumVertices ( Yreal radius, Yreal assistRadius, Yuint slices, Yuint stacks, YeO ...
- [17] 楼梯(Stairs)图形的生成算法
感觉这图形怎么看怎么像搓衣板. 顶点数据的生成 bool YfBuildStairsVertices ( Yreal width, Yreal length, Yreal height, Yuint ...
- [6] 胶囊体(Capsule)图形的生成算法
顶点数据的生成 bool YfBuildCapsuleVertices ( Yreal radius, Yreal height, Yuint slices, Yuint stacks, YeOrig ...
- [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 ...
随机推荐
- 黑马程序员_java基础笔记(09)...HTML基本知识、CSS、JavaScript、DOM
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 基本标签(a.p.img.li.table.div.span).表单标签.ifra ...
- 003 python流程控制与函数
一:控制语句 1.条件语句 注意: if: elif: elif: else: 2.while循环 里面可以加else. # coding=utf-8 count=0 while count<3 ...
- 14个你可能不知道的JavaScript调试技巧
调试JS的时候,搜索一下这个标题
- 为什么要使用String
最近在培训课期间指导初学者.任务之一就是要大家完成一个类,要求这个类对key为String类型的map执行dwarwle操作.其中一位学员完成的类中,有如下方法: void dwarwle(HashM ...
- 1035 Password (20)(20 point(s))
problem To prepare for PAT, the judge sometimes has to generate random passwords for the users. The ...
- Keystone几种token生成的方式分析
从Keystone的配置文件中,我们可见,Token的提供者目前支持四种. Token Provider:UUID, PKI, PKIZ, or Fernet 结合源码及官方文档,我们用一个表格来阐述 ...
- int类型的整数转换成汉字
int类型的整数转换成汉字 一.源代码:IntegerNumberToChinese.java package cn.com.zfc.example; import java.util.Scanner ...
- 【KTU Programming Camp (Day 3)】Queries
http://codeforces.com/gym/100739/problem/A 按位考虑,每一位建一个线段树. 求出前缀xor和,对前缀xor和建线段树. 线段树上维护区间内的0的个数和1的个数 ...
- 和程序有关的一个游戏<<mu complex>> 攻略
最速打法: 1 - login, brucedayton 2 - login, allomoto 3 - login, m3g4pa55word 4 - unlock, 03/18/34 5 - ss ...
- 磁盘满了MySQL会做什么?
最近遇到一个故障和磁盘满有关系,并且同事也发现经常有磁盘满导致操作hang住无响应的情况,于是抽时间研究了一下这2种情况. 一.磁盘满了之后MySQL会做什么? 我们看下官方的说法 When a di ...