|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
[OpenGL] Intruppare con gli oggetti
Ciao a tutti!
Sto programmando con le OpenGL da poco e vorrei cominciare a creare i primi "scontri" tra quadrati :P o per lo meno definire i limiti dell'area in cui posso far muovere 1 quadrato. (non so se mi spiego ad esempio il gioco snake ha l'arena che avrà degli spazi definiti e io devo definire quand'è che se il mio oggetto tocca la fine non puo piu andare avanti). Spero di essere stato abastanza chiaro e attendo vostri aiuti. Ciao ciao! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Vorresti quindi un algoritmo per gestire le collisioni ?
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
Si magari anche commentato in modo da capirlo grazie!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
Saro cocciuto io ma non ci capisco niente su quel manuale!Fino al texturing quasi ci sono ma da li in poi
Non avreste un pezzetto di codice commentato? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma hai la letto la spiegazione nella pagina o hai scaricato direttamente il codice ? Non credo che tu riesca a trovare codice più commentato di quello...
Purtroppo i tutorial NeHe tradotte in italiano ci sono solo fino alla 29... |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
E si lo so...ma il mio problema non è troppo l'inglese ma è il concetto che non riesco a capire. Ecco perchè avrei preferito un pezzetto di codice scritto da qualcuno (no NeHe). Comunque non fa niente ora mi metto a studiare :P
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
più che altro per risolvere questo problema devi lavorare di logica più che di codice, se hai strutture come quadrati ho sfere i concetti sono molto semplice ma appena vai con strutture più complesse la cosa diventa molto più difficile, un consiglio cerca di ridurre sempre le strutture ai minimi almeno a livello di impatto non di disegno, cioè.. per esempio se hai un personaggio simile ad un uomo non ti metti a costruire tutti i controlli per tutto il personaggio ma gli crei un quadrato o una serie di quadrati intorno...
Un'altro consiglio vai a seguire le lezioni di geometria ad ingegneria, parlano appunto di strutture 3d che al primo impatto sembra che non servono a niente ma poi si rilevano utili. Es: P1=punto1; P2=punto2; quesito: controllare se punto1 tocca o è all'interno di una sfera di raggio r intorno a punto2. risposta: r^2=(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2;il punto1 tocca la sfera intorno a punto2. r^2<(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2;il punto1 è all'esterno della sfera intorno a punto2. r^2>(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2; il punto2 è all'interno della sferaintorno a punto2. Ciao. Ultima modifica di tglman : 04-04-2005 alle 13:32. |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
Grazie 1000!Sto cominciando a capire. Ma quelle sono condizioni? Potresti solo implemetarmele sotto forma di codice per capire come le devo mettere nel mio codice?
Comunque non posso seguire le lezioni di Ingenieria ho solo 16 anni :P Devo finire le superiori! Grazie ancora!!! |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
be quella specie di cosa buffa che ho scritto sopra si può definire matematica, se la vuoi in codice te la faccio in c....
Codice:
int xp1,yp1,yp1,xp2,yp2,zp2;///sono la coordinate di due oggetti o meglio due punti in uno spazio 3 d.
int r; //è il raggio di una sfera costuita intorno al secondo punto(xp2,yp2,zp2)
.......................................
///inizializzo i valori e eseguo tutte la altre operazioni
.......................................
if(q(xp1-xp2)+q(yp1-yp2)+q(zp1-zp2)<=q(r))
{
//codice in caso che il punto1 sia interno o sulla sfera
}
else
{
//codice in caso che il punto1 sia esterno alla sfera
}
//definisco una funzione che mi fa il quadrato di un numero per semplificare le
cose
int q(int val){ret val*val;}
Per l'università puoi seguire anche se non sei iscritto e anche se hai 16 anni ma penso che non è un ambiente tanto famigliare, in mezzo a quella gente.... Ciao.. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Nel caso di due sfere ivece che di una sfera e un punto dovrebbe essere cosi:
Codice:
if(q(xp1-xp2)+q(yp1-yp2)+q(zp1-zp2)<=q(rp1+rp2)) Ciao. Ultima modifica di tglman : 05-04-2005 alle 10:25. |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Nov 2004
Città: Roma
Messaggi: 34
|
Grazie 1000!!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:07.


















