我有一个飞镖板。如何为不同的部分分配点数?

时间:2015-05-22 04:41:35

标签: math geometry

请不要只为我的问题发布解决方案。对我来说,这就是了解如何做到这一点,并能够向我自己和其他人解释这一点和那一切是如何工作的!

我有一个用乌龟创造的飞镖盘。如果有人真的想看,我可以发布它。

现在,我需要创建一个函数,在棋盘上创建一个随机点来击中,然后合并该点的点值。随机点很简单。但有没有办法可以为AREA分配正确的值而无需逐个命名每个坐标?

3 个答案:

答案 0 :(得分:1)

说你的飞镖盘位于(x0, y0)的中心位置,你在(x, y)处有一个飞镖。您需要将您的飞镖翻译为polar coordinates (phi, r)

r = sqrt((x - x0) ** 2, (y - y0) ** 2)
phi = math.atan2(y, x)

然后确定r是否使你的飞镖位于中心,内圈,中圈或外圈,以及你phi所在圈子的哪个部分。

答案 1 :(得分:0)

你需要的是一个反向变换,给定x,y坐标可以识别它属于哪个区域。

解决这个问题的最好方法是考虑坐标系。飞镖板的面积由其角度和半径指定。您必须将x,y坐标转换为角度和半径,然后确定它所在的区域将是简单的。

最好使用arctan2函数确定角度,该函数可以直接将x,y偏移转换为角度。一旦从x,y中减去中心点,半径就是一个简单的sqrt(x**2 + y**2)

答案 2 :(得分:0)

好的' Pythagoras

enter image description here

让点(x1,y1)成为构造函数中使用的飞镖板的中心。并让(x2,y2)成为您找到的板上的随机点。

使用此公式可以找到距离中心的距离。那你只需要一些if语句

if 0 <= d || d <= 2:
    # area 0
elif d < 2 || 4 <= d:
    # area 1
elif d < 4 || 6 <= d:
    # area 2