java – 在线性路径中从一个点移动一个对象
发布时间:2020-12-15 01:02:01 所属栏目:Java 来源:网络整理
导读:我试图在屏幕上直线移动一个精灵,朝着我触摸屏幕的位置,我做的是在每个循环中更新(),它检查当前精灵的位置xy = =到目的地x,y.如果它没有精灵的x和y …… 事情是..它不是直线移动…因为有些情况下x或y坐标首先到达目的地x或y …我如何改变它以便x和y都相遇目
我试图在屏幕上直线移动一个精灵,朝着我触摸屏幕的位置,我做的是在每个循环中更新(),它检查当前精灵的位置xy = =到目的地x,y.如果它没有精灵的x和y ……
事情是..它不是直线移动…因为有些情况下x或y坐标首先到达目的地x或y …我如何改变它以便x和y都相遇目的地在一起? 我目前的精灵对象的伪代码 destX = destination X destY = destination Y posX = current X posY = current Y public void update(){ if(destX > posX && destY < posY) { posX++; posY--; } else if (destX > posX && destY > posY){ posX++; posY++; } else if(destX < posX && destY > posY) { posX--; posY++; } else if(destX < posX && destY < posY){ posX--; posY--; } else if(destX < posX) posX--; else if(destX > posX) posX++; else if(destY < posY) posY--; else if(destY > posY) posY++; 解决方法
退房:
http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
这个简单的算法将告诉你两点之间的一条线上的每个X,Y坐标.您可以使用此算法计算它需要访问的所有位置,将坐标存储在数组中,并在更新位置时迭代数组. 来自文章: function line(x0,x1,y0,y1) int deltax := x1 - x0 int deltay := y1 - y0 real error := 0 real deltaerr := abs (deltay / deltax) // Assume deltax != 0 (line is not vertical),// note that this division needs to be done in a way that preserves the fractional part int y := y0 for x from x0 to x1 plot(x,y) error := error + deltaerr if error ≥ 0.5 then y := y + 1 error := error - 1.0 这是最原始的版本.本文包含一个更好的通用算法,您应该看一下. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – onBindViewHolder()中的constructor.get
- java – 使用Spring而不将依赖项暴露给客户端应用
- java.sql.Timestamp存储NanoSeconds的方式
- java.io.filenotfoundexception:/home/ljh/.and
- java – jbox2d教程
- 如何清除catalina.out而不禁用进一步的日志记录?
- java – compareTo()实际返回什么?
- var nameValue=$("#"+name+"DelFlag
- Top 10 questions about Java Collections--refe
- java – 删除父manyToOne注释时删除孤立
热点阅读