python十进制时间到默认时间

时间:2014-11-03 07:56:44

标签: python time decimal distance

在python 2.7中

尝试获取正确的时间(将小数分钟转换为默认时间HH:MM:SS)

首先我从2个不同的点(六边形图)得到距离,然后将距离乘以13.3(每分钟的单位速度)

import time
import math

from datetime import timedelta

def calculateDistance(x1,y1,x2,y2):
    dist = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
    return dist

dist = calculateDistance(16345,16318,16345,16314)
print dist

minutes = (13.3) * dist
print minutes

time = timedelta(minutes=minutes)
print(time)

结果是: 4.0<<距离

53.2<<以分钟为单位的时间(距离* 13.3)

0:53:12<<<时间,但不正确!

结果应为0:53:20

有什么建议吗?

谢谢

3 个答案:

答案 0 :(得分:0)

时间是正确的,因为0.2分钟是12秒。

答案 1 :(得分:0)

您在基数10中使用时间表示秒。当你将它转换为秒时,你得到53.12(60 * 0.20 = 12秒)是正常的

答案 2 :(得分:0)

提供我认为您真正要求的答案,即:

  

如何计算从A点到B点的“距离”,其中A点   是同心六边形的中心和从A到B的距离   被定义为B所在六边形的apothem *的长度。

     

(* apothem是从中心垂直的长度   六边形到边缘)。

如果这是您的意思,请更新您的问题。使用时间转换的代码没有任何问题,只有距离测量。

答案......

  1. 假设在所有东西下面都有一个沼泽标准的矩形坐标系统。您的x1y1等在该系统中有效。

  2. 当水平线和AB线之间的角度在60到120度之间时,B所在的六边形是一个apothem长度等于B的y坐标(假设A位于B处)起源)。这是基于您在评论中提供的link上的第5篇帖子的信息。

  3. 可能更容易以图形方式看到:B在apothem 10的六边形上,因此从A到B的距离是10.B的y坐标也是10.

    "Hexagonal distance" from centre of hexagon to a point B

    1. 当水平线与AB线之间的角度为某个其他值时,需要旋转坐标以使角度达到60到120之间。然后您可以使用(2)。
    2. 在下面的代码中,dist(x1, y1, x2, y2)应提供以单位为单位的距离。

      import math
      
      def dtor(deg):
          return deg * math.pi/180
      
      def eucl_dist(x1, y1, x2, y2):
          return math.sqrt((x2-x1)**2 + (y2-y1)**2)
      
      def ang(x, y):
          return math.atan2(y,x)
      
      def rot(x,y,ang):
          newx = x*math.cos(ang)-y*math.sin(ang)
          newy = x*math.sin(ang)+y*math.cos(ang)
          return (newx, newy) 
      
      def hexdist(x, y):
          alpha = ang(x, y) # always top-right quadrant
          if dtor(60) <= alpha < dtor(120):
              dist = y
          else:
              if dtor(120) <= alpha < dtor(180):
                  newcoords = rot(x,y,dtor(-60))
              elif dtor(0)<= alpha < dtor(60): 
                  newcoords = rot(x,y,dtor(60)) 
              elif dtor(-60)<= alpha < dtor(0): 
                  newcoords = rot(x,y,dtor(120)) 
              elif dtor(-120)<= alpha < dtor(-60): 
                  newcoords = rot(x,y,dtor(180)) 
              elif dtor(-180)<= alpha < dtor(-120): 
                  newcoords = rot(x,y,dtor(120)) 
              dist = hexdist(newcoords[0],newcoords[1]) 
          return dist 
      
      def dist(x1,y1,x2,y2): 
          return hexdist(x2-x1, y2-y1)
      

      请注意,结果仍然与您的数字不符。

      第一组坐标(16345,16318,16345,16314)产生53.2分钟,这是合乎逻辑的,因为x坐标不会改变。正如其他人所解释的那样,这肯定是53分12秒。

      另一组坐标(在评论中,16345,16318,16348,16301)给出3:46:06,这接近你对3:46:40的估计但不完全相同。这可能是由于坐标的四舍五入吗?

      这绝对是我在这里看到的最奇怪的问题之一!我确实想知道为什么旧的欧几里德度量标准不合适。