Encontrar la Ecuación de una Línea Dados Dos Puntos en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a encontrar la ecuación de una línea dados dos puntos en programación C. El laboratorio cubre tres pasos principales: calcular la pendiente a partir de dos puntos, calcular la ordenada en el origen utilizando la pendiente y un punto conocido, e imprimir finalmente la ecuación completa de la línea en la forma y = mx + b. Al final de este laboratorio, tendrás una comprensión sólida de cómo trabajar con líneas en geometría analítica usando C.

El laboratorio comienza demostrando cómo calcular la pendiente entre dos puntos utilizando la fórmula (y2 - y1) / (x2 - x1). Luego, muestra cómo determinar la ordenada en el origen reordenando la ecuación y = mx + b para resolver la constante b. Finalmente, se imprime la ecuación completa de la línea, lo que te permite representar la línea en la forma estándar.

Calcular la Pendiente a Partir de Dos Puntos

En este paso, aprenderás a calcular la pendiente entre dos puntos en un programa C. La pendiente representa la inclinación de una línea y se calcula utilizando la fórmula: pendiente = (y2 - y1) / (x2 - x1).

Primero, crea un nuevo archivo C para implementar el cálculo de la pendiente:

cd ~/project
nano slope_calculation.c

Ahora, escribe el siguiente código C para calcular la pendiente:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    // Comprobar si los puntos están en la misma línea vertical
    if (x2 - x1 == 0) {
        printf("Pendiente indefinida (línea vertical)\n");
        return 0;
    }

    // Calcular la pendiente usando la fórmula: (y2 - y1) / (x2 - x1)
    float slope = (y2 - y1) / (x2 - x1);
    return slope;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Primer punto
    float x2 = 5.0, y2 = 7.0;  // Segundo punto

    float slope = calculate_slope(x1, y1, x2, y2);

    printf("Punto 1: (%.1f, %.1f)\n", x1, y1);
    printf("Punto 2: (%.1f, %.1f)\n", x2, y2);
    printf("Pendiente: %.2f\n", slope);

    return 0;
}

Compila y ejecuta el programa:

gcc slope_calculation.c -o slope_calculation
./slope_calculation

Salida de ejemplo:

Punto 1: (2.0, 3.0)
Punto 2: (5.0, 7.0)
Pendiente: 1.33

Desglose del código:

  1. La función calculate_slope() toma cuatro parámetros: x1, y1, x2, y2
  2. Primero comprueba si los puntos forman una línea vertical (x2 - x1 = 0)
  3. Si no es una línea vertical, calcula la pendiente utilizando la fórmula estándar
  4. La función main() demuestra cómo usar el cálculo de la pendiente

La pendiente representa el cambio en la coordenada y dividido por el cambio en la coordenada x entre dos puntos. En este ejemplo, la pendiente es aproximadamente 1.33, lo que significa que por cada unidad de cambio en x, y cambia en 1.33 unidades.

Calcular la Ordenada en el Origen Usando y - mx

En este paso, aprenderás a calcular la ordenada en el origen de una línea utilizando la pendiente y un punto conocido. La ordenada en el origen es el punto donde la línea cruza el eje y, y se puede calcular utilizando la ecuación: b = y - mx.

Continúa trabajando en el mismo directorio de proyecto y modifica el archivo C anterior:

cd ~/project
nano line_equation.c

Escribe el siguiente código C para calcular la ordenada en el origen:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("Pendiente indefinida (línea vertical)\n");
        return 0;
    }
    return (y2 - y1) / (x2 - x1);
}

float calculate_intercept(float x, float y, float slope) {
    // Calcular la ordenada en el origen usando la fórmula: b = y - mx
    float intercept = y - (slope * x);
    return intercept;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Primer punto
    float x2 = 5.0, y2 = 7.0;  // Segundo punto

    float slope = calculate_slope(x1, y1, x2, y2);
    float intercept = calculate_intercept(x1, y1, slope);

    printf("Punto 1: (%.1f, %.1f)\n", x1, y1);
    printf("Punto 2: (%.1f, %.1f)\n", x2, y2);
    printf("Pendiente: %.2f\n", slope);
    printf("Ordenada en el origen: %.2f\n", intercept);

    return 0;
}

