在之前的博客上,发布了一个我写的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. PHP开发命名规范

    命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录使用小写+下划线: 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并 ...

  2. 基于spring-boot的应用程序的单元测试方案

    概述 本文主要介绍如何对基于spring-boot的web应用编写单元测试.集成测试的代码. 此类应用的架构图一般如下所示: 我们项目的程序,对应到上图中的web应用部分.这部分一般分为Control ...

  3. Gumbel-Softmax Trick和Gumbel分布

      之前看MADDPG论文的时候,作者提到在离散的信息交流环境中,使用了Gumbel-Softmax estimator.于是去搜了一下,发现该技巧应用甚广,如深度学习中的各种GAN.强化学习中的A2 ...

  4. iOS 9应用开发教程之ios9中实现按钮的响应

    iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...

  5. 从Table 表中取出第 m 条到第 n 条的记录

    * FROM Table id FROM Table )) --从TABLE表中取出第m到n条记录 (Exists版本) * FROM TABLE AS a WHERE Not Exists ( * ...

  6. php常见网络攻击及防御方法

    常见的Web攻击分为两类:一是利用Web服务器的漏洞进行攻击,如CGI缓冲区溢出,目录遍历漏洞利用等攻击;二是利用网页自身的安全漏洞进行攻击,如SQL注入,跨站脚本攻击等.下面这篇文章主要介绍了PHP ...

  7. 选择排序之Java实现

    选择排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; /** * * @title SelectSort * @describe 选择排序 * @au ...

  8. [BZOJ3507][CQOI2014]通配符匹配(DP+Hash)

    显然f[i][j]表示S匹配到第i个通配符,T匹配到第j个字符,是否可行. 一次一起转移两个通配符之间的所有字符,Hash判断. 稍微有点细节.常数极大卡时过排名倒数,可能是没自然溢出的原因. #in ...

  9. 【并查集&&带权并查集】BZOJ3296&&POJ1182

    bzoj1529[POI2005]ska Piggy banks [题目大意] n头奶牛m种语言,每种奶牛分别掌握一些语言.问至少再让奶牛多学多少种语言,才能使得它们能够直接或间接交流? [思路] ( ...

  10. [BZOJ2683]简单题/[BZOJ1176][BalkanOI2007]Mokia

    [BZOJ2683]简单题 题目大意: 一个\(n\times n(n\le5\times10^5)\)的矩阵,初始时每个格子里的数全为\(0\).\(m(m\le2\times10^5)\)次操作, ...