3D几何图形的生成算法
在之前的博客上,发布了一个我写的3D几何图形生成的DEMO:
http://www.cnblogs.com/WhyEngine/p/3415040.html
DEMO下载地址:
http://files.cnblogs.com/WhyEngine/GeometryDemo4.0.zip
现在要将图形生成的算法代码发布出来,将分成以下章节:
这一节先将一些宏定义和结构体的代码帖一下
类型定义
// -------------------------------------------------------------------------------------- #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几何图形的生成算法的更多相关文章
- 3D几何图形生成的DEMO
3D几何图形生成的DEMO 可以生成以下几种图形: [1] 平面(Plane)图形的生成算法 [2] 立方体(Box)图形的生成算法 [3] 球(Sphere)图形的生成算法 [4] 圆锥(Cone) ...
- PHP 短连接生成算法
短连接生成类: <?php #短连接生成算法 class Short_Url { #字符表 public static $charset = "0123456789ABCDEFGHIJ ...
- php短网址生成算法
<?php //短网址生成算法 class ShortUrl { //字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQ ...
- CVPR2020论文介绍: 3D 目标检测高效算法
CVPR2020论文介绍: 3D 目标检测高效算法 CVPR 2020: Structure Aware Single-Stage 3D Object Detection from Point Clo ...
- 一个UUID生成算法的C语言实现 --- WIN32版本 .
一个UUID生成算法的C语言实现——WIN32版本 cheungmine 2007-9-16 根据定义,UUID(Universally Unique IDentifier,也称GUID)在时 ...
- 分布式全局不重复ID生成算法
分布式全局不重复ID生成算法 算法全局id唯一id 在分布式系统中经常会使用到生成全局唯一不重复ID的情况.本篇博客介绍生成的一些方法. 常见的一些方式: 1.通过DB做全局自增操作 优点:简单.高 ...
- C++ 基于凸包的Delaunay三角网生成算法
Delaunay三角网,写了用半天,调试BUG用了2天……醉了. 基本思路比较简单,但效率并不是很快. 1. 先生成一个凸包: 2. 只考虑凸包上的点,将凸包环切,生成一个三角网,暂时不考虑Delau ...
- C++ 凸包生成算法
由于我的极差记忆力,我打算把这个破玩意先记下来.因为以后会有改动(Delaunay三角网生成算法),我不想把一个好的东西改坏了... 好吧-- 凸包生成算法,: 1.先在指定的宽(width)高(he ...
- RocketMQ msgId生成算法
当我们用RocketMQ发送信息的时候通常都会返回如下信息: SendResult [sendStatus=SEND_OK, msgId=0A42333A0DC818B4AAC246C290FD000 ...
随机推荐
- 【原创】MySQL CPU %sys高的案例分析(二)
后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控. [测试现象一] 启用1000个并发线程的压测程序,保持压测程序持续运行,保持innodb_sp ...
- 美团 R 语言数据运营实战
一.引言 近年来,随着分布式数据处理技术的不断革新,Hive.Spark.Kylin.Impala.Presto 等工具不断推陈出新,对大数据集合的计算和存储成为现实,数据仓库/商业分析部门日益成为各 ...
- [java] java中的初始化顺序
先看程序: package init_cls; class A{ {System.out.println("i am in the class A!");} static { Sy ...
- MySQL Hash索引和B-Tree索引的区别
MySQL Hash索引和B-Tree索引的区别究竟在哪里呢?相信很多人都有这样的疑问,下文对两者的区别进行了详细的分析,供您参考. MySQL Hash索引结构的特殊性,其检索效率非常高,索引的检索 ...
- 用于兼容浏览器的js写法
用于引用的源文件代码: var Common = { getEvent: function() {//ie/ff if (document.all) { return window.event; } ...
- 详解linux中的ps命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- vue-router query和params传参(接收参数),$router、$route的区别
链接:https://segmentfault.com/a/1190000012735168 1.query方式传参和接收参数 传参: this.$router.push({ path:'/xxx' ...
- css3实现卷页效果http://jingyan.baidu.com/article/73c3ce2806aef9e50343d93a.html
css3实现卷页效果 | 浏览:31 | 更新:2015-01-08 13:30 1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 页面上经常会看到鼠标移动上去,对象 ...
- DHT(Distributed Hash Table,分布式哈希表)
DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络. DHT全称叫分布式哈希表(Distributed Hash Table),是 ...
- GIT 详解2
https://segmentfault.com/a/1190000000738398 http://www.cnblogs.com/cposture/p/4903767.html https://g ...