用户: 密码: 答案:   我要注册   忘记密码

加入收藏  设为首页

开发文档

CNJM首页

业界新闻

手机软件

终端应用

资源下载

EclipseME

CNJM论坛

                 

频道列表

J2ME开发 176篇
服务器端开发 33篇
JAVA语言 71篇
游戏与图形 101篇
WindowsMobile开发 6篇
Symbian开发 61篇
Brew开发 36篇
其它开发平台 6篇

热点文章

四种JAD生成器之比... 53944次
手机JAVA入门讲座 32751次
手机游戏毕业设计论文 29569次
各厂商SDK和模拟器... 20319次
Java手机机型对应表 19252次
一个关于CMNET和CM... 18456次
2005年毕业论文---... 16713次
手机JAVA MIDP2.0讲座 16405次
JAVA手机性能参数大全 14541次
手机JAVA中级讲座 12653次
J2ME程序开发新手...  11379次
我的第一个Java手...  11188次

文章搜索

搜 索
按 照
频 道
  
J2ME中的基础碰撞检测算法浅析
编辑:rocks    审核:rocks    文章来源:CSDN博客
关键词:无    发表日期:2007-05-16 22:02:41    浏览次数:3261次
本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>
来自:http://www.cnjm.net/tech/article4059.html

[转载于CSDN博客]
作者:陈跃峰

在游戏中,经常需要进行碰撞检测的实现,例如判断前面是否有障碍以及判断子弹是否击中飞机,都是检测两个物体是否发生碰撞,然后根据检测的结果做出不同的处理。
JAVA手机网[www.cnjm.net]

进行碰撞检测的物体可能有些的形状和复杂,这些需要进行组合碰撞检测,就是将复杂的物体处理成一个一个的基本形状的组合,然后分别进行不同的检测。

下面简单介绍一下两种最基本的形状进行碰撞的时候进行的处理。

1、矩形和矩形进行碰撞

一般规则的物体碰撞都可以处理成矩形碰撞,实现的原理就是检测两个矩形是否重叠。我们假设矩形1的参数是:左上角的坐标是(x1,y1),宽度是w1,高度是h1;矩形2的参数是:左上角的坐标是(x2,y2),宽度是w2,高度是h2。

在检测时,数学上可以处理成比较中心点的坐标在x和y方向上的距离和宽度的关系。即两个矩形中心点在x方向的距离的绝对值小于等于矩形宽度和的二分之一,同时y方向的距离的绝对值小于等于矩形高度和的二分之一。下面是数学表达式:

x方向:| (x1 + w1 / 2) – (x2 + w2/2) | < |(w1 + w2) / 2|

y方向:| (y1 + h1 / 2) – (y2 + h2/2) | < |(h1 + h2) / 2|

JAVA手机网[www.cnjm.net]
在程序中,只需要将上面的条件转换成代码就可以实现了。

但是矩形碰撞只是一种比较粗糙的碰撞检测方法,因为很多实际的物体可能不是一个规则的矩形。

下面介绍一下圆形碰撞。

2、圆形和圆形的碰撞

圆形和圆形的碰撞应该说是一种最简单的碰撞,因为在数学上对于两个圆形是否发生重叠,有计算两个圆心之间的距离的公式。那么条件就变为:计算两个圆心之间的距离是否小于两个圆的半径和。

假设圆形1的左上角坐标是(x1,y1),半径是r1,圆形2的左上角的坐标是(x2,y2),半径是r2。

因为MIDP1.0中没有浮点数,而且浮点数的运算比较慢,所以我们将条件做一个简单的变换:对于条件的两边都进行平方,这样就去掉了开方的运算步骤。

下面是数学表达式:

(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2

在程序中,只需要将上面的条件转换成代码就可以了。

上面介绍的只是最基本的碰撞检测算法的实现,而实际的编程过程中遇到的碰撞检测问题要比这些复杂很多,还需要其他形式的检测,还需要进行更加深入的学习。
来自:http://www.cnjm.net/tech/article4059.html

相关文章
   暂无相关文章
最新评论
网站简介  |  关于版权  |  广告服务  |  网站地图  |  联系我们
Copyright © www.CNJM.net, All rights reserved
中国JAVA手机网 版权所有
ICP备案:京ICP备041452