我现在被困在试图计算一个捕梦器和它的内圈。基本上你有一个给定半径的外圆,你需要计算它的周长。然后你需要计算一个魔法值,即每一个弓的宽度(在图像中有数字的东西)应该是多少,结果应该是弓不会在起点结束,而是与第一个弓重叠大约半个弓。
以下是我迄今为止所做的尝试:

import math

# in cm
rad = 5.0

perimeter = round(rad * 2.0 * math.pi, 2)
print "perimeter == %f" % perimeter

#bow = "?"
incValue = 0.00001
start = incValue
end = perimeter
while start < end / 10:
  tmp = start * 10
  while tmp < perimeter:
    tmp += start

  if tmp - perimeter == start / 2:
    print "bow could be %s" % str(tmp)

  start += incValue

print "done"

但我找不到一个适合这种约束的值。

最佳答案

我想你可以得到你想要的价值

bow_length = perimeter / (desired_number_of_full_bows + 0.5)

但是如果你真的很想让你的近似系统工作,我认为这条线会引起问题:
if tmp - perimeter == start / 2:

浮点数很少相互比较相等,因此通常检查它们是否非常接近所以你可以改为:
if abs((tmp - perimeter) - (start / 2)) < epsilon:

…其中,epsilon表示您愿意接受的两个数字之间可能存在的最大“摇摆空间”。它大概是0.0001,尽管您可以尝试使用较大或较小的值来查看什么最有效。

关于python - Python:为dreamcatcher计算步骤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30643375/

10-16 22:53