• Crea una clase llamada Punto con sus dos coordenadas X e Y.
  • Añade un método constructor para crear puntos fácilmente. Si no se reciben una coordenada, su valor será cero.
  • Sobreescribe el método string, para que al imprimir por pantalla un punto aparezca en formato (X,Y)
  • Añade un método llamado cuadrante que indique a qué cuadrante pertenece el punto, teniendo en cuenta que si X == 0 e Y != 0 se sitúa sobre el eje Y, si X != 0 e Y == 0 se sitúa sobre el eje X y si X == 0 e Y == 0 está sobre el origen.
  • Añade un método llamado vector, que tome otro punto y calcule el vector resultante entre los dos puntos.
  • (Optativo) Añade un método llamado distancia, que tome otro punto y calcule la distancia entre los dos puntos y la muestre por pantalla. La fórmula es la siguiente
  • Crea una clase llamada Rectángulo con dos puntos (inicial y final) que formarán la diagonal del rectángulo.
  • Añade un método constructor para crear ambos puntos fácilmente, si no se envían se crearán dos puntos en el origen por defecto.
  • Añade al rectángulo un método llamado base que muestre la base.
  • Añade al rectángulo un método llamado altura que muestre la altura.
  • Añade al rectángulo un método llamado área que muestre el área.

PARA PROBARLO

  • Crea los puntos A(2, 3), B(5,5), C(-3, -1) y D(0,0) e imprimelos por pantalla.
  • Consulta a que cuadrante pertenecen el punto A, C y D.
  • Consulta los vectores AB y BA.
  • (Optativo) Consulta la distancia entre los puntos ‘A y B’ y ‘B y A’.
  • (Optativo) Determina cual de los 3 puntos A, B o C, se encuentra más lejos del origen, punto (0,0).
  • Crea un rectángulo utilizando los puntos A y B.
  • Consulta la base, altura y área del rectángulo.

DESARROLLO:

Para entender un poco mejor el ejercicio estudie un poco sobre conceptos de puntos, vectores sobre el plano cartesiano (Orientada a objetos) 

Conceptos de repaso:

Plano cartesiano:

Representa un espacio bidimensional (en 2 dimensiones), formado por dos rectas perpendiculares, una horizontal y otra vertical que se cortan en un punto. La recta horizontal se denomina eje de las abscisas o eje X, mientras que la vertical recibe el nombre de eje de las ordenadas o simplemente eje Y. En cuanto al punto donde se cortan, se conoce como el punto de origen O.

Algo que vamos a necesitar para el desarrollo del ejercicio es conocer sobre los cuadrantes en los que se divide el plano:

Puntos y coordenadas

El objetivo de todo esto es describir la posición de puntos sobre el plano en forma de coordenadas, que se forman asociando el valor del eje de las X (horizontal) con el valor del eje Y (vertical).

La representación de un punto es sencilla: P(X,Y) dónde X y la Y son la distancia horizontal (izquierda o derecha) y vertical (arriba o abajo) respectivamente, utilizando como referencia el punto de origen (0,0), justo en el centro del plano.

Vectores en el plano

Finalmente, un vector en el plano hace referencia a un segmento orientado, generado a partir de dos puntos distintos.

A efectos prácticos no deja de ser una línea formada desde un punto inicial en dirección a otro punto final, por lo que se entiende que un vector tiene longitud y dirección/sentido.

En esta figura, podemos observar dos puntos A y B que podríamos definir de la siguiente forma:

  • A(x1, y1) => A(2, 3)
  • B(x2, y2) => B(5, 5)

Y el vector se representaría como la diferencia entre las coordendas del segundo punto respecto al primero (el segundo menos el primero):

  • AB = (x2-x1, y2-y1) => (5–2, 5–3) => (3,2)

Lo que en definitiva no deja de ser: 3 a la derecha y 2 arriba.

AHORA SI

  1. Crea una clase llamada Punto con sus dos coordenadas X e Y.
class Punto:
def __init__(self, coordenada_X, coordenada_Y):

2. Añade un método constructor para crear puntos fácilmente. Si no se reciben una coordenada, su valor será cero.

Recordemos: El método constructor es el que llama automáticamente a crear un objeto __init__

class Punto:
def __init__(self, coordenada_X=0, coordenada_Y=0):

self.coordenada_X = coordenada_X
self.coordenada_Y = coordenada_Y

3. Sobreescribe el método string, para que al imprimir por pantalla un punto aparezca en formato (X,Y)

def __str__(self):
return "({}, {})".format(self.coordenada_X, self.coordenada_Y)

4. Añade un método llamado cuadrante que indique a qué cuadrante pertenece el punto, teniendo en cuenta que si X == 0 e Y != 0 se sitúa sobre el eje Y, si X != 0 e Y == 0 se sitúa sobre el eje X y si X == 0 e Y == 0 está sobre el origen.

