Python区域的地图坐标



有点棘手的问题,但我希望您能帮助我。我已经收到了一个编码任务,并且在解决方案方面遇到了一些困难。

情况是:假设我在坐标中有武器(x,y);当射击时,声音损坏功能会启动,这会影响人们与枪支的近距离。我需要编写一个可以计算的函数 - 根据被射击的口径 - 是否存在于危险区域中的人(一个人的实例)。枪中的声音从45度角散开,并且半径是根据要发射的口径变化的(但我预先确定的,所以让我们假设半径等于5)。我的解释可能有点混乱,所以我会尝试组织一点以使事情变得更加清晰:我需要写一个枪支时称为枪支的功能。该功能需要检查一个人是否处于危险的近距离距离枪口,好像他是被枪击一样,他会受到听力的损害(通过单独的,预先制作的功能)。损坏按照该人与枪支的相对距离进行缩放。该区域以圆锥体测量,该锥体以45度角以随机半径为45度。

我对如何解决这个问题有些困惑。我已经写了一个函数来计算每个"人"的坐标。但是我需要一种方法来绘制撞击区域的所有坐标,以便我可以a)告诉该人是否应受到声音损害功能的影响,b)告诉他他被击中多么厉害(因为损害会更糟如果他站在距离枪1米的地方,而不是4米之遥)。

也许我正在以错误的方式解决这个问题 - 我想学习并乐于聆听任何建议。我绝对不是专家,很想以最有效的方式获取有关如何解决此问题的一些指导。

编辑:我到目前为止写的代码如下:

class Soldier(object):
def __init__(self):
    # Soldier ID is a randomly generated string including of 3 numbers.
    ID = str(int(random.random() * 1000))
    self.ID = ID
    # soldier's position is set by default to [0,0]
    self.position = [0,0]
def getID(self):
    # gets the ID number (string) of the instance
    print (self.ID)
def setPosition(self, position):
    # sets the position (a list) of the instance
    self.position = position
def getPosition(self):
    # gets the position (list) of the instance
    print(self.position)
def randomize_soldier_position(soldiersList):
"""
Gets as input a list of instances of soldiers, and assigns a random location to each one of the instances.
"""
for i in soldiersList:
    # for the values of X and Y we generate a random floating point number extending to 3 digits. 
    X = round((random.random() * 100), 3)
    Y = round((random.random()* 100), 3)
    # sets the [X,Y] values for each of the instances.
    i.setPosition([X,Y])
    print(i.position)

我没有触摸我需要写的实际功能的代码,因为我不知道从哪里开始...

预先感谢!:)

假设您有欧几里得2D坐标网格和角度参考

枪支应该具有X,Y位置和一个相对于全局坐标轴指向的角度
如果枪有方向向量而不是角度,只需应用math.atan2(x, y),它将返回弧度

中的角度

从人的全局x,y位置减去枪支x,y,用 atan2计算角度,与pythagoras math.hypot(x, y)

计算角度

然后仅测试该人是否在角度范围内和距离范围内

最新更新