2019年12月14日

判断点是否在多边形内

摘要: 对于这个问题,一个最常用的算法就是,从这个点作任意射线,如果与多边形的各条边的交点是奇数个,则点在多边形内,是偶数个则表示在多边形外 以上,我不准备画各种奇形怪状的图形,然后画各种方向的射线来举证,只需要想像,你面前有一个封闭的,边缘可以任意的区域,你如果要在区域外,则进与出必须对应,有进必有出,每 阅读全文

posted @ 2019-12-14 23:10 凄夜 阅读(547) 评论(0) 推荐(0) 编辑

射线与AABB盒相交检测算法(Slabs method)

摘要: 一. 射线与平面求交 设射线的起始点为P0 ,射线方向向量为,则射线的任一一点的方程可表示为 设平面的法线向量为,则平面上任一点的坐标P满足 意为,坐标原点与平面上任一点的向量在上的投影长度为常量d. 由以上射线和平面的方程可知,交点处坐标满足 解得 二.射线相对包围盒的近面与远面 AABB盒一共有 阅读全文

posted @ 2019-12-14 21:13 凄夜 阅读(3862) 评论(0) 推荐(2) 编辑

2019年7月4日

mongodb开启安全认证后无法启动

摘要: 今天碰到一个奇怪的问题,mongodbd开启安全认证,在/etc/mongod.conf里面添加 security: authorization:enabled 后,service mongod start总是启动不了mongodb,而且没有任何报错,没有输出任何Log,但是通过mongod -au 阅读全文

posted @ 2019-07-04 01:11 凄夜 阅读(2887) 评论(0) 推荐(2) 编辑

2019年6月14日

Golang解析CSV

摘要: Golang的csv库支持解析csv文件,导入encoding/csv就可以用了,但本身不太好用,特别是当CSV表列的顺序被打乱后,还得改动代码里面对应列在解析出的数据的索引,所以就这两个问题,简单封装了下,使之用起来更加方便,代码如下: 使用示例: 有一张Award表,结构如下: 定义一个结构体来 阅读全文

posted @ 2019-06-14 02:16 凄夜 阅读(7633) 评论(0) 推荐(0) 编辑

2019年6月12日

mongodb插入文档时不传ObjectId

摘要: 以上结构体,在通过此结构体对象作为参数传入Insert插入文档时,必须通过bson.NewObjectId创建ID,如下代码所示: 如果不想自己调用bson.NewObjectId,想让mongodb自动生成ID怎么办呢?有两种办法 1.使用bson.M构建 在使用mongodb插入文档传参的时候, 阅读全文

posted @ 2019-06-12 11:38 凄夜 阅读(1575) 评论(0) 推荐(0) 编辑

2018年5月12日

红黑树(二):删除

摘要: 红黑树的删除操作,较之插入更为复杂,因为红黑树也是二叉搜索树,所以红黑树的删除流程跟二叉搜索树一样,先找到要删除的目标节点T,如果T没有子节点,则将T直接删除,如果T有一个子节点,则将此子节点替换到T的位置,然后删除T,否则如果有两个子节点,则在T的子树中寻找后继节点X,然后将X的值覆盖到T结点,然 阅读全文

posted @ 2018-05-12 21:49 凄夜 阅读(732) 评论(0) 推荐(0) 编辑

红黑树(一):插入

摘要: 红黑树跟AVL树一样,也是平衡二叉树,其查找、增加、删除效率为O(lgN),红黑树使用非常广泛,C++STL里面的map,set都是用红黑树实现的。 以下就是一棵红黑树: 《算法导论》上定义红黑树需满足以下五个性质: 1.每个结点是黑色或是红色。 2.根结点是黑色。 3.所有叶子节点是黑色(也就是上 阅读全文

posted @ 2018-05-12 00:45 凄夜 阅读(475) 评论(0) 推荐(0) 编辑

2018年5月4日

AVL树

摘要: 二叉查找树在极端情况下,会退化为链表,比如一个排好序的数组,构建成二叉树后,就是一颗全部左倾或右倾的树,这时候查找的时间为O(N),AVL树是带有平衡条件的二叉查找树,它的每个节点左子树和右子树的高度最多相差1,它会保证树的高度为O(logN),所以在查找时,能保证最坏情况下时间为O(logN),A 阅读全文

posted @ 2018-05-04 22:39 凄夜 阅读(235) 评论(0) 推荐(0) 编辑

2018年5月3日

二叉查找树

摘要: 二叉树的定义是一棵树的每个节点最多只有两个儿子,使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中的关键字比X中的小,而它的右子树则比X中的关键字大。 二叉树节点可以定义成如下形式: 二叉树非常简单,下面再介绍几个基本的操作。 一、插入 插入一个关键字Key从根节点开始,如果Key比 阅读全文

posted @ 2018-05-03 22:17 凄夜 阅读(153) 评论(0) 推荐(0) 编辑

2018年4月28日

堆排序

摘要: 先介绍下堆这种结构,堆就是一颗完全二叉树,除了树的最底层,该树是完全充满的。堆这种结构用数组来实现,二叉树中的每一个节点,都对应数组中的一个元素,一个父节点可以根据自身节点在数组中的索引,直接算出子节点在数组中的索引,要注意在访问子节点的时候要判断子节点的索引是否越界。 (图片截取自《算法导论》) 阅读全文

posted @ 2018-04-28 14:30 凄夜 阅读(251) 评论(0) 推荐(0) 编辑

导航