在之前的博客上,发布了一个我写的3D几何图形生成的DEMO:

http://www.cnblogs.com/WhyEngine/p/3415040.html

DEMO下载地址:

http://files.cnblogs.com/WhyEngine/GeometryDemo4.0.zip

现在要将图形生成的算法代码发布出来,将分成以下章节:

[4] 圆锥(Cone)图形的生成算法

这一节先将一些宏定义和结构体的代码帖一下

类型定义

// --------------------------------------------------------------------------------------

#define YD_INLINE                       inline
#define YD_FORCE_INLINE __forceinline
#define YD_NULL 0
#define YD_NONE // -------------------------------------------------------------------------------------- typedef __int64 Yint64;
typedef signed long Yint32;
typedef signed short Yint16;
typedef signed char Yint8; typedef unsigned __int64 Yuint64;
typedef unsigned long Yuint32;
typedef unsigned short Yuint16;
typedef unsigned char Yuint8; typedef unsigned long Ydword;
typedef unsigned short Yword;
typedef unsigned char Ybyte; typedef float Yreal32;
typedef double Yreal64;
typedef float Yfloat;
typedef double Ydouble; typedef Yint8 Ychar;
typedef Yint16 Yshort;
typedef Yint32 Yint;
typedef Yuint32 Yuint;
typedef Yreal32 Yreal; // -------------------------------------------------------------------------------------- typedef int Ybool;
#define YD_FALSE 0
#define YD_TRUE 1 // --------------------------------------------------------------------------------------

宏定义

// --------------------------------------------------------------------------------------

#define YD_REAL_PI                      3.14159265358979f               // 圆周率
#define YD_REAL_HALF_PI 1.57079632679490f // PI / 2
#define YD_REAL_QUARTER_PI 0.78539816339745f // PI / 4
#define YD_REAL_TWAIN_PI 6.28318530717958f // PI * 2
#define YD_REAL_E 2.71828182845905f // e
#define YD_REAL_LOG2E 1.44269504088896f // log2(e)
#define YD_REAL_LOG10E 0.43429448190325f // log10(e)
#define YD_REAL_LN2 0.69314718055995f // ln(2)
#define YD_REAL_LN10 2.30258509299405f // ln(10)
#define YD_REAL_SQRT_2 1.41421356237310f // sqrt(2)
#define YD_REAL_SQRT_1_2 0.70710678118655f // 1/sqrt(2)
#define YD_REAL_SQRT_3 1.73205077648163f // sqrt(3)

索引结构

// 索引类型(16位索引或32位索引)
enum YeIndexType
{
YE_INDEX_INVALID = ,
YE_INDEX_16_BIT = ,
YE_INDEX_32_BIT = ,
}; // -------------------------------------------------------------------------------------- // 三角面片的索引结构
struct YsTriIndex16
{
Yuint16 index0;
Yuint16 index1;
Yuint16 index2;
}; struct YsTriIndex32
{
Yuint32 index0;
Yuint32 index1;
Yuint32 index2;
}; // -------------------------------------------------------------------------------------- // 线的索引结构
struct YsLineIndex16
{
Yuint16 index0;
Yuint16 index1;
}; struct YsLineIndex32
{
Yuint32 index0;
Yuint32 index1;
};

图形类型定义

// 简单图形的类型
enum YeGraphType
{
YE_GRAPH_INVALID = ,
YE_GRAPH_PLANE = , // 平面
YE_GRAPH_BOX = , // 立方体
YE_GRAPH_SPHERE = , // 球
YE_GRAPH_CONE = , // 圆锥
YE_GRAPH_CYLINDER = , // 柱台
YE_GRAPH_CAPSULE = , // 胶囊体
YE_GRAPH_PYRAMID = , // 金字塔
YE_GRAPH_ROUND = , // 圆面
YE_GRAPH_RING = , // 圆环
YE_GRAPH_PIPE = , // 圆管
YE_GRAPH_WEDGE = , // 楔形体
YE_GRAPH_FAN = , // 扇形体
YE_GRAPH_ARC = , // 弧面
YE_GRAPH_GEARWHEEL = , // 齿轮
YE_GRAPH_STAR = , // 星星
YE_GRAPH_SPIRE = , // 螺旋面
YE_GRAPH_STAIRS = , // 楼梯
YE_GRAPH_SPIRAL_STAIRS = , // 螺旋楼梯
YE_GRAPH_HEMISPHERE = , // 半球形
YE_GRAPH_DRUM = , // 鼓状物
}; // 模型的起始位置
enum YeOriginPose
{
YE_ORIGIN_POSE_TOP = ,
YE_ORIGIN_POSE_CENTER = ,
YE_ORIGIN_POSE_BOTTOM =
};

3D几何图形的生成算法的更多相关文章

  1. 3D几何图形生成的DEMO

    3D几何图形生成的DEMO 可以生成以下几种图形: [1] 平面(Plane)图形的生成算法 [2] 立方体(Box)图形的生成算法 [3] 球(Sphere)图形的生成算法 [4] 圆锥(Cone) ...

  2. PHP 短连接生成算法

    短连接生成类: <?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJ ...

  3. php短网址生成算法

    <?php //短网址生成算法 class ShortUrl { //字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQ ...

  4. CVPR2020论文介绍: 3D 目标检测高效算法

    CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...

  5. 一个UUID生成算法的C语言实现 --- WIN32版本 .

    一个UUID生成算法的C语言实现——WIN32版本   cheungmine 2007-9-16   根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...

  6. 分布式全局不重复ID生成算法

    分布式全局不重复ID生成算法 算法全局id唯一id  在分布式系统中经常会使用到生成全局唯一不重复ID的情况.本篇博客介绍生成的一些方法. 常见的一些方式: 1.通过DB做全局自增操作 优点:简单.高 ...

  7. C++ 基于凸包的Delaunay三角网生成算法

    Delaunay三角网,写了用半天,调试BUG用了2天……醉了. 基本思路比较简单,但效率并不是很快. 1. 先生成一个凸包: 2. 只考虑凸包上的点,将凸包环切,生成一个三角网,暂时不考虑Delau ...

  8. C++ 凸包生成算法

    由于我的极差记忆力,我打算把这个破玩意先记下来.因为以后会有改动(Delaunay三角网生成算法),我不想把一个好的东西改坏了... 好吧-- 凸包生成算法,: 1.先在指定的宽(width)高(he ...

  9. RocketMQ msgId生成算法

    当我们用RocketMQ发送信息的时候通常都会返回如下信息: SendResult [sendStatus=SEND_OK, msgId=0A42333A0DC818B4AAC246C290FD000 ...

随机推荐

  1. JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

    1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再 ...

  2. Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型

    Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型 认识Highmaps Highmaps是Highcharts的姊妹框架,用来实现地图图表.它完全使用Javascript ...

  3. 决策树算法(Bagging与随机森林)

    Bagging算法: 将训练数据集进行N次Bootstrap采样得到N个训练数据子集,对每个子集使用相同的算法分别建立决策树,最终的分类(或回归)结果是N个决策树的结果的多数投票(或平均). 其中,B ...

  4. BZOJ 1975: [Sdoi2010]魔法猪学院 大水题 第k短路 spfa

    https://www.lydsy.com/JudgeOnline/problem.php?id=1975 我好像到现在了第k短路都不会写,mdzz. 先spfa求出最短路,然后扫点存各种前置路径已经 ...

  5. [ZHOJ1956]vfk的地雷

    题目大意: 有$n$个开关,$r$句话. 每个开关$i$有$p_i$的概率被触发,并造成$d_i$的代价. 每个开关至多被触发一次,一句话至多触发一个开关. 每个开关按照顺序被尝试触发. 求期望代价. ...

  6. hdu 4417 区间内比h小的数 线段树

    题意求区间内比h小的数的个数 将所有的询问离线读入之后,按H从小到大排序.然后对于所有的结点也按从小到大排序,然后根据查询的H,将比H小的点加入到线段树,然后就是一个区间和. 2015-07-27:专 ...

  7. hdu 4535 错排

    题意:错排 链接:点我 百年难得一遇大水题 #include<cstdio> #include<iostream> #include<algorithm> #inc ...

  8. bzoj 3306

    以1号节点为根,弄出DFS序,我们发现,对于一个询问:(rt,u),以rt为根,u节点的子树中的最小点权,我们可以根据rt,u,1这三个节点在同一条路径上的相对关系来把它转化为以1为根的在DFS序上的 ...

  9. Shell 学习笔记之条件语句

    条件语句 if # if if condition then command fi # if else if condition then command else command fi # if e ...

  10. Elasticsearch 横向扩容以及容错机制

    写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...