Forum » Šola » Projekcija točke na premico
Projekcija točke na premico
c0dehunter ::
Programiram funkcijo, ki bi mi vrnala točko projekcije podane točke na črto.
Sam sem se tega skušal lotiti s pomočjo vektorjev:
A,B- točki, ki definirata premico oz. črto
T-točka, ki jo projeciramo
P-projecirana točka
Prva formula: P=A+k*AB (A, AB vektorja)
Druga formula: AB . PT=0 (vektorA vektorsko vektorB je 0, če sta pravokotna)
- AB . (T-P)=0
- namesto P vstavim zgornjo formulo, in izračunam k
dobim
k=(-(AB . T)+(A . AB))/(AB . AB);
Ko dobim k, lahko izračunam točko P.
Problem je, da zmeraj dobim k=0 Kaj počnem narobe? Sem že ene parkrat šel vse čez in zmeraj dobim to formulo za k.
Sam sem se tega skušal lotiti s pomočjo vektorjev:
A,B- točki, ki definirata premico oz. črto
T-točka, ki jo projeciramo
P-projecirana točka
Prva formula: P=A+k*AB (A, AB vektorja)
Druga formula: AB . PT=0 (vektorA vektorsko vektorB je 0, če sta pravokotna)
- AB . (T-P)=0
- namesto P vstavim zgornjo formulo, in izračunam k
dobim
k=(-(AB . T)+(A . AB))/(AB . AB);
Ko dobim k, lahko izračunam točko P.
Problem je, da zmeraj dobim k=0 Kaj počnem narobe? Sem že ene parkrat šel vse čez in zmeraj dobim to formulo za k.
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
- spremenilo: c0dehunter ()
drola ::
Točko lahko projeciraš takole:
k_premice = (y(A) - y(B)) / (x(A) - x(B))
k_pravokotnice = -1/k_premice
izračunaš še n od obeh premic. Prva mora skozi točko A in B, druga skozi T.
Potem izračunaš presečišče teh dveh premic -> tvoj P.
Glede vektorske metode: ko sem jaz naredu izpeljavo, sem dobil k = (rT . AB - rA . AB)/|AB|^2
Vzel A(0,0), B(3,3) in T(0,3) => AB = (3-0, 3-0) = (3,3);
k = (0,3) . (3,3) - (0,0) . (3,3) / (3*3 + 3*3)
k = (0*3 + 3*3 - 0*3 - 0*3) / 18 = 9/18 = 1/2
k_premice = (y(A) - y(B)) / (x(A) - x(B))
k_pravokotnice = -1/k_premice
izračunaš še n od obeh premic. Prva mora skozi točko A in B, druga skozi T.
Potem izračunaš presečišče teh dveh premic -> tvoj P.
Glede vektorske metode: ko sem jaz naredu izpeljavo, sem dobil k = (rT . AB - rA . AB)/|AB|^2
Vzel A(0,0), B(3,3) in T(0,3) => AB = (3-0, 3-0) = (3,3);
k = (0,3) . (3,3) - (0,0) . (3,3) / (3*3 + 3*3)
k = (0*3 + 3*3 - 0*3 - 0*3) / 18 = 9/18 = 1/2
https://drola.si
c0dehunter ::
drola hvala.
Danes sem ugotovil, da je tudi moja izpeljava za k pravilna, napaka je bila pri implementaciji (ni samo castalo iz int v double).
Danes sem ugotovil, da je tudi moja izpeljava za k pravilna, napaka je bila pri implementaciji (ni samo castalo iz int v double).
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
c0dehunter ::
Zoran, kako to misliš? Če misliš to kar si napisal, potem tako da si shranjujem točke kamor uporabnik klikne, in jih nato povežem z DrawLine(A,B) funkcijo
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Zgodovina sprememb…
- spremenilo: c0dehunter ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Matematika-problemOddelek: Šola | 1632 (1406) | Math Freak |
» | Linearne funkcijeOddelek: Šola | 1489 (1188) | lebdim |
» | matematkaOddelek: Šola | 3166 (2145) | lebdim |
» | enačba ravnineOddelek: Šola | 9434 (6907) | cotax |
» | Matematika - pomoč (strani: 1 2 3 )Oddelek: Šola | 26786 (23361) | daisy22 |