Compila y ejecuta el programa:

gcc line_equation.c -o line_equation
./line_equation

Salida de ejemplo:

Punto 1: (2.0, 3.0)
Punto 2: (5.0, 7.0)
Pendiente: 1.33
Ordenada en el origen: 0.33

Desglose del nuevo código:

  1. La función calculate_intercept() toma tres parámetros: x, y y pendiente
  2. Utiliza la fórmula b = y - mx para calcular la ordenada en el origen
  3. En la función main(), usamos la pendiente calculada previamente y un punto para encontrar la ordenada en el origen
  4. La ordenada en el origen representa el punto donde la línea cruza el eje y cuando x = 0

El cálculo muestra que para los puntos dados, la línea tiene una pendiente de 1.33 y una ordenada en el origen de 0.33.

Imprimir la Ecuación de la Línea y = mx + b

En este paso, aprenderás a imprimir la ecuación completa de una línea utilizando la pendiente y la ordenada en el origen calculadas en los pasos anteriores. Modificaremos el programa C existente para mostrar la ecuación de la línea en la forma estándar y = mx + b.

Continúa trabajando en el mismo directorio de proyecto:

cd ~/project
nano line_equation_final.c

Escribe el siguiente código C para imprimir la ecuación de la línea:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("Pendiente indefinida (línea vertical)\n");
        return 0;
    }
    return (y2 - y1) / (x2 - x1);
}

float calculate_intercept(float x, float y, float slope) {
    return y - (slope * x);
}

void print_line_equation(float slope, float intercept) {
    printf("Ecuación de la línea: y = ");

    // Imprimir el coeficiente de la pendiente
    if (slope == 1) {
        printf("x");
    } else if (slope == -1) {
        printf("-x");
    } else if (slope != 0) {
        printf("%.2fx", slope);
    }

    // Imprimir la ordenada en el origen
    if (intercept > 0) {
        printf(" + %.2f", intercept);
    } else if (intercept < 0) {
        printf(" - %.2f", -intercept);
    }

    printf("\n");
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Primer punto
    float x2 = 5.0, y2 = 7.0;  // Segundo punto

    float slope = calculate_slope(x1, y1, x2, y2);
    float intercept = calculate_intercept(x1, y1, slope);

    printf("Punto 1: (%.1f, %.1f)\n", x1, y1);
    printf("Punto 2: (%.1f, %.1f)\n", x2, y2);
    printf("Pendiente: %.2f\n", slope);
    printf("Ordenada en el origen: %.2f\n", intercept);

    print_line_equation(slope, intercept);

    return 0;
}

Compila y ejecuta el programa:

gcc line_equation_final.c -o line_equation_final
./line_equation_final

Salida de ejemplo:

Punto 1: (2.0, 3.0)
Punto 2: (5.0, 7.0)
Pendiente: 1.33
Ordenada en el origen: 0.33
Ecuación de la línea: y = 1.33x + 0.33

Desglose del nuevo código:

  1. La función print_line_equation() maneja diferentes casos de pendiente y ordenada en el origen.
  2. Maneja casos especiales como pendiente de 1, -1 o 0.
  3. Formatea la ecuación con los signos correctos para la ordenada en el origen.
  4. La función proporciona una representación limpia y legible de la ecuación de la línea.

El código demuestra cómo convertir la información de puntos y pendiente en una ecuación lineal estándar.

Resumen

En este laboratorio, aprendiste primero a calcular la pendiente entre dos puntos utilizando la fórmula (y2 - y1) / (x2 - x1). Esto representa la inclinación de la línea. Luego, aprendiste a calcular la ordenada en el origen de la línea utilizando la pendiente y un punto conocido, reordenando la ecuación y = mx + b para resolver b. Finalmente, combinaste la pendiente y la ordenada en el origen para imprimir la ecuación completa de la línea en la forma y = mx + b.