求问:一个圆固定,另一个圆随触摸移动,两个圆贴在一起时就根据触摸坐标绕固定圆运动,不能重叠,有谁有demo或者实现或者相关的算法吗?

xiaor186 2018-01-02 03:15:52
大家好,第一次来这里发帖,多多关照哈。

我这个需求是这样的:

有两个圆形view在屏幕上,一次只能拖动一个圆,就是一个圆固定,另一个圆随触摸坐标移动,不管怎么运动,都要确保两个圆不能重叠;当两个圆贴在一起时,移动的圆就根据触摸坐标在固定圆边上做滑行运动,当手指移出固定圆后,移动的圆就继续跟着手指走。简单点说,就是当手指滑动一个圆,如果遇到另一个圆时,移动的圆会平滑绕过途中的固定圆,然后继续跟随触摸坐标移动。

应该表达清楚了,虽然比较啰唆。麻烦大家提供下算法或者demo。
...全文
467 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaor186 2018-01-02
  • 打赏
  • 举报
回复
引用 3 楼 assky124 的回复:
就是一个几何问题。 我随便想了一个方法,应该有更好的算法。 1.无视碰撞,计算出移动后的点C2‘ 2.判断C2’和不动的圆心C1距离L1,如果L1 < R1 + R2 ,说明碰撞了,重新计算C2',设置为 C1 和C2‘ 延长线上的新点C2’‘,C2’‘到C1的距离为 R1+R2
嗯,你这个是一个朴素的想法,效率上应该够呛。如果手指一直往一个方向直线滑行,倒是可以用,但是如果只滑到半道然后折转个90度往另一个方向滑,移动的圆与目标位置以及滑动的方向和速度比例就乱了。
assky124 2018-01-02
  • 打赏
  • 举报
回复
就是一个几何问题。 我随便想了一个方法,应该有更好的算法。 1.无视碰撞,计算出移动后的点C2‘ 2.判断C2’和不动的圆心C1距离L1,如果L1 < R1 + R2 ,说明碰撞了,重新计算C2',设置为 C1 和C2‘ 延长线上的新点C2’‘,C2’‘到C1的距离为 R1+R2
xiaor186 2018-01-02
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
你算两个圆的圆心距离,如果等于两个半径之和,就是挨上了
这个都没什么,我现在关键是两个圆挨着了之后,移动的圆怎么紧贴这固定的圆绕过去,当然手指有可能在固定圆里面随意转换滑动的方向。
bdmh 2018-01-02
  • 打赏
  • 举报
回复
你算两个圆的圆心距离,如果等于两个半径之和,就是挨上了

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