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 ...
随机推荐
- 002 python语法入门
一:基本数据类型知识点 1.基本数据类型 Number 数字 String 字符串 Bool 布尔 List 列表 Tuple 元组 Set 集合 Dictionary字典 2.分类 )标准的pyth ...
- Yii2之控制台命令篇(console)
控制台命令 Yii 中有一个拥有丰富功能的控制台,它们主要用于创建网站后台处理的任务.在项目根目录下执行相关操作,有意思的事,可以通过 yii 自带的功能,列出当前已有的命令. 1.查看当前项目控制台 ...
- centos6 yum 安装nginx 不成功解决办法
转自 http://wlheihei.com/view/64 [root@51ou.com yum.repos.d]# yum install nginxLoaded plugins: fastes ...
- Emacs 编辑verilog 学习日记
终于开始写博客啦.以前一直打算写.由于工作忙一次次延期了.写博客的好处不必多说. 以前有一些学习心得总是用一个word,或者note记录一些.时间久了都不知道弄哪儿去了.. 从今天开始记录学习中 ...
- CSUOJ 1895 Apache is late again
Description Apache is a student of CSU. There is a math class every Sunday morning, but he is a very ...
- mysql数据库查询表中相邻数据的差值
select a.time ,a.sum - b.sum sum,a.time,b.time from ( rownum,) t order by time) a, ( rownum ,) t ORD ...
- Java Jxl
Java Jxl (转自http://blog.csdn.net/laliocat/article/details/50580020) 1 开发调研1.1 需求描述MS的电子表格(Excel)是Off ...
- [PA2014]Pakowanie
[PA2014]Pakowanie 题目大意: \(n(n\le24)\)个物品和\(m(m\le100)\)个背包,每个物体有一个体积\(a_i\),每个背包有一个容量\(c_i\).问装完所有物品 ...
- ZOJ 1940 Dungeon Master 三维BFS
Dungeon Master Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Desc ...
- Mac安装homebrew安装到指定目录
第一种直接安装在/usr/local目录下 mac 打开终端输入 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr ...