解决方法
首先应用变换(y,x)| – > (u,v)=(x,y floor(x / 2)).
现在面部的邻接看起来像
0 1 2 3 0*-*-*-* |\|\|\| 1*-*-*-* |\|\|\| 2*-*-*-*
让点成为(u1,v1)和(u2,v2).令du = u2 – u1和dv = v2 – v1.距离是
if du and dv have the same sign: max(|du|,|dv|),by using the diagonals if du and dv have different signs: |du| + |dv|,because the diagonals are unproductive
在Python中:
def dist(p1,p2): y1,x1 = p1 y2,x2 = p2 du = x2 - x1 dv = (y2 + x2 // 2) - (y1 + x1 // 2) return max(abs(du),abs(dv)) if ((du >= 0 and dv >= 0) or (du < 0 and dv < 0)) else abs(du) + abs(dv)
原文地址:https://www.jb51.cc/c/116148.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。