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

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

这是一道常见的数学题,但通过编程如何实现这个算法呢?如果通过计算直线的表达式,以及圆的表达式,再解方程来计算结果,就变得比较复杂,并且得到的是两个解。仔细观察其实不需要那么复杂的计算公式。首先,线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;

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值