圆与扇形碰撞检测

圆与扇形的碰撞检测,以前用过一种算法是这样的:

首先把扇形视作一个圆,排除圆与扇形圆不相交的情况,

然后如果圆心在扇形两条边中间,则必然相交,

剩下的就判断圆是否与两条边相交。

这种算法用到了点与直线的关系,圆与线段的碰撞检测,圆与圆的碰撞检测等,算法清晰,实现起来比较简单,但只能适用于扇形夹角小于180度的情况。

今天偶尔想到了一种新的算法:

首先把扇形视作一个圆,排除圆与扇形圆不相交的情况,然后根据向量夹角判断圆与扇形是否相交。

设向量p1p2为v1, 向量p1p为v2,向量v2从v1方向绕p1点旋转,当转到超过最大角度时,圆与扇形不再相交,所以只要求出该最大角度即可。

作图可知,当圆与扇形边相切时为最大角度,设向量v1与扇形边的夹角为theta,则 theta = asinf(r / len), 最大角度为 theta + radian * 0.5f.

计算出向量v1, v2的夹角,如果 <= 最大角度,则圆与扇形相交。

这个算法理论上要比前一种算法好,并且扇形夹角可以支持0到360度。

圆与扇形碰撞检测实现代码如下:

偶然间想到的一种算法,网上并没有找到相关文章,代码可能会有bug,如有发现会第一时间修正。

圆与扇形碰撞检测

时间: 2024-08-30 15:54:22

圆与扇形碰撞检测的相关文章

圆与矩形碰撞检测

圆与矩形的碰撞检测,假设矩形中心点v0, 上边中心点v1, 右边中心点v2, 圆心v, 圆半径r, 矩形半宽w1, 矩形半高h1,.v0为矩形的坐标系原点,(v0,v2)为矩形坐标系x轴,(v0,v1)为矩形坐标系y轴,圆心到矩形y轴距离为w2, 圆心到矩形x轴距离为h2,如图所示: 根据图示可以很容易的写出圆与矩形的碰撞检测算法: 圆与矩形碰撞检测

圆与三角形碰撞检测

圆与三角形之间的碰撞检测算法可以综合运用之前写过的基本图形间的碰撞检测算法. 如果圆心在三角形内,则三角形与圆必然相交,转换为判断点在三角形内,参考:判断点是否在三角形内: 如果圆与三角形任一条边相交,则三角形与圆必然相交,转换为圆与线段相交,参考:圆与线段碰撞检测: 算法实现如下: 圆与三角形碰撞检测

cocos2dx基础篇(27)——简单碰撞检测

[唠叨] 本节来讲讲简单的物理碰撞检测(非Box2D物理碰撞):矩形.圆之间的碰撞检测. [简单碰撞检测] 在一些游戏中经常会遇到碰撞检测的情况,如愤怒的小鸟飞出去后,是否与石头发生碰撞. 虽然说有一个Box2D物理碰撞引擎,但是在这里还是需要掌握一下简单的碰撞检测方法. (1)矩形与矩形 (2)圆与圆 (3)矩形与圆 1.矩形与矩形 1.1.提出问题 问题:假设有两个矩形rect1,rect2,判断两矩是否碰撞相交(部分区域重叠). 如下四幅图中,图1.2.4发生碰撞,图3未发生碰撞.    

几何画板是这样构造扇形内部的

几何,就是研究空间结构及性质的一门学科.它面对了各种各样的图形.扇形就是几何学中的一个重要图形.几何画板作为专业绘图工具,不仅可以画扇形还可以画扇形统计图,其中重要的步骤就是构造扇形内部.下面本教程就来给大家分享一下如果用几何画板构造扇形内部? 方法一 利用构造菜单 步骤一 绘制扇形.打开几何画板,选择左侧工具箱“圆工具”,在画板上任意画一个圆O,使用“点工具”在圆上任取两点AB,依次选中点O.B.A,执行“构造”——“圆弧”命令,得到弧AB.构造线段OA.OB,隐藏圆O,得到扇形.  在几何画

Android 开源项目分类汇总

目前包括: Android 开源项目第一篇--个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style.其他Android 开源项目第二篇--工具库篇  包括依赖注入.图片缓存.网络请求.数据库 ORM 工具包.Andro

GDI编程

一.GDI相关概念 1.GDI(Graphics Device Interface):图形设备接口,是一个应用程序与输出设备之间的中介.它提供了一套函数库,这些函数在不同的输出设备上输出图形和文字.一方面,GDI向应用程序提供一个与设备无关的编程环境,另一方面,它又以设备相关的格式和具体的设备打交道. 2.DC (Device Context):设备描述表(设备上下文),是一种Windows数据结构,包括了如线的宽度和颜色.刷子的样式和颜色.字体.剪裁区域等信息.用于表达显示器.打印机等设备.

Android常用酷炫控件(开源项目)github地址汇总

转载一个很牛逼的控件收集贴... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style 等等. 一.ListView android-pulltorefresh一个强大的拉动

CDR笔记

coredraw 基础概念: cdr是矢量图 Ctrl+E :导出(可以保存为其他格式.) 基本绘图工具: 矩形工具: 1.绘制长方形,正方形,圆角矩形: 2.3点矩形工具是绘制带有角度的形状和菱形 绘制圆角矩形是需要更改属性栏中的圆角度.            双击矩形工具可以绘制与当前页面大小一致的页面. 图形的复制:1.先左击按住图形,拖拽,松掉左键的同时右击就可以:2.Ctrl+C/V. 椭圆形工具:1.绘制椭圆,正圆,扇形,弧 2.3点椭圆工具,与3点矩形工具类似 如果想要绘制正圆可按

10款很酷的HTML5动画和实用应用 有源码

10款很酷的HTML5动画和实用应用,这里有菜单.SVG动画.Loading动画,总有你喜欢的,而且,每一款HTML5应用都提供源代码下载,方便大家学习和研究,一起来看看吧. 1.HTML5 SVG 树枝分叉动画特效 今天我们来分享一款基于HTML5和SVG的动画效果,它是一个可以自动分叉的树,动画将以二叉树的形式展开.这三颗SVG树先是用svg的g画笔来定义这些树枝,然后利用javascript来实现动态改变g从而实现树枝的分叉展开动画. 在线演示 源码下载 2.HTML5/CSS3 3D下拉