játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5444
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
B@z - Törzstag | 436 hsz       Online status #111197   2009.05.25 12:56 GMT+1 óra  
joga: ezzel nem sokat segitettel xD
sztem most is ugy kezelem

vegulis a cos sinus resznel annyival szorzom, amekkora a boxom, tehat a fuggvenyek a kor szerint viselkednek, csak kesobb kinyujtom.
deh igazabol szerintem nem azzal a resszel lesz a baj, hanem a forgasszog meghatarozasaval. az nem nez ki tul jol

   
xanat - Tag | 489 hsz       Online status #111196   2009.05.25 12:49 GMT+1 óra  
nullref <--- hulyeseget irtam
Elsosorban nem a program a hulye, hanem a felhasznalo nem tudja hasznalni.
   
Joga - Törzstag | 1791 hsz       Online status #111195   2009.05.25 12:46 GMT+1 óra  
őő, esetleg úgy meg lehetne közelíteni a dolgot, ha az ellipszist nyújtott körként kezeled?
(ಠ ›ಠ) Stewie!

   
B@z - Törzstag | 436 hsz       Online status #111192   2009.05.25 12:40 GMT+1 óra  
Hi
Huh de nehez volt megtalalni ezt a topicot xD

Szal lenne egy problemam, korbekerdezgettem mar par embert, meg 1 forumot is (ott nem valaszoltak >.>, ezert ti vagytok az utolso remenyem xD

Szal trigonometriarol lenne szo, pontosan ellipszisrol


Egy utkozes kezelest szeretnek megvalositani, ami egy ellipszisen belul nem engedi be a jatekost/mobot stb.
eddig kort hasznaltam, de sajnos ez olyan moboknal aminek joval nagyobb a szelessege mint a hosszusaga, nem tul szep.

Szoval a kep, ahogy ra is ra van irva, a P pontot es az alfa szoget kene megszereznem (vagyis az alfa szog inkabb a P pont megszerzesehez kell )

ahogy en gondolkoztam (hulye vagyok ehhez, bevallom, szoval lehet hogy teljesen rossz uton haladok )
P.X = cos(alfa)*box.X
P.Y = sin(alfa)*box.Z

es a szognel meg:
alfa = atan((playerPos.Y-mobPos.Y)/(playerPos.X-mobPos.Y))

vagyishat c++ban van egy atan2 nevu fuggveny, azt hasznalva:
alfa = atan2((playerPos.X-mobPos.X),(playerPos.Y-mobPos.Y));

persze figyelni a rad-deg dolgokra.

valami ilyesmi modon gondolkozva irtam meg a progit, csinaltam neki egy kis megjelenitest is, tehat ahogy forgok a mob korul, egy vonal jon ki a mobbol, a Ppontig.
nahat ez az ami nagyon nem mukodik.
alapvetoleg 90 fokot el volt csuszva, de, ahogy futok kurulotte, pont forditva forog mint a jatekosom. tehat hogyha en orajarasnak megfeleloen futok, akkor az ellentetesen forog >.>
tehat egy egyszeru korrekcio nem felel meg..

valami otlet? ><

   
sirpalee - Tag | 1282 hsz       Online status #102330   2009.01.07 16:11 GMT+1 óra  
Idézet
balogh9 :
Van egy olyan problémám, hogy fel vannak sorolva vektoriam, és az XY síkra eső vetületi vektorokat kéne meghatároznom...
Ha párosával veszem őket, vetületet számolok, és elhagyom a Z koordinátát, akkor az talán úgy jó lehet, de nem vagyok biztos benne.



raytraceisten és übermedic
   
sheridan - Tag | 55 hsz       Online status #102328   2009.01.07 14:52 GMT+1 óra  
Szerintem jó lesz. De elég csak a Z koordináta elhagyása szerintem...
Egyébként a Quake3 ligthmapper is így csinálja a fénytérképeket, ezért van az, hogy nem minden árnyék teljesen valós. Bár nem nagyon vesszük észre.


Idézet
balogh9 :
Van egy olyan problémám, hogy fel vannak sorolva vektoriam, és az XY síkra eső vetületi vektorokat kéne meghatároznom...
Ha párosával veszem őket, vetületet számolok, és elhagyom a Z koordinátát, akkor az talán úgy jó lehet, de nem vagyok biztos benne.


   
balogh9 - Törzstag | 801 hsz       Online status #102326   2009.01.07 14:29 GMT+1 óra  
Van egy olyan problémám, hogy fel vannak sorolva vektoriam, és az XY síkra eső vetületi vektorokat kéne meghatároznom...
Ha párosával veszem őket, vetületet számolok, és elhagyom a Z koordinátát, akkor az talán úgy jó lehet, de nem vagyok biztos benne.

Ezt a hozzászólást balogh9 módosította (2009.01.07 14:41 GMT+1 óra, ---)
_____________________
C++ && OGL
   
TPG - Tag | 3402 hsz       Online status #90750   2008.06.28 16:34 GMT+1 óra  
Igen ez nekem is most jutott eszembe, az volt a baj hogy én két egyenlő hosszú szakasszal gondolkodtam. Arra pedig igaz amit mondtam de az speciális eset szóval storno.
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #90749   2008.06.28 16:32 GMT+1 óra  
Idézet
TheProGamer :
Kiegészítés az előzőhöz: bőven elég csak az egyik szakaszra megvizsgálni hogy a másik szakasz végei elemei-e. [...]


Biztos?
Kód:
____________
  ______

Ilyenkor ha csak azt vizsgálom, hogy a felső szakasz 2 végpontja közül bármelyik rajta van-e az alsó szakaszon, akkor azt kapom mindkettőre, hogy nem. Pedig az alsó szakasznak meg mindkettő végpontja rajta van a felsőn. Ezért szvsz mind a 4 végpontra el kell végezni a vizsgálatot.

   
TPG - Tag | 3402 hsz       Online status #90748   2008.06.28 16:18 GMT+1 óra  
Kiegészítés az előzőhöz: bőven elég csak az egyik szakaszra megvizsgálni hogy a másik szakasz végei elemei-e. Ha az egyik szakasznak eleme a másik szakasz vége akkor tuti eleme lesz a másik szakasznak is ez egyik szakasz vége. Lényegében ha a vizsgálat során csak egy igaz eredményt kapsz akkor csak összelógnak, ha kettőt akkor egybeesnek.

Szerk: vissza az egész, adódhatnak olyan esetek mikor ez hülyeséget ad, meg kell vizsgálni minden szakaszt minden végponttal.

Ezt a hozzászólást TheProGamer módosította (2008.06.28 16:32 GMT+1 óra, ---)
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #90747   2008.06.28 16:05 GMT+1 óra  
Idézet
TheProGamer :
Annyit kell még külön megvizsgálni hogy az egyik szakasz vége(i) eleme(i)-e a másik szakasznak. Ha nem akkor a két szakasz egy egyenesen van de nem metszik egymást. Ha igen akkor vagy teljesen egybeesnek vagy részlegesen (a két szakasz vége mondjuk egymásba lóg), mindkét esetben végtelen számú metszéspont van.


Aha, értem, köszi!
Ez menni fog!

   
TPG - Tag | 3402 hsz       Online status #90746   2008.06.28 16:00 GMT+1 óra  
Idézet
gaborlabor :
Akkor ha jól nézem, csak azt a feltételvizsgálatot kell javítani.
Egyébként úgy néz ki, megtaláltam a forrásanyagot amiből anno összeraktam azt a csúnya függvényt.
Itt van:
http://ozviz.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/
A cpp kód meg emitt:
http://ozviz.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/example.cpp

Köszi mindkettőtöknek, megpróbálom valahogy javítani.


Annyit kell még külön megvizsgálni hogy az egyik szakasz vége(i) eleme(i)-e a másik szakasznak. Ha nem akkor a két szakasz egy egyenesen van de nem metszik egymást. Ha igen akkor vagy teljesen egybeesnek vagy részlegesen (a két szakasz vége mondjuk egymásba lóg), mindkét esetben végtelen számú metszéspont van.
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #90745   2008.06.28 15:55 GMT+1 óra  
Akkor ha jól nézem, csak azt a feltételvizsgálatot kell javítani.
Egyébként úgy néz ki, megtaláltam a forrásanyagot amiből anno összeraktam azt a csúnya függvényt.
Itt van:
http://ozviz.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/
A cpp kód meg emitt:
http://ozviz.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/example.cpp

Köszi mindkettőtöknek, megpróbálom valahogy javítani.

   
TPG - Tag | 3402 hsz       Online status #90744   2008.06.28 15:51 GMT+1 óra  
Idézet
gaborlabor :
wtf
Két szakasz egybevágó ha egy egyenesen vannak?
0,0 - 10,0
20,0 - 30,0
Ennek a két szakasznak nincs közös pontja. Csak egy egyenesen vannak. Nem?


A szakaszok nem de az egyenesek amikkel valószínűleg számol azok egybevágóak.
Reality is almost always wrong. - House

   
Asylum - Törzstag | 5444 hsz       Online status #90743   2008.06.28 15:50 GMT+1 óra  
jovanna tudom csak álmos vok meg bevmatot tanulok
az egyenes egyenletét használja ezért egyenesnek nézi öket és étnyleg 0 át ad vissza ( a t eleme [0, 1] miatt lesz szakasz).
Majd ránézek még amikor nem leszek ilyen fogyi

Ezt a hozzászólást Asylum módosította (2008.06.28 16:43 GMT+1 óra, ---)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
gaborlabor - Moderátor | 4449 hsz       Online status #90742   2008.06.28 15:46 GMT+1 óra  
wtf
Két szakasz egybevágó ha egy egyenesen vannak?
0,0 - 10,0
20,0 - 30,0
Ennek a két szakasznak nincs közös pontja. Csak egy egyenesen vannak. Nem?

   
Asylum - Törzstag | 5444 hsz       Online status #90741   2008.06.28 15:44 GMT+1 óra  
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
gaborlabor - Moderátor | 4449 hsz       Online status #90740   2008.06.28 15:43 GMT+1 óra  
Hmmm hmmm....
(A paraméterek: az első szakasz 2 végpontja (x,y), a második szakasz 2 végpontja (x,y), a metszéspont koordinátái(x,y).)

Két egyenes metszéspontját meg tudom határozni (azt tanítják is). Megvan a 2 végpont, abból fel lehet írni a normálvektoros egyenletet és onnan meg lehet oldani. Azzal csak az a gond, hogy papíron sokkal egyszerűbb, mint leprogramozni. Mert az egyenletrendszernek lehet 0, 1, vagy végtelen megoldása, és erre fel kell készíteni a függvényt.

Na most, ha jól emlékszem, kb ezt csinálja az a kód is amit a neten találtam.

Amit írtál, az ötletnek jó, csak nem a legkönnyebb lekódolni.

Még agyalok rajta, meg keresgélek a neten.

   
Asylum - Törzstag | 5444 hsz       Online status #90739   2008.06.28 15:34 GMT+1 óra  
azért ad vissza 0-át mert egybevágóak, ilyenkor végtelen sok metszéspont van.

szerk.:

én nem néztem meg a kódot de igy ránézésre ugyanazt csinálja amire én gondolok, ugyh most egy kis analizis:

szakaszt igy adunk meg matematikában: a + t(h - a) ahol a a kezdöpont, h a végpont t pedig 0 -tól megy 1- ig

koordinátás alakban felirva

(a1 + t(h1 - a1), a2 + t(h2 - a2))

a másik szakasz

(b1 + s(k1 - b1), b2 + s(k2 - b2))

rendezett párok a.cs.a. egyenlők, ha minden komponensük egyezik, ebböl kijön egy egyenltrednszer
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
TPG - Tag | 3402 hsz       Online status #90738   2008.06.28 15:21 GMT+1 óra  
Most hirtelenjében én sem fogom fel hogy mit csinál a függvény (főleg mert gyönyörű C-típusú kód annyi paraméterrel amennyit már bőven nem tudok fejben tartani) de leírom én hogy állnék neki. Két szakasz metszéspontja lényegében két egyenes metszéspontjának speciális esete. Két egyenes metszéspontja koordináta geometriai módszerekkel meghatározható, ha ismerjük a két egyenes egyenletét akkor megoldjuk az ezekből összeálló kétismeretlenes egyenletrendszert. Egy egyenest meghatároz két pont tehát a két pont koordinátájából meg lehet határozni az egyenes egyenletét (függvénytáblában elvileg benne van az egyenes két pontra használt képlete). A függvénytáblából előszedett képleteket levezetjük úgy mintha ismernénk a bennük lévő együtthatókat (fogjuk a képletet kétszer, indexeljük az együtthatókat és megoldjuk az egyenletrendszert). Ebből hogy x és y hogy jön ki az együtthatókból. Ezt a két képletet ez után simán fel lehet használni a programban az egyenesek metszésének vizsgálatára. Ha megvan a metszéspont akkor megnézzük hogy az eleme-e a két szakasznak. Ha igen akkor a szakaszok is metszik egymást. Lehet hogy nem a legoptimálisabb, de elvileg működik és kiindulási alapnak jó.
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #90737   2008.06.28 12:40 GMT+1 óra  
Ki szeretném számolni 2 szakasz metszéspontját (ha van).
Régebben találtam valahol a neten egy leírást, példaprogramot, valószínűleg onnan származik ez a megoldás:
Kód:
unsigned short Metszespont(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, double &x, double &y)
{
    double nevezo = (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1);
    double szamlalo_a = (x4-x3)*(y1-y3)-(y4-y3)*(x1-x3);
    double szamlalo_b = (x2-x1)*(y1-y3)-(y2-y1)*(x1-x3);

    if( nevezo == 0. )
    {
        if( szamlalo_a == 0. && szamlalo_b == 0. )
        {
            return 0;  // egybevágó
        }
        return 1;      // párhuzamos
    }

    double ua = szamlalo_a / nevezo;
    double ub = szamlalo_b / nevezo;

    if( ua >= 0. && ua <= 1. && ub >= 0. && ub <= 1. )
    {
        // Metszéspont kiszámítása
        x = x1 + ua*(x2 - x1);
        y = y1 + ua*(y2 - y1);
        return 2;       // metsző
    }

    return 3;  // nincs metszéspontjuk
}

A visszatérési érték mutatja meg a 2 szakasz helyzetét, ha 2 akkor az x, y változók tárolják a metszéspont koordinátáit.

Az imént elkezdtem tesztelgetni, s nagyjából működik is, egy dolgot kivéve.
Amikor úgy adom meg a 2 szakasz 2-2 végpontját, hogy azok egy egyenesen vannak, akkor a függvény 0-t ad vissza, mintha a 2 szakasz egybeesne.
Pl.:
P1(0, 0); P2(10, 0);
P3(20, 0); P4(30, 0);
Ha P1P2 az egyik szakasz és P3P4 a másik szakasz, akkor ugye 3-mat kéne kapnom, mert a két szakasznak nincs közös pontja. A függvény meg 0-t ad vissza.

Az a baj, hogy a leírást már nem találom, és ezt iskolában sem tanultuk, így nem igen tudok mit kezdeni a jelenséggel, lévén nem értem, mit csinál a függvény.

Bárminemű segítséget, ötletet szívesen fogadok.

   
TPG - Tag | 3402 hsz       Online status #84410   2008.04.03 09:04 GMT+1 óra  
Koord. geom.-ból levezetve:

ha a kör középpontja egybeesik az origóval: X = +/-sqrt(r^2-c^2) ; c a konstans ahol az egyenes metszi y-t, r pedig a kör sugara; Lényegében ezt írta Joga is.

Ha a kör középpontja nem esik egybe az origóval: X = U+/-sqrt( r^2-(c-V)^2 ); a kör középpontja a O(U;V) koordinátájú pont (ez utóbbi képletnek lehet hogy nem ártana utánaszámolni hátha elszámoltam valahol).
Reality is almost always wrong. - House

   
Asylum - Törzstag | 5444 hsz       Online status #84409   2008.04.03 08:53 GMT+1 óra  
azért mondannám énis inkább az analitikus módszert mert több dimenzióban nembiztos hogy van pitagorasz tétel (pedig van).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
TPG - Tag | 3402 hsz       Online status #84408   2008.04.03 08:52 GMT+1 óra  
Idézet
Joga :
Az egyenes, ami merőlegesen metszi az y tengelyt az legyen e
Nah sztem bacce arra gondolt, hogyha e egyeneből szerkesztenénk egy merőlegest az x tengelyre, akkor hol metszi


tehát az e egyenes és a kör metszéspontjának akarta az x koordinátáját
Ez az egyenes egyenlete, kör egyenlete jól hangzik, de sztem pitagorasszal egyszerűbb


Szerk.: Vagy ha a kör középpontja nincs az origóban, akkor kivonással oda kell tologatni, viszont akkor már lehet, hogy inkább kör és egyenes egyenlete


Koord. geom. problémát koord. geom. módszerekkel szép megoldani, Pit. tétellel is kijön de az hogy néz már ki. Ebben az esetben a kör egyenletébe helyettesítve egy szimpla másodfokú egyenletet kapunk aminek a megoldóképletét felírva helyben is vagyunk, a proginak csak be kell helyettesítenie.
Reality is almost always wrong. - House

   
Asylum - Törzstag | 5444 hsz       Online status #84405   2008.04.03 08:41 GMT+1 óra  
elirtam

http://people.inf.elte.hu/asylum/feladat.png

remélem a cacheben nem a hülyeség maradt ott
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bacce - Bacce | 1783 hsz       Online status #84404   2008.04.03 08:39 GMT+1 óra  
Ezt akartam megvalósítani, köszi a segítséget... 698-nahezazxd.zip
Joga: jah, pitagorasz, a gyök megizzasztott picit, de meglett az is.
TPG: jah, elírtam.
Making the world a better place, one line of code at a time.
http://bacce.uw.hu
   
Joga - Törzstag | 1791 hsz       Online status #84402   2008.04.03 08:34 GMT+1 óra  
Az egyenes, ami merőlegesen metszi az y tengelyt az legyen e
Nah sztem bacce arra gondolt, hogyha e egyeneből szerkesztenénk egy merőlegest az x tengelyre, akkor hol metszi


tehát az e egyenes és a kör metszéspontjának akarta az x koordinátáját
Ez az egyenes egyenlete, kör egyenlete jól hangzik, de sztem pitagorasszal egyszerűbb


Szerk.: Vagy ha a kör középpontja nincs az origóban, akkor kivonással oda kell tologatni, viszont akkor már lehet, hogy inkább kör és egyenes egyenlete
(ಠ ›ಠ) Stewie!

   
TPG - Tag | 3402 hsz       Online status #84401   2008.04.03 08:29 GMT+1 óra  
Idézet
Bacce :
izé... csak a pontot ismerem az y tengelyen, meg a sugarat, Vagy én értettem félre, akkor léci egy rajzot csinálj már hogy hogy.
Szerk: bocs hogy ilyen nem matekosan fogalmaztam.
Szal az y tengelyen egy pont adott, meg a kör sugara, meg a kör középpontja, az O.
És a kérdés hogy hol metszi a kört az y-ból húzott vonal ami merőleges az x tengelyel... fú, kezdek már én is belekavarodni....


Nem párhuzamos az x tengellyel? Legalábbis a rajzon az van.
Reality is almost always wrong. - House

   
TPG - Tag | 3402 hsz       Online status #84400   2008.04.03 08:26 GMT+1 óra  
Idézet
Bacce :
Nah, a matematika tanulmányaim kb annyit jelentenek hogy betanultam a feladatok elvégzésének scriptjét és érettségin előadtam, aztán töröltem az agyamból a catch-t... Szóval a problémám a következő.

Hogy tudnám kiszámolni hogy az y tengelyen megadott egyenes hol metszi a kört az x-re vetítve?
Remélem érthetően magyaráztam mert már a nyelvezetét is elfelejtettem a tudományágnak.XD


Belépőszintű koord. geom. Fogod az egyenes egyenletét (y=konstans, ahol metszi az y tengelyt) és a kör egyenletét (benne van a függvénytáblában az általános alak), felírod ezekre a kétismeretlenes egyenletrendszert (ami valójában ezesetben csak egyismeretlenes lesz mivel y-t azonnal ki lehet ütni) és megoldod. A kapott x a metszéspont x koord.-ja lesz y pedig konstans, azt nem nagyon kell számolgatni.
Reality is almost always wrong. - House

   
Asylum - Törzstag | 5444 hsz       Online status #84399   2008.04.03 08:26 GMT+1 óra  
meröleges a mi? inkább párhuzamosnak látszik
na akkor számolok + rajzolok
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bacce - Bacce | 1783 hsz       Online status #84398   2008.04.03 08:04 GMT+1 óra  
Joga: ééértem... Thx. Pff... megpróbálom.
Making the world a better place, one line of code at a time.
http://bacce.uw.hu
   
Joga - Törzstag | 1791 hsz       Online status #84397   2008.04.03 08:00 GMT+1 óra  
Akkor az kell neked, amit az előbb írtam
(ಠ ›ಠ) Stewie!

   
Bacce - Bacce | 1783 hsz       Online status #84396   2008.04.03 07:59 GMT+1 óra  
izé... csak a pontot ismerem az y tengelyen, meg a sugarat, Vagy én értettem félre, akkor léci egy rajzot csinálj már hogy hogy.
Szerk: bocs hogy ilyen nem matekosan fogalmaztam.
Szal az y tengelyen egy pont adott, meg a kör sugara, meg a kör középpontja, az O.
És a kérdés hogy hol metszi a kört az y-ból húzott vonal ami merőleges az x tengelyel... fú, kezdek már én is belekavarodni....
Making the world a better place, one line of code at a time.
http://bacce.uw.hu
   
Asylum - Törzstag | 5444 hsz       Online status #84395   2008.04.03 07:57 GMT+1 óra  
mi adott? egy feladatot mindig ugy kezdünk hogy mi adott mert ebböl igy l*szart nemtudok mondani

az egyenes és a kör metszéspontja kell? vagy az hogy a kör hol metszi az x tengelyt?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #84394   2008.04.03 07:55 GMT+1 óra  
Sima pitagorasz tétel:

x, y : befogó
sugár : átfogó

y = y
x = gyökfüggvény( r * r - y * y )
(ಠ ›ಠ) Stewie!

   
Bacce - Bacce | 1783 hsz       Online status #84392   2008.04.03 07:53 GMT+1 óra  
Nah, a matematika tanulmányaim kb annyit jelentenek hogy betanultam a feladatok elvégzésének scriptjét és érettségin előadtam, aztán töröltem az agyamból a catch-t... Szóval a problémám a következő.

Hogy tudnám kiszámolni hogy az y tengelyen megadott egyenes hol metszi a kört az x-re vetítve?
Remélem érthetően magyaráztam mert már a nyelvezetét is elfelejtettem a tudományágnak.XD
Making the world a better place, one line of code at a time.
http://bacce.uw.hu
   
PowR - Tag | 46 hsz       Online status #80701   2008.01.30 14:26 GMT+1 óra  
Kösz Matzi!
A 2. lehetőség amit javasoltál az bevált. A játék elején számoltam csak merőlegest és azt nem is módosítom, csak akkor ha a két játékos valamelyike kilép a síkból (oldalaz), ekkor csak el kell forgatnom ezt a vektort. Hisz a síkból kilépés az azt jelenti, hogy a két játékost összekötő szakasz felezőpontja körül forgatok.
   
Asylum - Törzstag | 5444 hsz       Online status #80699   2008.01.30 14:13 GMT+1 óra  
vedd az abszolútértékét a megfelelő koordinátának (vagy annak a -1 szeresét)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Matzi - Szerkesztő | 2519 hsz       Online status #80698   2008.01.30 14:08 GMT+1 óra  
Mondjuk csináld azt, hogya a két karakter helyet cserél, akkor a vektor két végét is megcseréled, addig meg nem engeded a kamerát sokat mozdulni, így egy kis glitch sem lesz észrevehető.
Vagy azt is csinálhatod, hogy beleállítasz a karakterbe egy vektort, ami a kamera felöli oldalra néz, és azt nem forgatod együtt a karakterrel, ha másik irányba kezd el nézni, hanem csak akkor változtatsz rajta, ha oldalazva másik síkba lép át. Aztán csak annyit csinálsz, hogy a két játékos vektorát átlagolod, és ezzel meg is van a megfelelő egyenes, és az irány is. Ezzel azt is meg tudod oldani, hogy a karakter tudja mikor kell megfordulni, mert amikor a másik módszerrel a kamera átrepülne, akkor tudod, hogy a karakter hátraarcot kell levágjon.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
PowR - Tag | 46 hsz       Online status #80697   2008.01.30 13:58 GMT+1 óra  
Hi!
Egy kis segítség kellene, mert már itt tépem az agyam, de nem tudok rájönni 1 dologra:
3D verekedős játékot írnék. A kamerát + mozgást úgy szeretném megcsinálni, mint a mortal4-ben van. Annyi lenne a problémám a kamerával, hogy én azt úgy oldottam meg, hogy leegyszerüsítettem 2d-re (mortalban is úgy van), szal elhagytam az y koordinátát (függőleges irány) és így a két játékosnál ugye kapok 2 pontot, ahol vannak, amik nem eshetnek egybe. Ezek meg6ároznak 1 egyenest, erre lövök egy merőleges vektort, ami a 2 player által meg6ározott szakasz közepébe fog mutatni innen fogok nézni (persze olyan hosszúra állítom, hogy mindkét játékos látszódjon stb). Na de itt kezdődik a problémám, ugyanis a merőleges vektor iránya függ attól, hogy sorrendben melyik player koordinátáit veszem, így az egyenesre 2 oldalról mutathat, még ez sem lenne baj, hiszen kiválaszt6nék egyet, hogy az a jó. A gond ott jön, hogy ha a két player helyet cserél akkor a kamera is szépen 180 fokban fordul. És ez nem jó. Az lenne a kérdésem, hogy honnan döntsem el, hogy a két merőleges vektor közül melyiket kell hsználni? Nagyon fontos lenne, mert a mozgásnál is döntő lenne ez a vektor, ugyanis ez 6ározná meg, hogy merre megyünk, ha előrét vagy hátrát nyomunk. Léci segítsetek!
   
Matzi - Szerkesztő | 2519 hsz       Online status #80641   2008.01.30 07:18 GMT+1 óra  
Pontosan. Most nézem, hogy kihagytam egy "adja" szót, így kicsit suta lett a mondat. A keresztszorzat szabályai miatt nem probléma, hogy a szögnek nem tudjuk az irányát. Most így hirtelen nem tudom, de mintha az egy vonalba eső két vektor keresztszorzata nullvektort adnak ki, szóval azzal nem árt vigyázni, illetve a 180°hoz nagyon közeli szögeknél a pontatlanság okozhat problémákat. A linken lévő mátrix fog kelleni valószinüleg.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Orphy - Törzstag | 1893 hsz       Online status #80637   2008.01.30 06:33 GMT+1 óra  
Tehát ha jól értem, akkor a kereszszorzat adta vektor körül fogok forgatni (miután normalizáltam azt), a két vektor skaláris szorzatából kinyert szöggel.

Egy megadott egységvektor körüli forgatásra ezt találtam:
Axis Angle rotation
   
Matzi - Szerkesztő | 2519 hsz       Online status #80632   2008.01.30 04:53 GMT+1 óra  
Keresztszorzattal megcsinálhatod a tengelyt, ami körül kell forgatni, és skaláris szorzat a szöget.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Orphy - Törzstag | 1893 hsz       Online status #80630   2008.01.30 04:12 GMT+1 óra  
Nem teljesen tiszta, 3D-s vektoroknál mit ad a skaláris szorzat.
Addig ok, hogy a két vektor közrezárt szögét.

De ugye csak egy cos értéket ad vissza a dot product, ez egyetlen szögnek a koszinusza.
Ez 2D-ben egyértelmű, de 3D-ben pontosan ez mi is? Melyik síkon? Ez kicsit kevés információ egy forgómátrix elkészítéséhez.

Ha azt mondom, hogy a két vektornál úgy keresem pl az X tengely körüli forgatás mértékét, hogy az X-es koordinátákat "lefelejtem" a vektorokról így visszavezetve 2D-re, akkor meg nem kapok jó eredményt.

pl:
va = (0;1;0)
vb = (0;0;1)

mivel ez a két vektor egymásra merőleges, az összes skaláris szorzat 0 lesz.
Viszont ahhoz, hogy a va-t átvigyem vb-be, elég csak az X tengely mentén 90 fokkal forgatni egyet...


Akkor most ez hogy is van?
   
Asylum - Törzstag | 5444 hsz       Online status #80611   2008.01.29 17:06 GMT+1 óra  
közbezárt szög kiszámol, forgatási mátrix készít.
pl. cos tétellel
mivel normalizáltak ezért a hosszuk 1 tehát nemiskell sokat számolni
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
fpeti - Törzstag | 1290 hsz       Online status #80610   2008.01.29 16:35 GMT+1 óra  
Ha vectoriálisan normát számolsz a síkukra, az lehetne a forgatási tengely, a bezárt szögük meg ugye dotp., akkor kvaterinóval is lehet, meg van erre DX is:
D3DXMatrixRotationAxis() forgat tenegely körű'
   
Orphy - Törzstag | 1893 hsz       Online status #80600   2008.01.29 14:24 GMT+1 óra  
Bocsi a kérdésért, de kicsit már régen volt, az agyam meg leginkább valami kifacsart citromra hasonlít jelenleg...

Van két normalizált 3D-s vektorom.
Az egyikből a másikba átforgató transzformációs mátrixot keresem...

   
Asylum - Törzstag | 5444 hsz       Online status #72144   2007.10.23 07:47 GMT+1 óra  
beeevprog idén szoftver szigo ugyh elö kell vennem mindenképp
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
gaborlabor - Moderátor | 4449 hsz       Online status #72117   2007.10.23 01:51 GMT+1 óra  
mondtam én
bár sosem láttam hanoi tornyaira nem rekurzív megoldást, és semmiféle tételről sem volt szó, de azt mondták, hogy minden rekurzív algoritmust át lehet írni nem rekurzívra.

   
Jedi - Tag | 175 hsz       Online status #72115   2007.10.23 01:46 GMT+1 óra  
Idézet
Asylum :
Nos a Hanoi tornyai problémát csak rekurzívan lehet ha jól tudom. Ezért van az hogy már viszonylag kis n ekre is kib. sok ideig tart még egy gépnek is.



Hmm, Te hogyan is mentel at bevprogbol? Ott az egyik tetel emlekeim szerint a rekurzio es a ciklus ekvivalenciajanak bizonyitasa...