Нахождение уравнения прямой по двум точкам на C

CBeginner
Практиковаться сейчас

Введение

В этом лабораторном практикуме вы научитесь находить уравнение прямой, заданной двумя точками, на языке программирования C. Практикум охватывает три основных этапа: вычисление наклона прямой по двум точкам, вычисление y-пересечения с использованием наклона и известной точки и, наконец, вывод полного уравнения прямой в форме y = mx + b. К концу этого практикума вы получите глубокое понимание работы с прямыми в аналитической геометрии с использованием языка C.

Практикум начинается с демонстрации вычисления наклона прямой между двумя точками с использованием формулы (y2 - y1) / (x2 - x1). Затем показано, как определить y-пересечение, перегруппировав уравнение y = mx + b для решения относительно константы b. Наконец, выводится полное уравнение прямой, позволяющее представить прямую в стандартной форме.

Вычисление наклона по двум точкам

В этом шаге вы узнаете, как вычислить наклон прямой, проходящей через две точки, в программе на языке C. Наклон представляет собой крутизну прямой и вычисляется по формуле: наклон = (y2 - y1) / (x2 - x1).

Сначала создайте новый файл C для реализации вычисления наклона:

cd ~/project
nano slope_calculation.c

Теперь напишите следующий код C для вычисления наклона:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    // Проверка, лежат ли точки на одной вертикальной прямой
    if (x2 - x1 == 0) {
        printf("Наклон неопределён (вертикальная прямая)\n");
        return 0;
    }

    // Вычисление наклона по формуле: (y2 - y1) / (x2 - x1)
    float slope = (y2 - y1) / (x2 - x1);
    return slope;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Первая точка
    float x2 = 5.0, y2 = 7.0;  // Вторая точка

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

    printf("Точка 1: (%.1f, %.1f)\n", x1, y1);
    printf("Точка 2: (%.1f, %.1f)\n", x2, y2);
    printf("Наклон: %.2f\n", slope);

    return 0;
}

Компилируйте и запустите программу:

gcc slope_calculation.c -o slope_calculation
./slope_calculation

Пример вывода:

Точка 1: (2.0, 3.0)
Точка 2: (5.0, 7.0)
Наклон: 1.33

Давайте разберём код:

  1. Функция calculate_slope() принимает четыре параметра: x1, y1, x2, y2
  2. Она сначала проверяет, образуют ли точки вертикальную прямую (x2 - x1 = 0)
  3. Если это не вертикальная прямая, она вычисляет наклон по стандартной формуле
  4. Функция main() демонстрирует, как использовать вычисление наклона

Наклон представляет собой изменение координаты y, делённое на изменение координаты x между двумя точками. В этом примере наклон приблизительно равен 1.33, что означает, что на каждое изменение x на 1 единицу, y изменяется на 1.33 единицы.

Вычисление отрезка на оси Y, используя y - mx

В этом шаге вы узнаете, как вычислить отрезок на оси Y прямой, используя наклон и известную точку. Отрезок на оси Y — это точка, где прямая пересекает ось Y, и его можно вычислить, используя уравнение: b = y - mx.

Продолжайте работать в той же директории проекта и измените предыдущий файл C:

cd ~/project
nano line_equation.c

Напишите следующий код C для вычисления отрезка на оси Y:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("Наклон неопределён (вертикальная прямая)\n");
        return 0;
    }
    return (y2 - y1) / (x2 - x1);
}

float calculate_intercept(float x, float y, float slope) {
    // Вычисление отрезка на оси Y по формуле: b = y - mx
    float intercept = y - (slope * x);
    return intercept;
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Первая точка
    float x2 = 5.0, y2 = 7.0;  // Вторая точка

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

    printf("Точка 1: (%.1f, %.1f)\n", x1, y1);
    printf("Точка 2: (%.1f, %.1f)\n", x2, y2);
    printf("Наклон: %.2f\n", slope);
    printf("Отрезок на оси Y: %.2f\n", intercept);

    return 0;
}

Компилируйте и запустите программу:

gcc line_equation.c -o line_equation
./line_equation

Пример вывода:

Точка 1: (2.0, 3.0)
Точка 2: (5.0, 7.0)
Наклон: 1.33
Отрезок на оси Y: 0.33

Давайте разберём новый код:

  1. Функция calculate_intercept() принимает три параметра: x, y и наклон
  2. Она использует формулу b = y - mx для вычисления отрезка на оси Y
  3. В функции main() мы используем ранее вычисленный наклон и точку для нахождения отрезка на оси Y
  4. Отрезок на оси Y представляет собой точку пересечения прямой с осью Y, когда x = 0

Вычисление показывает, что для заданных точек прямая имеет наклон 1.33 и отрезок на оси Y 0.33.

Вывод уравнения прямой y = mx + b

В этом шаге вы научитесь выводить полное уравнение прямой, используя наклон и отрезок на оси Y, вычисленные на предыдущих шагах. Мы изменим существующую программу на C, чтобы отобразить уравнение прямой в стандартной форме y = mx + b.

Продолжайте работать в той же директории проекта:

cd ~/project
nano line_equation_final.c

Напишите следующий код C для вывода уравнения прямой:

#include <stdio.h>

float calculate_slope(float x1, float y1, float x2, float y2) {
    if (x2 - x1 == 0) {
        printf("Наклон неопределён (вертикальная прямая)\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("Уравнение прямой: y = ");

    // Вывод коэффициента наклона
    if (slope == 1) {
        printf("x");
    } else if (slope == -1) {
        printf("-x");
    } else if (slope != 0) {
        printf("%.2fx", slope);
    }

    // Вывод отрезка на оси Y
    if (intercept > 0) {
        printf(" + %.2f", intercept);
    } else if (intercept < 0) {
        printf(" - %.2f", -intercept);
    }

    printf("\n");
}

int main() {
    float x1 = 2.0, y1 = 3.0;  // Первая точка
    float x2 = 5.0, y2 = 7.0;  // Вторая точка

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

    printf("Точка 1: (%.1f, %.1f)\n", x1, y1);
    printf("Точка 2: (%.1f, %.1f)\n", x2, y2);
    printf("Наклон: %.2f\n", slope);
    printf("Отрезок на оси Y: %.2f\n", intercept);

    print_line_equation(slope, intercept);

    return 0;
}

Компилируйте и запустите программу:

gcc line_equation_final.c -o line_equation_final
./line_equation_final

Пример вывода:

Точка 1: (2.0, 3.0)
Точка 2: (5.0, 7.0)
Наклон: 1.33
Отрезок на оси Y: 0.33
Уравнение прямой: y = 1.33x + 0.33

Давайте разберём новый код:

  1. Функция print_line_equation() обрабатывает различные случаи наклона и отрезка на оси Y
  2. Она обрабатывает специальные случаи, такие как наклон 1, -1 или 0
  3. Она форматирует уравнение с правильными знаками для отрезка на оси Y
  4. Функция обеспечивает чистый и читаемый вывод уравнения прямой

Код демонстрирует, как преобразовать информацию о точках и наклоне в стандартную форму линейного уравнения.

Резюме

В этом лабораторном практикуме вы сначала изучили, как вычислить наклон прямой между двумя точками, используя формулу (y2 - y1) / (x2 - x1). Это значение отражает крутизну прямой. Затем вы научились вычислять отрезок на оси Y прямой, используя наклон и известную точку, перегруппировав уравнение y = mx + b, чтобы найти b. Наконец, вы объединили наклон и отрезок на оси Y, чтобы вывести полное уравнение прямой в форме y = mx + b.