Zona de cerca

  1. Dissenya la funció distancia() que donats quatre nombres que representen les coordenades de dos punts (x1,y1) i (x2,y2), retorni la distància entre aquests dos punts.

    Desa la funció al fitxer zona_de_cerca.py. La funció ha de passar el següent doctest:

    >>> d = distancia(0, 0, 0, 1)
    >>> round(d, 4)
    1.0
    >>> d = distancia(0, 0, -1, 0)
    >>> round(d, 4)
    1.0
    >>> d = distancia(0, 0, 1, 1)
    >>> round(d, 4)
    1.4142
    >>> d = distancia(7, 5, 4, 1)
    >>> round(d, 4)
    5.0
    >>> d = distancia(-6, -5.78, 3, -4.27)
    >>> round(d, 4)
    9.1258
    

    Nota

    Pots descarregar el fitxer amb tests zona_de_cerca1.txt

  2. Dissenya la funció area_circumferencia() que donat el radi d’una circumferència, retorna l’àrea.

    Desa la funció al mateix fitxer de l’apartat anterior zona_de_cerca.py. La funció ha de passar el següent doctest:

    >>> a = area_circumferencia(1)
    >>> round(a, 4)
    3.1416
    >>> a = area_circumferencia(12.45)
    >>> round(a, 4)
    486.9547
    >>> a = area_circumferencia(0.09)
    >>> round(a, 4)
    0.0254
    >>> a = area_circumferencia(7)
    >>> round(a, 4)
    153.938
    

    Nota

    Pots descarregar el fitxer amb tests zona_de_cerca2.txt

  3. Un equip de localització de persones perdudes a la muntanya necessita una aplicació per determinar l’área de una zona concreta. En ocasions disposen de dos punts de referència per fixar un àrea circular de cerca, un que utilitzen com a centre i un altre que consideren que es troba al perímetre.

    Dissenya la funció calcula_area_cerca() que donades les coordenades x i y del centre de la zona de cerca i les coordenades x i y d’un punt del perímetre d’aquesta àrea, retorna l’àrea de la zona de cerca. Aquesta funció ha de cridar les dues funcions dels apartats anteriors.

    Desa la funció al mateix fitxer de l’apartat anterior zona_de_cerca.py. La funció ha de passar el següent doctest:

    >>> a = calcula_area_cerca(0, 0, 1, 0)
    >>> round(a, 4)
    3.1416
    >>> a = calcula_area_cerca(-1, 34.6, 0, 0)
    >>> round(a, 4)
    3764.1307
    >>> a = calcula_area_cerca(20, 20, 1, 1)
    >>> round(a, 4)
    2268.2299
    >>> a = calcula_area_cerca(3, 3, 1, 1)
    >>> round(a, 4)
    25.1327
    

    Nota

    Pots descarregar el fitxer amb tests zona_de_cerca3.txt

  4. Una vegada fixada l’area de cerca, l’equip de localització col·loca patrulles al seu perímetre. S’ha de saber si una determinada patrulla es troba situada al perímetre de la zona de cerca, amb un certa tolerància.

    Dissenya la funció al_perimetre() que donades les coordenades x i y del centre de la zona de cerca, el seu radi, les coordenades x i y d’un altre punt, i una tolerància, retorna True si el segon punt es troba situat al perímetre de l’area de cerca amb aquest marge de desviació, i False altrament. Aquesta funció ha de cridar a la funció distancia() de l’apartat 1.

    Avís

    Recorda que la comparació de la igualtat de dos reals r1 i r2 no es fa amb l’operador == sino que s’ha de tenir en compte una tolerància epsilon: abs(r1-r2) < epsilon

    Desa la funció al mateix fitxer de l’apartat anterior zona_de_cerca.py. La funció ha de passar el següent doctest:

    >>> al_perimetre(0, 0, 1, 1, 0, 0.01)
    True
    >>> al_perimetre(0, 0, 1, 1, 1, 0.1)
    False
    >>> al_perimetre(1, 1, 1, 0, 0.99, 0.1)
    True
    >>> al_perimetre(2.6, 2.79, 2.037, 0.68, 2.11, 0.01)
    True
    >>> al_perimetre(2.6, 2.79, 2.037, 0.70, 2.12, 0.01)
    False
    

    Nota

    Pots descarregar el fitxer amb tests zona_de_cerca4.txt

Solució

Disposeu de solucions al fitxer zona_de_cerca.py