四叉树写着玩
Posted 汀洲杜若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四叉树写着玩相关的知识,希望对你有一定的参考价值。
四叉树。闲着没事,写一个玩玩。
在看碰撞检测的时候看到了四叉树。闲着没事,写一个玩玩呗。
除了都含有一个矩形区域外,叶子节点能存几个粒子,而分支结点包含四个子节点,分别代表四个小矩形。结构还是很清晰的: struct QUADRECT boundary; BOOL isLeaf; unionPOINT points[4]; LPQUAD children[4];; 。程序的任务就是:新建一个窗口,在客户区内画个边界,然后往这个矩形里插入新点,每个区域在适当的时候递归划分为4个小矩形,最终使每个矩形里最多只包含4个点。
插入新点P到矩形R内时这样做:
PROC AddNewPoint(P,R)://将点P放到矩形R里 if R.isLeaf==FALSE if P位于左上:AddNewPoint(P,R.children[0]),结束 if P位于右上:AddNewPoint(P,R.children[1]),结束 if P位于左下:AddNewPoint(P,R.children[2]),结束 if P位于右下:AddNewPoint(P,R.children[3]) 结束 找[K]:R.points[K]=NOPOINT //NOPOINT是空标志 if K∈[0..3] then R.points[K]←P, 结束 TEMP ← R.points[0..3] // 暂存 (左上,右上,左下,右下) ← 根据R划分出四个子矩形 R.children[0..3] ← (左上,右上,左下,右下) R.isLeaf ← FALSE for E in TEMP: AddNewPoint(E,R) //安排这些点到子矩形中 AddNewPoint(P,R) //加入新点 END
验证了一下,效果还行吧。
可恶!死去的计算机图形学知识又开始袭击我!
幸好本人数学不太行,我全部防出去了啊~~
php l练习(写着玩)
- 需求:假设今天24号,今天发表的评论显示几小时前发布,23号发布的显示 昨天几点发布的,再往前的就直接显示年月日。
date_default_timezone_set(‘PRC‘); // $create_time = 1561377423; $create_time = 1561219392; // $create_time = 1561132890; //最又那种形式: //获取凌晨时间戳 $start = date(‘Y-m-d‘); $start_time = strtotime($start); //前一天凌晨时间戳 $last_start_time = strtotime(date(‘Y-m-d‘, strtotime(‘-1 day‘))); //数据库中发表评论的时间和凌晨时间对比 if($create_time < $start_time && $create_time > $last_start_time) //说明不是在今天发表的评论 $lastOneDay = date(‘H:i:s‘,$create_time); echo ‘发表于--昨天‘.$lastOneDay; elseif($create_time >= $start_time) $time_diff = time() - $create_time; $time_diff = round($time_diff / 3600); echo ‘publish before‘.$time_diff,‘hours‘; else echo ‘publish ‘.date(‘Y-m-d H:i:s‘,$create_time);
以上是关于四叉树写着玩的主要内容,如果未能解决你的问题,请参考以下文章