Para entender esto un poco mejor, grafique 

Y ahora intente poner en código cada cuadrante

def cuadrante(self):
if self.coordenada_X > 0 and self.coordenada_Y > 0:
print("{} pertenece al primer cuadrante".format(self))
elif self.coordenada_X < 0 and self.coordenada_Y > 0:
print("{} pertenece al segundo cuadrante".format(self))
elif self.coordenada_X < 0 and self.coordenada_Y < 0:
print("{} pertenece al tercer cuadrante".format(self))
elif self.coordenada_X > 0 and self.coordenada_Y < 0:
print("{} pertenece al cuarto cuadrante".format(self))
elif self.coordenada_X != 0 and self.coordenada_Y == 0:
print("{} se sitúa sobre el eje X".format(self))
elif self.coordenada_X == 0 and self.coordenada_Y != 0:
print("{} se sitúa sobre el eje Y".format(self))
else:
print("{} se encuentra sobre el origen".format(self))

5. Añade un método llamado vector, que tome otro punto y calcule el vector resultante entre los dos puntos.

def vector(self, p):
print("El vector entre {} y {} es ({}, {})".format(
self, p, p.coordenada_X - self.coordenada_X, p.coordenada_Y - self.coordenada_Y) )

6. (Optativo) Añade un método llamado distancia, que tome otro punto y calcule la distancia entre los dos puntos y la muestre por pantalla. 

def distancia(self, p):
d = math.sqrt( (p.coordenada_X - self.coordenada_X)**2 + (p.coordenada_Y - self.coordenada_Y)**2 )
print("La distancia entre los puntos {} y {} es {}".format(
self, p, d))

7. Crea una clase llamada Rectángulo con dos puntos (inicial y final) que formarán la diagonal del rectángulo.

class Rectangulo:
def __init__(self, pInicial, pFinal):

8. Añade un método constructor para crear ambos puntos fácilmente, si no se envían se crearán dos puntos en el origen por defecto

class Rectangulo:
def __init__(self, pInicial=Punto(), pFinal=Punto()):
self.pInicial = pInicial
self.pFinal = pFinal

9. Añade al rectángulo un método llamado base que muestre la base.

def base(self):
print("La base del rectángulo es {}".format( self.vBase ) )

10. Añade al rectángulo un método llamado altura que muestre la altura.

def altura(self):
print("La altura del rectángulo es {}".format( self.vAltura ) )

11. Añade al rectángulo un método llamado área que muestre el área.

def area(self):
print("El área del rectángulo es {}".format( self.vArea ) )

Recordemos que los puntos 9,10 y 11 no funcionarán si no agregamos los atributos dentro del __init__

Quedando así:

self.vBase = abs(self.pFinal.x - self.pInicial.x)
self.vAltura = abs(self.pFinal.y - self.pInicial.y)
self.vArea = self.vBase * self.vAltura

Y el código final organizado, para que tengas más claridad

class Rectangulo:
def __init__(self, pInicial=Punto(), pFinal=Punto()):
self.pInicial = pInicial
self.pFinal = pFinal
# Hago los cálculos, pero no llamo los atributos igual 
# que los métodos porque sino podríamos sobreescribirlos
self.vBase = abs(self.pFinal.x - self.pInicial.x)
self.vAltura = abs(self.pFinal.y - self.pInicial.y)
self.vArea = self.vBase * self.vAltura
def base(self):
print("La base del rectángulo es {}".format( self.vBase ) )
def altura(self):
print("La altura del rectángulo es {}".format( self.vAltura ) )
def area(self):
print("El área del rectángulo es {}".format( self.vArea ) )

Para verificar:

A = Punto(2,3)
B = Punto(5,5)
C = Punto(-3, -1)
D = Punto(0,0)
A.cuadrante()
C.cuadrante()
D.cuadrante()
A.vector(B)
B.vector(A)
A.distancia(B)
B.distancia(A)
A.distancia(D)
B.distancia(D)
C.distancia(D)
R = Rectangulo(A, B)
R.base()
R.altura()
R.area()

RESULTADO:

(2, 3) pertenece al primer cuadrante
(-3, -1) pertenece al tercer cuadrante
(0, 0) se encuentra sobre el origen
El vector entre (2, 3) y (5, 5) es (3, 2)
El vector entre (5, 5) y (2, 3) es (-3, -2)
La distancia entre los puntos (2, 3) y (5, 5) es 3.605551275463989
La distancia entre los puntos (5, 5) y (2, 3) es 3.605551275463989
La distancia entre los puntos (2, 3) y (0, 0) es 3.605551275463989
La distancia entre los puntos (5, 5) y (0, 0) es 7.0710678118654755
La distancia entre los puntos (-3, -1) y (0, 0) es 3.1622776601683795
La base del rectángulo es 3
La altura del rectángulo es 2
El área del rectángulo es 6

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *