Witam
Jesli mam dwa punkty P1(x1,y1), P2(x2,y2) to w jaki sposob moge znaleźć równanie prostej przechodzącej przez nie.
Rownanie powinno być postaci px+qy+r=0.
Chyba pomyliłeś działy. Tutaj zadaje się pytania na temat problematyki z programowania, a nie matematyki.
Podstaw sobie współrzędne obu punktów do wzoru y=ax+b. Wyjdzie ci układ równań, który należy obliczyć, wtedy wyjdzie a oraz b.
W tablicach matematycznych masz jeden wzór...
y=ax+b - pisalem ze musze miec w postaci px+qy+r=0
w tablicach matematycznych- <ort>na pewno</ort> nie w moich :)
jak ktos ma wzor to prosze zeby podal
y = ax + b
ax - y + b = 0 / *(-q)
px + qy + r = 0
p = -aq
r = -bq
Czy to tak trudno zamienić?
Po prostu zrób bardzo grubą prostą ;-) :d [cya]
Endrju: [ browar] :-D
Napiszę to, zanim odeślą Cie do podstawówki, albo zaleja się fundowanym sobie na wzajem piwem.
y-y0=(dy/dx)*(x-x0) ... (to na prawdę podstawówka)
y=((y2-y1)/(x2-x1))*(x-x1)+y1...
Potrafisz sam to przyrównać do zera, prawda? Poradzisz sobie? Na pewno? Na wszelki wypadek:
((y2-y1)/(x2-x1))*(x-x1)+y1-y=0 ...
A w po rozwinięciu masz postac kanoniczną:
((y2-y1)/(x2-x1))*x-y+y1-((y2-y1)/(x2-x1))*x1=0
Tylko i tak musisz zadbać aby x2-x1 nie było równe 0, bo inaczej div by 0 i mogiła.
Dzieki wszystkim za trafne (i te mniej) odpowiedzi
Chyba nikt nie zauwazyl, ale y=ax+b nie dziala jesli mam punkty
P1(1,1), P2(1,2) - czyli prosta rownolegla do osi Y
no ale juz ten problem rozwiazalem...
Hmmm... Tak jak napisałem nieazleżnie od wzoru potrzebujesz mieć nachylenie prostej w stosunku do osi x. Czyli dy/dx=tg(alpha). Masz tablice, bo się wygadałeś (wyżej), więc wiesz że dla 90 i 270 stopni (czyli gdy dx=0) tg dąży do nieskończoności. Chyba, że będziesz sprawdzał który z przyrostów jest wiekszy dx, czy dy i odpowiednio gdy dy>dx będziesz rysował prostą wg wzoru x= ay+b.
// Do postu poniżej:
Cofam i przepraszam.
Tak jak napisałem nieazleżnie od wzoru potrzebujesz mieć nachylenie prostej w stosunku do osi x.
Arctus Tangens.
Najlepiej funkcją ArcTan2 z unitu math. (tylko uwaga! zwraca wynik w radianach)
//
a := X1 - X2;
b := Y1 - Y2;
katNachylenia := ArcTan2(a,b)*57,2958;
właśnie tak.. następnie :
for i := 1 to dlugoscLinii do begin
x := x + sin(katNachylenia)*i;
y := y - cos(katNachylenia)*i;
rysujPunkt(x,y);
end;
Ludzie [glowa] [glowa] jaki arcus tangens.... - weźcie pomyślcie zanim coś napiszenie [glowa] [glowa]
Proponuje zablokować topic...
PS: aha.. no chyba ze tak Andrew.. wtedy cofam - nie wiem tylko, czy wtedy wyjdzie ładna prosta jeśli w postaci parametrycznej z sinusem itd... trzeba by to sprawdzić
Jak dla mnie, to może nie podstawówka - gimnazjum (nie w każdej podstawówce uczą o układach równań), ale jak byś do mojej klasy chodził i zadał na matmie takie pytanie, to byś wyleciał ze szkoły z kosą z matmy na koniec roku... Nie wspominając o tym, co zrobiłby z tobą mój fizyk... Po prostu pytanie na poziomie... No comment... i doleję trochę [browar], ale pić nie będę, bo nie lubię...
LUDZIEEEEEEEEEEEEE
Czy nikt nie zauwazyl ze pisalem "problem rozwiazany"?
niektorych to zaskoczy, ale wiem jak liczyc uklady rownan
chodzilo mi tylo o to ze y=ax+b nie obejmuje przypadku kiedy prosta jest rownolegla do osi Y (no i jeszcze miala byc postac px+qy+r=0), ale problem ROZWIĄZAŁEM
chyba skasuje ten temat...