文档章节

拼接菱形的冲突判定方法(二)

李勇2
 李勇2
发布于 2015/03/02 09:38
字数 556
阅读 15
收藏 0

上次我尝试 从 坐标轴映射, 或者说是数学分析的方法判定冲突, 但是很难做到, 因为 难以计算点在仿射坐标系的投影, 并且也有一定精度问题


下面采用 离散的方式:

首先对于一个拼接菱形的话, 如果我们假设它的位置是离散化的, 如下图:

只能允许菱形和菱形之间的边是对齐的,

而不能出现有错位的情况


如何避免这种情况呢, 有一种方法:

我们可以把整个背景离散化, 根据单位菱形的宽度的一半sizeX 和高度的一半 把整个背景网格化, 同时要求每个拼接菱形 的包围矩形的左上点 和这个网格点对齐



每个拼接菱形 在水平移动的时候,每次跨动两个单位, 垂直移动的时候, 每次跨动 2个单位, 

而斜着移动的时候,水平跨越1个单位, 垂直跨越1个单位 如图:

为了满足这个条件, 避免出现两个菱形只有一半相交的情况,  首先如何表示坐标;

既然是离散化的我们可以采用两个整数 作为 天然的坐标 x, y

只要保证x  y 的奇偶 性相同(或者时刻相反), 就可以满足上面的移动规律。


我们需要把一个拼接菱形所有的占据的块计算出来, 已知左上角 为 x, y 编号

那么 根据上一篇文章中的结论, 拼接菱形最上面的点的编号是:(sx, sy 是拼接菱形的宽度和高度)

(x+ sy,  y)

for i  < sx

   for j < sy

开始遍历每一个方块, 根据定义, 向右x正方向, 向 下 y正方向

菱形x方向移动, 则initX+1 initY+1

y方向移动, initX-1 initY+1

这样就能得到所有块的编号


采用一个哈希表存储, 键值是x*10000+y   值是一个数组包含所有占用该块的建筑 序列


下一章我们描述如果进行冲突判定




本文转载自:http://blog.csdn.net/liyong748/article/details/7584684

共有 人打赏支持
李勇2

李勇2

粉丝 46
博文 189
码字总数 62209
作品 0
广州
程序员
私信 提问
远离框架,实现自己REST风格的Servlet框架(三)

接上文:远离框架,[实现自己REST风格的Servlet框架(二)][1]一个ajax的url在相对路径下提交会产生拼接后的路径,以下是解决办法,如果有更好的办法希望大家指教,拜谢。 [1]: http://my.o...

lbnan
2013/04/09
0
0
eclipse解决git冲突举例

本地修改了两个文件,提交时提示有冲突,想来应该是没有从远程仓库下载最新代码导致的。通过右击项目 -> Team -> Sychronized WorkSpace,比较本地仓库和远程仓库的异同:   此时没有更好的...

Code辉
07/18
0
0
Python的基础知识之常用类型-字符串

程序猿的共同点:白发、夜猫子、没对象,但是都知道字符串。 20161291231176472.JPG 字符串 Python中字符串有单引号'' 、双引号 "" 三引号 ''' ''',引号是就近匹配原则 单引号:字符串 ' le...

摸着石头过河_崖边树
2017/12/15
0
0
怎么一步步编写简单的PHP的Framework(二十)

上一次我把SqlParser这个类的主要结构讲了一下,这次我就将这个类的函数编写了。 按照上节课的内容,主要的函数有下面几个: private function _where($where){}private function _field($fi...

阳光test
2012/12/22
0
1
kotlin入门(1)----变量

前言 kotlin语言以简洁著称,今天对kotlin语法做一些基本讲解 今天涉及内容有: 变量的声明和使用 变量类型推断与声明 变量取值范围 打印菱形(函数入门) 布尔运算 final变量声明 预热 由于我...

奔跑的佩恩
05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue-router的HTML5 History 模式设置

VUE是当下最火爆的前端框架之一,vue-router是vue项目中几乎都会用到的组件,然而体验一时爽,其实坑不少。本篇经验将详细介绍vue-router的两种mode效果和开发测试环境下的问题,并给出解决方...

peakedness丶
23分钟前
1
0
Dubbo 源码分析 - 服务引用

1. 简介 在上一篇文章中,我详细的分析了服务导出的原理。本篇文章我们趁热打铁,继续分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用...

小刀爱编程
33分钟前
1
0
redis_集群原理

数据分布 数据分布理论 分布式系统数据分区规则:常见的有哈希分区和顺序分区两种。 哈希分区 常见的hash分区规则有:节点取余分区,一致性hash分区,虚拟槽分区. redis数据分区 redis集群功能...

grace_233
33分钟前
0
0
数据库(mysql)业务用户表批量造测试用户密码数据[方案]

博主这几天在配合公司测试做商城商品秒杀场景的压测,由于秒杀需要登录,所以需要为测试创建多个用户密码。此项任务可能在今后还会遇到,先做个笔录。同时,让小伙伴们需要的时候也可以有个参...

em_aaron
49分钟前
2
0
JDK_jvisualvm访问远程weblogic服务

1.首先需要在远程的weblogic的域下面,找到/bin/ setDomainEnv.sh ,需要在此文件下加入如下内容: -Dcom.sun.management.jmxremote.port=1090 ##端口号可以自己指定 -Dcom.sun.management.j...

四年级小学生
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部