Forum » Šola » Projekcija točke na premico
Projekcija točke na premico
![](https://static.slo-tech.com/stili/avatar_gray.gif)
c0dehunter ::
Zdravo, potreboval bi nekaj pomoči pri reverse engineeringu moje kode, ki sem jo napisal nekaj časa nazaj, vendar nikakor ne morem ugotovit kako sem do tega prišel :)
Imamo daljico CD in točko T, ki jo želimo projicirati. Stvari sem sem lotil z vektorji. Projicirana točka naj bo P.
P=C+k*vektor(CD) //potrebujemo samo še k
No, tu mi ni jasno kako sem dobil tale k.. Imenovalec vidim da je dolžina vektorja CD.
Hvala
Imamo daljico CD in točko T, ki jo želimo projicirati. Stvari sem sem lotil z vektorji. Projicirana točka naj bo P.
P=C+k*vektor(CD) //potrebujemo samo še k
(T.X*vektorCD.X + T.Y*vektorCD.Y) - (C.X*vektorCD.X + C.Y*vektorCD.Y) k= --------------------------------------------------------------------- (vektorCD.X*vektorCD.X + vektorCD.Y*vektorCD.Y)
No, tu mi ni jasno kako sem dobil tale k.. Imenovalec vidim da je dolžina vektorja CD.
Hvala
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.
![](https://static.slo-tech.com/stili/avatar_gray.gif)
Genetic ::
k dobis s skalarnim produktom med enotskim vektorjem na CD (eCD) in CT
P = C + (CT*eCD)*CD , kjer je eCD enotski vektor na CD (eCD = CD/|CD|), (CT*eCD) je skalarni produkt
CT = (T.x-C.x, T.y-C.y)
CD = (CD.x, CD.y)
|CD| = CD.x*CD.x + CD.y+CD.y
k = CT*CD/|CD| = (T.x-C.x, T.y-C.y)*(CD.x, CD.y)/|CD| = ((T.x-C.x)*CD.x + (T.y-C.y)*CD.y)/|CD| =
= ((T.x*CD.x + T.y*CD.y) - (C.x*CD.x * C.y*CD.y)) / (CD.x*CD.x + CD.y*CD.y)
Popravek: v tvoji in moji kodi mora biti |CD| = sqrt(CD.x*CD.x + CD.y*CD.y)
P = C + (CT*eCD)*CD , kjer je eCD enotski vektor na CD (eCD = CD/|CD|), (CT*eCD) je skalarni produkt
CT = (T.x-C.x, T.y-C.y)
CD = (CD.x, CD.y)
|CD| = CD.x*CD.x + CD.y+CD.y
k = CT*CD/|CD| = (T.x-C.x, T.y-C.y)*(CD.x, CD.y)/|CD| = ((T.x-C.x)*CD.x + (T.y-C.y)*CD.y)/|CD| =
= ((T.x*CD.x + T.y*CD.y) - (C.x*CD.x * C.y*CD.y)) / (CD.x*CD.x + CD.y*CD.y)
Popravek: v tvoji in moji kodi mora biti |CD| = sqrt(CD.x*CD.x + CD.y*CD.y)
Zgodovina sprememb…
- spremenil: Genetic ()
![](https://static.slo-tech.com/stili/avatar_gray.gif)
c0dehunter ::
Genetic, hvala.
Btw, pri |CD| (oz. imenovalcu) imam jaz tako kot sem napisal in mi prav izračuna.
Btw, pri |CD| (oz. imenovalcu) imam jaz tako kot sem napisal in mi prav izračuna.
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.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | VektorjiOddelek: Šola | 3164 (2872) | lebdim |
» | [C++] MetodeOddelek: Programiranje | 1469 (1301) | failcoder |
» | Matematika - pomoč (strani: 1 2 3 )Oddelek: Šola | 26070 (22645) | daisy22 |
» | Freehand v krivuljo - C# ali VBOddelek: Programiranje | 1453 (1324) | PaX_MaN |
» | Collision detectionOddelek: Programiranje | 1832 (1584) | Senitel |