Geometría usando Números Complejos <std::complex> en C++ | Serie 1

Al resolver problemas geométricos, lleva mucho tiempo definir la clase de punto para especificar un punto en el plano 2D o el plano euclidiano. Por lo tanto, este artículo especifica una forma más rápida e inteligente de implementar lo mismo utilizando una clase compleja de STL en C++.
Antes de la implementación, es esencial comprender qué son los números complejos y cómo pueden ayudar a representar un punto en un plano 2D.

¿Qué es el número complejo?

Los números complejos son de la forma

a + bi
where, a is the real part
b is the imaginary part

A point and Complex Number in Argand Plane
As we can see from the diagram, a complex number can be represented on the 2D Plane. Thus for a point (a, b), we can have a complex number a + bi where a is the X-coordinate and b is the Y-coordinate.
Important Note: i2 = -1

  • Forma polar de número complejo: una forma alternativa de visualizar y representar números complejos es la forma polar. La forma polar usa la magnitud del número complejo en forma de ‘r’ y la dirección del número complejo en forma de ‘θ’.
    Un número complejo con estos parámetros es entonces r(cosθ + isinθ).
    Nota: θ se considera en radianes.

    re = r(cosθ + isinθ)

    Polar De Número Complejo

  • Conjugado de un Número Complejo:
    Si z = a + bi, entonces el conjugado de z es z’ = a – bi.
    Si z = (r, θ), entonces el conjugado de z es z’ = (r, -θ) El
    conjugado de un número complejo se puede usar para lograr ciertas propiedades especiales como se muestra a continuación:
    • z + z’ = (a + bi) + (a – bi) = 2a
      Parte real = (número complejo + conjugado)/2
    • z – z’ = (a + bi) – (a – bi) = 2b
      Parte imaginaria = (número complejo – conjugado)/2
    • z*z’ = (a + bi) * (a – bi) = a2 – b2i2 + 2abi – 2abi = a2 + b2
      Magnitud 2 = número complejo * conjugado

¿Cómo usar los números complejos?

Consideremos el punto P (a, b) en el Plano Euclidiano. Ahora hacemos un número complejo z = a + bi y sacamos la equivalencia entre los dos. Algunos atributos asociados con P son:

  1. La coordenada X de P: simplemente podemos decir que la coordenada X = a. Así, devuelve la parte real de z.
  2. La coordenada Y de P: simplemente podemos decir la coordenada Y = b. Así, devuelve la parte imaginaria de z.
  3. La distancia de P desde el origen (0, 0): Distancia de P desde el origen = sqrt((a-0) 2 + (b-0) 2 ) = sqrt(a 2 + b 2 )
    Magnitud de z = sqrt(a 2 + b 2 )
    Por lo tanto, devuelve la magnitud de la z.
  4. El ángulo formado por OP desde el eje X donde O es el origen: Ángulo formado por OP desde el eje X = tan -1 (b/a)
    Argumento, es decir, el parámetro theta de z se puede derivar de la siguiente manera:
    rcosθ = a ….. (i)
    rsinθ = b ….. (ii)
    Dividiendo (ii) por (i)
    tanθ = (b/a)
    θ = tan -1 (b/a)
    Así, devuelve el argumento de z.
  5. Rotación de P sobre el origen: la rotación de un punto sobre el origen no cambiará su distancia desde el origen, pero solo cambiará el ángulo que PO forma con el eje X.
    Entonces, la equivalencia de rotación se puede entender mejor si consideramos el número complejo en forma polar.
    z = re
    Deje que el punto sea rotado por ‘α’ en la dirección contraria a las manecillas del reloj.
    El punto ahora se convierte en re i(θ + α) = re * 1e = z * 1e
    Por lo tanto, devuelve z * polar(1, α).
    donde, polar(r, θ) es la representación general.

Consideremos los puntos P (a, b) y Q (c, d) en el Plano Euclidiano. Estos pueden considerarse básicamente como vectores con la longitud igual a la distancia desde el origen y la dirección como se hace con el eje X. (Muchos atributos se pueden entender mejor si los puntos se toman como vectores, que es una de las ideas clave en varios algoritmos geométricos).
Ahora consideremos que z1 = a + bi y z2 = c + di.
Algunos atributos asociados con P y Q son:

  1. Suma de vectores:
    (a, b) + (c, d) = (a + c, b + d)
    z1 + z2 = (a + bi) + (c + di) = (a + c) + (b + d)i

    Por lo tanto, devuelve z1 + z2.

  2. Resta de vectores: simplemente devuelve
    z1 – z2
  3. Pendiente de la línea PQ: El argumento de
    z2 – z1 gives the angle of elevation

    Entonces, la pendiente de la línea PQ está dada por la tangente del ángulo de elevación.
    Por lo tanto, devuelva la tangente del argumento de z2 – z1.

  4. Distancia euclidiana:
    Distance of P from Q = sqrt((a-c)2 + (b-d)2)
    Magnitude of z1 – z2 = sqrt((a-c)2 + (b-d)2)

    Por lo tanto, devuelve la magnitud de z1 – z2.

    An important construction which will be used frequently in geometric problems is z1’z2.
    Let’s compute this:
    z1’ = a – bi
    z1’z2 = (a – bi)*(c + di) = ac + adi – bci + bd = (ac + bd) + (ad – bc)i
    
  5. Producto escalar: El producto escalar de los vectores P y Q es
    (ac + bd)

    Esto es lo mismo que la parte real de la construcción anterior. Así, devuelve la parte real de z1’z2.

  6. Producto cruzado: La magnitud del producto cruzado para los vectores P y Q es
    (ad – bc)

    Esto es lo mismo que la parte imaginaria de la construcción anterior. Así, devuelve la parte imaginaria de z1’z2.

La parte de implementación para la clase compleja se cubre en el Conjunto 2

Este artículo es una contribución de Aanya Jindal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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