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 ...
随机推荐
- 成为IT经理必备的十大能力 不只是技术!
对于一个IT从业者,让你谋得工作的也许是技术能力,但有助于提升职业生涯的却是软技能.步步高升的人都是那些发表文章.在会议上积极发言以及关注客户的员工(程序员).与此同时,通常情况下,企业CIO或多或少 ...
- python中%r和%s的区别
%r用rper()方法处理对象 %s用str()方法处理对象 有些情况下,两者处理的结果是一样的,比如说处理int型对象. 例一: print "I am %d years old.&quo ...
- python opencv3 静态图片检测人脸
git:https://github.com/linyi0604/Computer-Vision # coding:utf-8 import cv2 filename = "../data/ ...
- 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者
python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...
- jQuery学习总结2
六.动画效果 6.1.基本 hide([speed,[fn]])隐藏显示的元素 speed: 三种预定速度之一的字符串("slow","normal", or ...
- SQLSERVER2014集群实战——DNS的坑
近几日生产环境总是偶发的出现数据库连接失败的错误,一开始并未引起重视,因为反馈的人很少,而且应用服务器与数据库服务器都处在同一机房的内网环境,相互之间的访问应该是很稳定的.直到早上有几分钟的时间里出现 ...
- 汇编代码中db,dw,dd的区别
db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1 dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2 dd定义双字类型变量,一个双字数据占4个字节单元,读完一个, ...
- bzoj 3240 矩阵乘法+十进制快速幂
首先,构造出从f[][i]->f[][i+1]的转移矩阵a,和从f[i][m]->f[i+1][1]的转移矩阵b, 那么从f[1][1]转移到f[n][m]就是init*(a^(m-1)* ...
- Python编码规则
1. 命名规则 1.1 变量名.包名.模块名 变量名通常有字母.数字和下划线组成,且首字母必须是字母或下划线,并且不能使用python的保留字:包名.模块名通常用小写字母 1.2 类名.对象名 类名首 ...
- python开发_tkinter_复选菜单
在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ...