顶点数据的生成

  1. bool YfBuildSpiralStairsVertices
  2. (
  3. Yreal radius,
  4. Yreal assistRadius,
  5. Yreal height,
  6. Yuint slices,
  7. Yuint stacks,
  8. YeOriginPose originPose,
  9. Yuint vertexStriding,
  10. Yuint vertexPos,
  11. void* pVerticesBuffer
  12. )
  13. {
  14. if (stacks < || slices < || !pVerticesBuffer)
  15. {
  16. return false;
  17. }
  18. Yuint numVertices = + stacks * ;
  19. //Yuint numTriangles = stacks * 8;
  20.  
  21. char* vertexPtr = (char*)pVerticesBuffer + vertexPos;
  22. YsVector3* curVertexPtr = NULL;
  23. Yuint nOffset = ;
  24.  
  25. Yreal originOffsetY = 0.0f;
  26. if (originPose == YE_ORIGIN_POSE_TOP)
  27. {
  28. originOffsetY = -height;
  29. }
  30. else if (originPose == YE_ORIGIN_POSE_CENTER)
  31. {
  32. originOffsetY = -height * 0.5f;
  33. }
  34.  
  35. Yreal fStepTexcoord = 1.0f / (stacks - );
  36. Yreal fStepHeight = height / stacks;
  37. Yreal fStepAngle = YD_REAL_TWAIN_PI / slices;
  38.  
  39. Yreal angleXZ;
  40. Yreal posX, posZ;
  41. for (Yuint i = ; i <= stacks; i++)
  42. {
  43. angleXZ = i * fStepAngle;
  44. posX = yf_sin(angleXZ);
  45. posZ = yf_cos(angleXZ);
  46.  
  47. nOffset = i * * vertexStriding;
  48. curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
  49. curVertexPtr->x = radius * posX;
  50. curVertexPtr->y = i * fStepHeight + originOffsetY;
  51. curVertexPtr->z = radius * posZ;
  52.  
  53. nOffset += vertexStriding;
  54. curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
  55. curVertexPtr->x = assistRadius * posX;
  56. curVertexPtr->y = i * fStepHeight + originOffsetY;
  57. curVertexPtr->z = assistRadius * posZ;
  58.  
  59. if (i == stacks)
  60. {
  61. continue;
  62. }
  63.  
  64. nOffset += vertexStriding;
  65. curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
  66. curVertexPtr->x = radius * posX;
  67. curVertexPtr->y = (i+) * fStepHeight + originOffsetY;
  68. curVertexPtr->z = radius * posZ;
  69.  
  70. nOffset += vertexStriding;
  71. curVertexPtr = (YsVector3*)(vertexPtr + nOffset);
  72. curVertexPtr->x = assistRadius * posX;
  73. curVertexPtr->y = (i+) * fStepHeight + originOffsetY;
  74. curVertexPtr->z = assistRadius * posZ;
  75. }
  76.  
  77. return true;
  78. }

三角形索引数据的生成和线框索引数据的生成与楼梯的生成方式一样

  1. bool YfBuildSpiralStairsTriIndices
  2. (
  3. Yuint stacks,
  4. YeIndexType indexType,
  5. Yuint indexStriding,
  6. Yuint indexPos,
  7. void* pTriIndicesBuffer
  8. )
  9. {
  10. return YfBuildStairsTriIndices(
  11. stacks,
  12. indexType,
  13. indexStriding,
  14. indexPos,
  15. pTriIndicesBuffer
  16. );
  17. }
  18.  
  19. bool YfBuildSpiralStairsWireIndices
  20. (
  21. Yuint stacks,
  22. YeIndexType indexType,
  23. Yuint indexStriding,
  24. Yuint indexPos,
  25. void* pWireIndicesBuffer
  26. )
  27. {
  28. return YfBuildStairsWireIndices(
  29. stacks,
  30. indexType,
  31. indexStriding,
  32. indexPos,
  33. pWireIndicesBuffer
  34. );
  35. }

[18] 螺旋楼梯(Spiral Stairs)图形的生成算法的更多相关文章

  1. [17] 楼梯(Stairs)图形的生成算法

    感觉这图形怎么看怎么像搓衣板. 顶点数据的生成 bool YfBuildStairsVertices ( Yreal width, Yreal length, Yreal height, Yuint ...

  2. [20] 鼓状物(Drum)图形的生成算法

    顶点数据的生成 bool YfBuildDrumVertices ( Yreal radius, Yreal assistRadius, Yuint slices, Yuint stacks, YeO ...

  3. [19] 半球形(Hemisphere)图形的生成算法

    顶点数据的生成 bool YfBuildHemisphereVertices ( Yreal radius, Yuint slices, Yuint stacks, YeOriginPose orig ...

  4. [16] 螺旋面(Spire)图形的生成算法

    顶点数据的生成 bool YfBuildSpireVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, Yu ...

  5. [15] 星星(Star)图形的生成算法

    顶点数据的生成 bool YfBuildStarVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices, YeO ...

  6. [14] 齿轮(Gear Wheel)图形的生成算法

    顶点数据的生成 bool YfBuildGearwheelVertices ( Yreal radius, Yreal assistRadius, Yreal height, Yuint slices ...

  7. [13] 弧面(Arc)图形的生成算法

    顶点数据的生成 bool YfBuildArcVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, Yuint stac ...

  8. [12] 扇形体(Fan)图形的生成算法

    顶点数据的生成 bool YfBuildFunVertices ( Yreal radius, Yreal degree, Yreal height, Yuint slices, YeOriginPo ...

  9. [11] 楔形体(Wedge)图形的生成算法

    顶点数据的生成 bool YfBuildWedgeVertices ( Yreal width, Yreal length, Yreal height, YeOriginPose originPose ...

随机推荐

  1. docker动态绑定端口

    一.背景 在创建容器的时候,我们可以使用命令 docker container run -p host:container container-name 的方式来绑定端口,还可以使用docker-co ...

  2. 牛客练习赛3 B - 贝伦卡斯泰露

    链接:https://www.nowcoder.net/acm/contest/13/B来源:牛客网 题目描述 贝伦卡斯泰露,某种程度上也可以称为古手梨花,能够创造几率近乎 为0的奇迹,通过无限轮回成 ...

  3. 美团外卖Android平台化的复用实践

    美团外卖平台化复用主要是指多端代码复用,正如美团外卖iOS多端复用的推动.支撑与思考文章所述,多端包含有两层意思:其一是相同业务的多入口,指美团外卖业务需要在美团外卖App(下文简称外卖App)和美团 ...

  4. eclipse 设置文本模板中 insert variable... 函数 详解

    设置文本模板简要图: 设置文本模板详细过程:http://www.cnblogs.com/lsy131479/p/8478711.html 此处引出设置文本模板中 insert variable... ...

  5. Vue图片懒加载插件

    图片懒加载是一个很常用的功能,特别是一些电商平台,这对性能优化至关重要.今天就用vue来实现一个图片懒加载的插件. 这篇博客采用"三步走"战略--Vue.use().Vue.dir ...

  6. date time insert

    DATE=`date '+%m/%d/%Y'`TIME=`date '+%H:%M:%S'` sed -i '1i1***** start*****' test.kshsed -i '2i\ REPO ...

  7. 用 Python 实现一个大数据搜索引擎

    搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理. 布隆过滤器 ...

  8. scrapy爬虫,爬取图片

    一.scrapy的安装: 本文基于Anacoda3, Anacoda2和3如何同时安装? 将Anacoda3安装在C:\ProgramData\Anaconda2\envs文件夹中即可. 如何用con ...

  9. django创建model

    1.model实例 #!/usr/bin/python # coding:utf-8 from __future__ import unicode_literals from django.db im ...

  10. QT学习笔记7:C++函数默认参数

    C++中允许为函数提供默认参数,又名缺省参数. 使用默认参数时的注意事项: ① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一.建议放在函数声明中. double sqr ...