Как я могу найти уравнение общей формы линии из двух точек? - программирование
Подтвердить что ты не робот

Как я могу найти уравнение общей формы линии из двух точек?

С учетом ввода:

double x1,y1,x2,y2;

Как я могу найти уравнение общей формы (double a, b, c, где ax + by + c = 0)?

Примечание. Я хочу, чтобы это можно было вычислить. Таким образом, эквивалент для формы перехвата наклона будет примерно таким:

double dx, dy;
double m, b;

dx = x2 - x1;
dy = y2 - y1;
m = dy/dx;
b = y1;

Очевидно, это очень просто, но я не смог найти решение для общей формы уравнения (что более полезно, поскольку оно может делать вертикальные линии). Я уже заглянул в книгу линейной алгебры и две книги по вычислительной геометрии (оба слишком продвинутые, чтобы объяснить это).

4b9b3361

Ответ 1

Если вы начинаете с уравнения y-y1 = (y2-y1)/(x2-x1) * (x-x1) (который является уравнением линии, определяемой двумя точками), через некоторые манипуляции вы можете получить (y1-y2) * x + (x2-x1) * y + (x1-x2)*y1 + (y2-y1)*x1 = 0, и вы можете узнать, что:

  • a = y1-y2,
  • b = x2-x1,
  • c = (x1-x2)*y1 + (y2-y1)*x1.

Ответ 2

Получите касательную, вычитая две точки (x2-x1, y2-y1). Нормализуйте его и поверните на 90 градусов, чтобы получить нормальный вектор (a,b). Возьмите точечный продукт с одной из точек, чтобы получить константу, c.

Ответ 3

Шаблоны быстрого доступа: " Проблема: (4,5) (3, -7)" Решите: m = -12/1, тогда 12x-y = 48 " ПРИМЕЧАНИЕ: m - наклон КОПИРОВАТЬ НОМЕРАТОРА, АФФИКС "Х" Положительная доля Отрицательный знак. (tip: simmilar sign = добавить + скопировать знак) 1. Измените второй набор на противоположные знаки, 2.ADD y1 - y2 (означает добавление или вычитание их в зависимости от знака), 3.ADD x1-x2 (также означает добавление или вычитание их в зависимости от знака), 4. Затем умножьте 12 и 1 на любую из заданных проблем. После этого " BOOM" Tada!, у вас есть свой ответ

Ответ 4

#include <stdio.h>
main()
{
    int a,b,c;
    char x,y;
    a=5;
    b=10;
    c=15;
    x=2;
    y=3;
    printf("the equation of line is %dx+%dy=%d" ,a,b,c);
}