[Delphi] Wzór funkcji liniowej przechodzącej przez 2 punkty

0

Witam serdecznie,
piszę pracę dyplomową, której uzupełnieniem będzie prosty programik w delphi pokazujący kilka wykresów funkcji liniowych (odcinki prostych na wykresie będą trasą lotu).

Potrzebuję wyznaczyć wzór funkcji przechodzącej przez punkt:

A(X1,Y1) oraz B(X2,Y2).

Jeśli zna ktoś rozwiązanie to bardzo proszę o pomoc.

0

y=(((yB-yA)(x-xA))/(xB-xA))+yA - prosta przechodząca przez 2 punkty.

Jak chcesz wielomian przechodzący przez kilka punktów to skorzystaj z interpolacji.
http://progs_jp.w.interia.pl/numerki5.htm - tutaj masz nawet w Pascalu napisany kod, więc dużo się nie musisz trudzić ;)

ps. mam nadzieję, że o to Ci chodziło.

0

Podanego wzoru nie można stosować gdy xB=xA. Wówczas równanie wygląda tak x=xA.

0

jezeli chodzi o samo wyswietlanie to, algorytm kreslenia odcinka - nie musisz liczyc w tedy zadnych wzorow na prosta.

0

Wystarczy użyć poniższej funkcji wyliczającej współrzędną Y dowolnego punktu należącego do prostej przechodzącej przez punkty (x1,y1) i(x2,y2) na podstawie współrzędnej X:


Function FunkcjaLiniowa(x1,y1,x2,y2, X:Integer):Integer;// liczenie wartości Y z równania prostej przechodzącej przez dwa punkty (x1,y1) i (x2,y2) i punkt X
  Begin
    Result:=Round(((y2-y1)/(x2-x1))*x-((y2-y1)/(x2-x1))*x1+y1);
  End;

I teraz wystarczy zastosować funkcję Line( a1, b1, a2, b2) i do niej podstawić funkcję FunkcjaLiniowa(..):


 Line(a1, FunkcjaLiniowa(x1,y1,x2,y2, a1), a2, FunkcjaLiniowa(x1,y1,x2,y2, a2) ); 

która pozwoli na wykreślenie prostej zaczynającej się przy X=a1, a kończącej się przy X=a2 i przechodzącej przez punkty (x1,y1) i (x2,y2).

Tak więc, chcąc wyznaczyć prostą na całej szerokości wykresu na którym X-y zaczynają się od 0, a kończą na 100, to wystarczy za a1 podstawić 0, a za a2 dać 100.

Przykład może nie jest zoptymalizowany pod względem długości kodu, a jest raczej kodem
edukacyjnym i widać jasno, gdzie co jest liczone i podstawiane.

Pzdr.
Marogo

0

Przede wszystkim pragnę Wam podziękować za szybką i sprawną odpowiedź. Dziś w nocy będę walczył z tymi funkcjami. W razie pytań napiszę.

Życzę wszystkim miłego dnia!

1 użytkowników online, w tym zalogowanych: 0, gości: 1