Znajdowanie wzoru funkcji liniowej
Krecik
Tekst dotyczy znajdowania wzoru funkcji liniowej przechodzącej przez dane punkty.
Przyjmujemy wzór funkcji liniowej jako:
y = ax + b
A dane punkty, jako: (X1,Y1)
i (X2,Y2)
Więc:
/ Y1 = a*X1 + b
<
\ Y2 = a*X2 + b
I 'pozbywamy' się b:
#/ Y1 = a*X1 + b
<
\ Y2 = a*X2 + b / *(-1)
/ Y1 = a*X1 + b
<
+ \ -Y2 = -(a*X2) - b
----------------------
(Y1-Y2) = (a*X1)-(a*X2)
aX1-aX2 = (Y1-Y2)
a(X1-X2) = (Y1-Y2) / :(X1-X2)
a = (X1-X2) / (Y1-Y2)
// i obliczamy b:
# Y1 = a*X1 + b
a*X1 + b = Y1
b = Y1 - (a*X1)
// więc:
a = (X1-X2) / (Y1-Y2)
b = Y1 - (a*X1);
A sama implementacja tego w C++ jest banalna:
void Line(int X1, int Y1, int X2, int Y2)
{
if((X1-X2) != 0)
{
float a1 = (Y1-Y2);
float a2 = (X1-X2);
float a = (a1/a2);
float b = Y2-(a*X2);
cout << "y = " << a << "x + " << b <<endl;
}
}
Przecież to jest źle przekształcone:
Powinno być :
a = (Y1-Y2) / (X1-X2)
Można to było wyprowadzić tak:
|x1 1|
Wg = | | = x11 - x21 = x1 - x2
|x2 1|
Wa = | | = y1 * 1 - y2 * 1 = y1 - y2
|y2 1|
a =---- = ---------
Wg x1 - x2
Wb = | | = x1 * y1 - x2 * y2
|x2 y2|
b = ----- = ---------------------
Wg x1 - x2
zał: x1 != x2
@KoRbI: no to przeróbmy kod w ten sposób:
A co jeżeli b<0?? Wyjdzie y=ax + -b :P
czemu nie działa kolorowanie składni C++ w ostatnim '
<code class="cpp">
'? :/wow, chyba na matematyce miałes i teraz chciałeś sie pochwalic :P toc to podstawic do wzoru i pikus :)
Ok.
tak w if powinno byc :
bo inaczej nie ma sensu ;-) o ile linijka:
<quite>
//więc:
a = (X1-X2) / (Y1-Y2)
b = Y1 - (a*X1);
</quite>
jest dobrze policzona
bo jest dobrze policzona (nie chce mi sie sprawdzic to takze:
powinno byc zamienione na:
Mi się przyda :)