Как я могу найти уравнение общей формы линии из двух точек?
С учетом ввода:
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;
Очевидно, это очень просто, но я не смог найти решение для общей формы уравнения (что более полезно, поскольку оно может делать вертикальные линии). Я уже заглянул в книгу линейной алгебры и две книги по вычислительной геометрии (оба слишком продвинутые, чтобы объяснить это).
Ответы
Ответ 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);
}