手机游戏绘制触屏虚拟摇杆的几何算法

几何学的图形计算经常应用到游戏或其它复杂的UI的开发中,下面介绍的是开发游戏中所用到的计算已知直线与圆交点的坐标。·如图,当某个物体活动范围仅限于圆o的区域范围内,可以拖动它移动,即在圆的区域内物体的坐标跟着a移动,而当拖动点a离开圆的区域后,物体只能移动到圆的边界上,并且保持着a与o的直线上,于是便有了以下一道数学题:求线ao与圆o的交点 e(xe,ye)?

手机游戏绘制触屏虚拟摇杆的几何算法_第1张图片

这是一道常见的数学题,但通过编程如何实现这个算法呢?如果通过计算直线的表达式,以及圆的表达式,再解方程来计算结果,就变得比较复杂,并且得到的是两个解。仔细观察其实不需要那么复杂的计算公式。首先,线ao其实是向量oa,只有一个方向,并且与圆只有一个交点。因此可以通过直角三角形的原理来分析。即有关系式 r / oa == (xe - xo) / (xa - xo)

通过转化后,用Java编写如下:

float xo = 100f;
float yo = 100f;
float r = 50f;	//radius
float oa = (float) Math.sqrt((xa - xo) * (xa - xo) + (ya - yo) * (ya - yo));
float xe = xo + (xa - xo) * r / oa;
float ye = yo + (ya - yo) * r / oa;

于是,触屏手机游戏中常见的控制方向的圆盘,绘制圆盘中的滚轮的关键算法便可通过该公式实现。
 

你可能感兴趣的:(手机游戏绘制触屏虚拟摇杆的几何算法)