Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Punto2D:
- x = 0
- y = 0
- class RAS:
- xAS = 0
- yAS = 0
- base = 0
- altezza = 0
- def xBD(self):
- return self.xAS + self.base
- def yBD(self):
- return self.yAS - self.altezza
- def puntoInterno(punto, rettangolo):
- # Se maggiore del punto x più piccolo e minore del punto x più grande
- inX = punto.x > rettangolo.xAS and punto.x < rettangolo.xBD()
- # Se maggiore del punto y più piccolo e minore del punto y più grande
- inY = punto.y > rettangolo.yBD() and punto.y < rettangolo.yAS
- # Sono dentro se rispetto entrambi
- return inX and inY
- # rettangoli r1, r2, lista punti aP
- def numeroPunti(r1, r2, aP):
- puntiDentro = 0
- for punto in aP:
- # Se sono dentro ALMENO uno dei 2 rettangoli
- if(puntoInterno(punto, r1) or puntoInterno(punto, r2)):
- puntiDentro = puntiDentro + 1
- return puntiDentro
- def main():
- rettangolo_1 = RAS()
- rettangolo_2 = RAS()
- rettangolo_1.xAS = int(input("X alto sinistra (R1): "))
- rettangolo_1.yAS = int(input("Y alto sinistra (R1): "))
- rettangolo_1.base = int(input("Base (R1): "))
- rettangolo_1.altezza = int(input("Altezza (R1): "))
- rettangolo_2.xAS = int(input("X alto sinistra (R2): "))
- rettangolo_2.yAS = int(input("Y alto sinistra (R2): "))
- rettangolo_2.base = int(input("Base (R1): "))
- rettangolo_2.altezza = int(input("Altezza (R1): "))
- numero_punti = int(input("Numero punti: "))
- lista_punti = []
- for i in range(numero_punti):
- punto_temp = Punto2D()
- punto_temp.x = int(input("x: "))
- punto_temp.y = int(input("y: "))
- lista_punti.append(punto_temp)
- numero_punti_interni = numeroPunti(rettangolo_1, rettangolo_2,lista_punti)
- print("Ci sono %d punti interni ad uno dei 2 rettangoli" % numero_punti_interni)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement