Szerző Téma: VectorSize  (Megtekintve 1378 alkalommal)

VectorSize
« Dátum: 2014. Május 26. - 15:42:19 »
0
VectorSize


\"Add.png\"Ez a funkció a SA-MP 0.3z verzióban lett hozzáadva, korábbi verzióban nem mûküdik!
Leírás
                Visszatér a vektor normájával (hosszával) tér vissza.
Paraméterek
             
(Float:X, Float:Y, Float:Z)

 
              Float:X - A vektor nagysága a(z) X tengelyen.
              Float:Y - A vektor nagysága a(z) Y tengelyen.
              Float:Z - A vektor nagysága a(z) Z tengelyen.
Visszatérés
                Visszatér a kiválasztott vektorrunk hosszához.
Példa
 
stock Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
    return VectorSize(x1-x2, y1-y2, z1-z2); //Visszatér. Kivonja az adott vektorból az x1, y1, z1-et. (Például)
}

 
Kapcsolódó funkciók
GetPlayerDistanceFromPoint
GetVehicleDistanceFromPoint
floatsqroot
« Utoljára szerkesztve: 2014. Május 27. - 00:31:20 írta ZyZu. »

Nem elérhető krisk

  • 2380
    • Profil megtekintése
VectorSize
« Válasz #1 Dátum: 2014. Május 26. - 19:16:51 »
+1
Na, ez itt egy kicsit félreérthetõ.
A normál vektor az jelentheti az egységvektort (unit vector). Ha r egy vektor, akkor:
r^ = r/||r||,
a hozzá tartozó egységvektor, amelynek iránya megegyezik az eredeti vektorral, és hossza egység (1).
Amire te gondolsz, az nem egy \"normál vektor\", hanem a vektor normája, ami egy r N-vektor esetében:
 

||r|| = sqrt((r1)^2+(r2)^2+...+(rn)^2)

 
ahol r1, r2, ... a komponensek.
Figyeld meg, hogy két dimenzió esetén a pitagorasz-tételt, egydimenziós esetben az abszolútértéket kapod (innen jön a || jelölés).
Tehát:
 

   Visszajuttatja a normál (hosszú) biztos vektort.
 
[/quote]
ez helyett azt írnám, hogy \"a vektor normájával (hosszával)\" tér vissza. A visszajuttatás amúgy is hülyén hangzik magyarul, helyette \"visszatérést\" mondanak.

VectorSize
« Válasz #2 Dátum: 2014. Május 26. - 19:24:52 »
0
Köszönöm krisk a segítséged! Javítottam azokat, amikre úgy figyelmeztettél. Köszönöm!

Nem elérhető krisk

  • 2380
    • Profil megtekintése
VectorSize
« Válasz #3 Dátum: 2014. Május 26. - 20:11:53 »
+1
Tegyük fel, van egy két dimenziós vektorod. Ez hasonló ahhoz, amit pl. geometriaórán rajzolsz. Van egy nyíl, aminek van egy kezdõ- és egy végpontja.
Mivel két vektor egyenlõ, ha a hosszuk és az irányuk megegyezik, ezért el lehet ezt a vektort tolni az origóba. Ekkor a vektor jellemezhetõ egy számkettesel, ami azt mondja, hova mutat a vektor. Pl. egy átlósan jobbra fel mutató vektort az (1;1) számok jellemeznek, mivel (0;0)-ból (1;1)-be mutat.
Most tegyük fel, van egy olyan vektorom, amit (5;4) jellemez, vagyis az origóból ebbe a pontba mutat. Ekkor a KOMPONENSEK az 5 az x irányba és a 4 az y irányba. A matematikai finomságoktól megkímélve annyit lehetne mondan, hogy jobbra lépünk ötöt, fel négyet. Ez egyértelmûen egy derékszögû háromszöget ad, amire teljesül pitagorasz-tétele, vagyis:
hossz = sqrt(5^2+4^2), ami körülbelül 6.4 egység hosszú.
Ami érdekes, hogy hasonló módon meg lehet határozni többdimenziós vektorok hosszát is. Ha pl van egy 3-vektorod, vagyis egy, ami három dimenzióban van, akkor azt ugyanúgy elég egy számhármassal (pl. (5;4;5) ) jellemezned, és a hosszt itt is a négyzetösszegek gyöke adja:
sqrt(5^2+4^2+5^2), ami kb. 8.1.
Ami érdekes, hogy ha pl. van egy többdimenziós tered, pl. 4 dimenziós, akkor is mûködik, és akkor is, ha egy dimenziós a vizsgált objektum. Egy dimenzió esetében már nem beszélhetünk vektorról, csak skalárról, ekkor érdekes módon (pl. 5 esetén):
sqrt(5^2) = 5,
de például:
sqrt((-5)^2) = 5,
ezért tetszõleges a-ra:
sqrt(a^2) = |a|,
vagyis ha a pozitív, akkor az eredmény a, ha negatív, akkor -a.
Négy dimenzió esete például a színkeresõ algoritmusok esetén alkalmazható. Én a készülõ szerveremben írtam egy olyan scriptet, amely megnézi, hogy egy adott RGBA színhez melyik szín van a legközelebb (R a szín vörös, G a szín zöld, B a szín kék, A a szín átlátszósági komponense). Ha csak RGB-t néznénk, akkor a SAMP kocsiszínek és a megadott szín közti hasonlóságot ugyanígy, a két szín \"távolságaként\" lehet nézni. Itt nyilván kell súlyozni is, mert a szem bizonyos színeket jobban érzékel, mint másokat, de ez megint más kérdés, a matek mögötte ugyanaz.
Na de RGBA esetén, amikor az átlátszóságot is figyelembe kell venni, van egy négydimenziós vektorunk, amely a színtér egyik elemétõl (ami a szín, amit megadunk) az adatbázis egyes elemei felé mutat. A rövid vektorok közelebbi színeket jeleznek. Ilyen esetben pl. a \"távolság\":
közelség színben = sqrt((r2-r1)^2+(g2-g1)^2+(b2-b1)^2+(a2-a1)^2),
azaz a pitagorasz-tétel, csak 4 dimenzióban. A legrövidebb vektor mutatja a színt, ami a legjobban hasonlít.
Itt most használtam egy kis érdekességet, mert itt nem az origótól indultunk. Helyette vettem a különbséget, ami ugyanaz, mintha az origóból indulna eltolva valami. Az se baj, ha r1 nagyobb, mint r2, mert (-a)^2=a^2, tehát az eredmény ugyanaz lesz.
Speciális relativitásban sokat dolgozunk négyesvektorokkal, azok ezekhez hasoló módszer szerint mûködnek és alkalmazhatóak (mivel a fentiek csak euklidészi terek esetén álják meg magukat, és mivel a Minkowski-téridõ nem euklidészi, ezért van egy kis csavar a norma Minkowski-féle, ún. téridõ-intervallumában, de nagyjából ugyanígy néz ki.)
Mivel a skalárok normája az \"abszolút érték\", a vektorok normája a \"norma\", felmerülhet a kérdés (már aki tudja mi az), hogy a tenzoroknak is van-e normájuk. Mivel a tenzorokat (és a vektorokat, és a skalárokat is) felírhatjuk mátrixalakban, ezért azoknak is lehentek normáik, bár sokkal kevésbé hasznosak, és egyszerûbbek, mint a vektorok esetében.
« Utoljára szerkesztve: 2014. Május 26. - 21:42:02 írta krisk »

VectorSize
« Válasz #4 Dátum: 2014. Május 26. - 15:42:19 »
0
VectorSize


\"Add.png\"Ez a funkció a SA-MP 0.3z verzióban lett hozzáadva, korábbi verzióban nem mûküdik!
Leírás
                Visszatér a vektor normájával (hosszával) tér vissza.
Paraméterek
             
(Float:X, Float:Y, Float:Z)

 
              Float:X - A vektor nagysága a(z) X tengelyen.
              Float:Y - A vektor nagysága a(z) Y tengelyen.
              Float:Z - A vektor nagysága a(z) Z tengelyen.
Visszatérés
                Visszatér a kiválasztott vektorrunk hosszához.
Példa
 
stock Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
    return VectorSize(x1-x2, y1-y2, z1-z2); //Visszatér. Kivonja az adott vektorból az x1, y1, z1-et. (Például)
}

 
Kapcsolódó funkciók
GetPlayerDistanceFromPoint
GetVehicleDistanceFromPoint
floatsqroot
« Utoljára szerkesztve: 2014. Május 27. - 00:31:20 írta ZyZu. »

Nem elérhető krisk

  • 2380
    • Profil megtekintése
VectorSize
« Válasz #5 Dátum: 2014. Május 26. - 19:16:51 »
0
Na, ez itt egy kicsit félreérthetõ.
A normál vektor az jelentheti az egységvektort (unit vector). Ha r egy vektor, akkor:
r^ = r/||r||,
a hozzá tartozó egységvektor, amelynek iránya megegyezik az eredeti vektorral, és hossza egység (1).
Amire te gondolsz, az nem egy \"normál vektor\", hanem a vektor normája, ami egy r N-vektor esetében:
 

||r|| = sqrt((r1)^2+(r2)^2+...+(rn)^2)

 
ahol r1, r2, ... a komponensek.
Figyeld meg, hogy két dimenzió esetén a pitagorasz-tételt, egydimenziós esetben az abszolútértéket kapod (innen jön a || jelölés).
Tehát:
 

   Visszajuttatja a normál (hosszú) biztos vektort.
 
[/quote]
ez helyett azt írnám, hogy \"a vektor normájával (hosszával)\" tér vissza. A visszajuttatás amúgy is hülyén hangzik magyarul, helyette \"visszatérést\" mondanak.

VectorSize
« Válasz #6 Dátum: 2014. Május 26. - 19:24:52 »
0
Köszönöm krisk a segítséged! Javítottam azokat, amikre úgy figyelmeztettél. Köszönöm!

Nem elérhető krisk

  • 2380
    • Profil megtekintése
VectorSize
« Válasz #7 Dátum: 2014. Május 26. - 20:11:53 »
0
Tegyük fel, van egy két dimenziós vektorod. Ez hasonló ahhoz, amit pl. geometriaórán rajzolsz. Van egy nyíl, aminek van egy kezdõ- és egy végpontja.
Mivel két vektor egyenlõ, ha a hosszuk és az irányuk megegyezik, ezért el lehet ezt a vektort tolni az origóba. Ekkor a vektor jellemezhetõ egy számkettesel, ami azt mondja, hova mutat a vektor. Pl. egy átlósan jobbra fel mutató vektort az (1;1) számok jellemeznek, mivel (0;0)-ból (1;1)-be mutat.
Most tegyük fel, van egy olyan vektorom, amit (5;4) jellemez, vagyis az origóból ebbe a pontba mutat. Ekkor a KOMPONENSEK az 5 az x irányba és a 4 az y irányba. A matematikai finomságoktól megkímélve annyit lehetne mondan, hogy jobbra lépünk ötöt, fel négyet. Ez egyértelmûen egy derékszögû háromszöget ad, amire teljesül pitagorasz-tétele, vagyis:
hossz = sqrt(5^2+4^2), ami körülbelül 6.4 egység hosszú.
Ami érdekes, hogy hasonló módon meg lehet határozni többdimenziós vektorok hosszát is. Ha pl van egy 3-vektorod, vagyis egy, ami három dimenzióban van, akkor azt ugyanúgy elég egy számhármassal (pl. (5;4;5) ) jellemezned, és a hosszt itt is a négyzetösszegek gyöke adja:
sqrt(5^2+4^2+5^2), ami kb. 8.1.
Ami érdekes, hogy ha pl. van egy többdimenziós tered, pl. 4 dimenziós, akkor is mûködik, és akkor is, ha egy dimenziós a vizsgált objektum. Egy dimenzió esetében már nem beszélhetünk vektorról, csak skalárról, ekkor érdekes módon (pl. 5 esetén):
sqrt(5^2) = 5,
de például:
sqrt((-5)^2) = 5,
ezért tetszõleges a-ra:
sqrt(a^2) = |a|,
vagyis ha a pozitív, akkor az eredmény a, ha negatív, akkor -a.
Négy dimenzió esete például a színkeresõ algoritmusok esetén alkalmazható. Én a készülõ szerveremben írtam egy olyan scriptet, amely megnézi, hogy egy adott RGBA színhez melyik szín van a legközelebb (R a szín vörös, G a szín zöld, B a szín kék, A a szín átlátszósági komponense). Ha csak RGB-t néznénk, akkor a SAMP kocsiszínek és a megadott szín közti hasonlóságot ugyanígy, a két szín \"távolságaként\" lehet nézni. Itt nyilván kell súlyozni is, mert a szem bizonyos színeket jobban érzékel, mint másokat, de ez megint más kérdés, a matek mögötte ugyanaz.
Na de RGBA esetén, amikor az átlátszóságot is figyelembe kell venni, van egy négydimenziós vektorunk, amely a színtér egyik elemétõl (ami a szín, amit megadunk) az adatbázis egyes elemei felé mutat. A rövid vektorok közelebbi színeket jeleznek. Ilyen esetben pl. a \"távolság\":
közelség színben = sqrt((r2-r1)^2+(g2-g1)^2+(b2-b1)^2+(a2-a1)^2),
azaz a pitagorasz-tétel, csak 4 dimenzióban. A legrövidebb vektor mutatja a színt, ami a legjobban hasonlít.
Itt most használtam egy kis érdekességet, mert itt nem az origótól indultunk. Helyette vettem a különbséget, ami ugyanaz, mintha az origóból indulna eltolva valami. Az se baj, ha r1 nagyobb, mint r2, mert (-a)^2=a^2, tehát az eredmény ugyanaz lesz.
Speciális relativitásban sokat dolgozunk négyesvektorokkal, azok ezekhez hasoló módszer szerint mûködnek és alkalmazhatóak (mivel a fentiek csak euklidészi terek esetén álják meg magukat, és mivel a Minkowski-téridõ nem euklidészi, ezért van egy kis csavar a norma Minkowski-féle, ún. téridõ-intervallumában, de nagyjából ugyanígy néz ki.)
Mivel a skalárok normája az \"abszolút érték\", a vektorok normája a \"norma\", felmerülhet a kérdés (már aki tudja mi az), hogy a tenzoroknak is van-e normájuk. Mivel a tenzorokat (és a vektorokat, és a skalárokat is) felírhatjuk mátrixalakban, ezért azoknak is lehentek normáik, bár sokkal kevésbé hasznosak, és egyszerûbbek, mint a vektorok esetében.
« Utoljára szerkesztve: 2014. Május 26. - 21:42:02 írta krisk »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal