-
cervelloni risolvetemi questo problemaScritto dagengivaUtente privileggiatoil 2012-05-23 21:32:48.0 alle 2012-05-23 21:32:48.0Trollate totali: 9100noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
ma se dovessimo determinare il comportamento di una sfera su di un terreno?
il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
come vi comportereste?
**Modificato dall'autore il 23.05.2012 21:35**Cercatelo con Google, ritardato! ©-
Re: cervelloni risolvetemi questo probleScritto daavvelenatoun mezzo cavalloil 2012-05-23 21:53:43.0 alle 2012-05-23 21:53:43.0Trollate totali: 14239Scritto da: gengiva
> noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
>
> questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
>
> ma se dovessimo determinare il comportamento di una sfera su di un terreno?
> il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
>
> come vi comportereste?
>
> **Modificato dall'autore il 23.05.2012 21:35**
non ho capito la parte delle colline. Le colline sono rappresentate dai quadrilateri sul terreno?
Ma domanda, se la sfera è una sfera (quindi 3d) perché i quadrilateri, che sono 2d?
poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?I pedoni possono muoversi solo in avanti.-
Re: cervelloni risolvetemi questo probleScritto dagengivaUtente privileggiatoil 2012-05-23 22:08:20.0 alle 2012-05-23 22:08:20.0Trollate totali: 9100Scritto da: avvelenato
> Scritto da: gengiva
> > noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
> >
> > questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
> >
> > ma se dovessimo determinare il comportamento di una sfera su di un terreno?
> > il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
> >
> > come vi comportereste?
> >
> > **Modificato dall'autore il 23.05.2012 21:35**
>
> non ho capito la parte delle colline. Le colline sono rappresentate dai quadrilateri sul terreno?
> Ma domanda, se la sfera è una sfera (quindi 3d) perché i quadrilateri, che sono 2d?
il terreno senza texture è così
i quadrilateri formano il terreno e hanno 3 coordinate per vertice (x,y,z)
> poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
l'obiettivo principale è quello di muovere la sfera in modo che segua l'andamento della terra e non ci passi attraverso, il classico collision detection di cui però non riesco a trovare esempi specifici o algoritmi generalizzati
**Modificato dall'autore il 23.05.2012 22:10**Cercatelo con Google, ritardato! ©-
Re: cervelloni risolvetemi questo probleScritto da: gengiva
> > poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
>
> entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
Praticamente vuoi trovare dove una retta parallela all'asse delle z e passante per il centro della sfera interseca un piano determinato dai 3 dei 4 vertici del quadrilatero (Approssimazione ! Non e' detto che il punto di contatto sia esattamente "sotto" la sfera - Piu' il quadrilatero non e' parallelo al terreno, piu' l'approssimazione va a ramengo)
Perche' non usi triangoli al posto di quadrilateri
?
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: cervelloni risolvetemi questo probleScritto dagengivaUtente privileggiatoil 2012-05-23 22:30:49.0 alle 2012-05-23 22:30:49.0Trollate totali: 9100Scritto da: Giambo
> Scritto da: gengiva
>
> > > poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
> >
> > entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
>
> Praticamente vuoi trovare dove una retta parallela all'asse delle z e passante per il centro della sfera interseca un piano determinato dai 3 dei 4 vertici del quadrilatero (Approssimazione ! Non e' detto che il punto di contatto sia esattamente "sotto" la sfera - Piu' il quadrilatero non e' parallelo al terreno, piu' l'approssimazione va a ramengo)
più o meno, in teoria (credo), bisognerebbe considerare tutti e 3 gli assi, perchè l'ostacolo può essere in qualsiasi direzione, o no? esempio: saltando potrei incontrare un soffitto in direzione y oppure con uno spostamento laterale potrei trovare un muro
> Perche' non usi triangoli al posto di quadrilateri
?
>
bella domanda, ci ho pensato e ho visto che ci sono diverse scuole di pensiero
io mi trovo meglio con i quadrilateri, perché unisco le linee con due cicli for innestati come se fosse una matrice e boh, mi è venuto naturale così
Cercatelo con Google, ritardato! ©
-
-
Re: cervelloni risolvetemi questo probleScritto daavvelenatoun mezzo cavalloil 2012-05-24 11:00:02.0 alle 2012-05-24 11:00:02.0Trollate totali: 14239Scritto da: gengiva
> Scritto da: avvelenato
> > Scritto da: gengiva
> > > noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
> > >
> > > questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
> > >
> > > ma se dovessimo determinare il comportamento di una sfera su di un terreno?
> > > il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
> > >
> > > come vi comportereste?
> > >
> > > **Modificato dall'autore il 23.05.2012 21:35**
> >
> > non ho capito la parte delle colline. Le colline sono rappresentate dai quadrilateri sul terreno?
> > Ma domanda, se la sfera è una sfera (quindi 3d) perché i quadrilateri, che sono 2d?
>
> il terreno senza texture è così
>
>
> i quadrilateri formano il terreno e hanno 3 coordinate per vertice (x,y,z)
>
> > poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
>
> entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
>
> l'obiettivo principale è quello di muovere la sfera in modo che segua l'andamento della terra e non ci passi attraverso, il classico collision detection di cui però non riesco a trovare esempi specifici o algoritmi generalizzati
>
> **Modificato dall'autore il 23.05.2012 22:10**
per la gravità imho dovresti calcolare una mappa col gradiente delle altezze, così a seconda delle coordinate hai il vettore corrispondente all'inclinazione.
per la collisione imho devi considerare un array di coordinate corrispondente ai vertici che si trovano nell'area della sfera.
Quindi se la sfera è (x1-x)2+(y1-y)2+(z1-z)2=r2, si trova in x1,y1,z1: tu devi trovare tutti i vertici dei rettangoli del terreno (xt(i),yt(i),zt(i) ) tali che (x1-xt(i))2+(z1-zt(i))2<=r2
da lì poi capire su quale vertice collide... ci sto ancora pensando. bel quesito btw. Mi fai ritornare al periodo in cui ero giovane e pieno di entusiasmo
I pedoni possono muoversi solo in avanti.-
Re: cervelloni risolvetemi questo probleScritto daNon Autenticatoil 2012-05-24 12:19:20.0 alle 2012-05-24 12:19:20.0> > > > noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
> > > >
> > > > questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
> > > >
> > > > ma se dovessimo determinare il comportamento di una sfera su di un terreno?
> > > > il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
> > > >
> > > > come vi comportereste?
> > > >
> > > > **Modificato dall'autore il 23.05.2012 21:35**
> > >
> > > non ho capito la parte delle colline. Le colline sono rappresentate dai quadrilateri sul terreno?
> > > Ma domanda, se la sfera è una sfera (quindi 3d) perché i quadrilateri, che sono 2d?
> >
> > il terreno senza texture è così
> >
> >
> > i quadrilateri formano il terreno e hanno 3 coordinate per vertice (x,y,z)
> >
> > > poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
> >
> > entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
> >
> > l'obiettivo principale è quello di muovere la sfera in modo che segua l'andamento della terra e non ci passi attraverso, il classico collision detection di cui però non riesco a trovare esempi specifici o algoritmi generalizzati
> >
> > **Modificato dall'autore il 23.05.2012 22:10**
>
> per la gravità imho dovresti calcolare una mappa col gradiente delle altezze, così a seconda delle coordinate hai il vettore corrispondente all'inclinazione.
>
> per la collisione imho devi considerare un array di coordinate corrispondente ai vertici che si trovano nell'area della sfera.
>
> Quindi se la sfera è (x1-x)2+(y1-y)2+(z1-z)2=r2, si trova in x1,y1,z1: tu devi trovare tutti i vertici dei rettangoli del terreno (xt(i),yt(i),zt(i) ) tali che (x1-xt(i))2+(z1-zt(i))2<=r2
>
> da lì poi capire su quale vertice collide... ci sto ancora pensando. bel quesito btw. Mi fai ritornare al periodo in cui ero giovane e pieno di entusiasmo
Sicuramente è un problema che è stato già affrontato e risolto da qualcuno. alex.tg scommetto che l'ha fatto.
-
Re: cervelloni risolvetemi questo probleScritto dagengivaUtente privileggiatoil 2012-05-24 15:02:13.0 alle 2012-05-24 15:02:13.0Trollate totali: 9100Scritto da: avvelenato
> Scritto da: gengiva
> > Scritto da: avvelenato
> > > Scritto da: gengiva
> > > > noi sappiamo che due sfere A e B di cui conosciamo il centro e il raggio (ax,ay,az,ar) e (bx,by,bz,br) si intersecano se (ax-bx)2+(ay-by)2+(az-bz)2 < (ar+br)2
> > > >
> > > > questo va bene se dobbiamo determinare una collisione tra due corpi distinti trattati come se fossero delle sfere
> > > >
> > > > ma se dovessimo determinare il comportamento di una sfera su di un terreno?
> > > > il terreno ha colline di varia altezza ed è composto da quadrilateri di cui conosciamo le coordinate dei vertici nello spazio (è un reticolo per intenderci). la mia idea era quella di determinare l'altezza di ogni punto e muovere la sfera di conseguenza ma mi sbagliavo, perché va a finire che quest'ultima segue i singoli vertici, senza considerare l'inclinazione dei piani e muovendosi a "scatti" (di punto in punto) andrebbe bene se il reticolo avesse una spaziatura di 0.5 , ma con un offset regolabile questo non è accettabile (trama fine 0.5 = il doppio dei poligoni)
> > > >
> > > > come vi comportereste?
> > > >
> > > > **Modificato dall'autore il 23.05.2012 21:35**
> > >
> > > non ho capito la parte delle colline. Le colline sono rappresentate dai quadrilateri sul terreno?
> > > Ma domanda, se la sfera è una sfera (quindi 3d) perché i quadrilateri, che sono 2d?
> >
> > il terreno senza texture è così
> >
> >
> > i quadrilateri formano il terreno e hanno 3 coordinate per vertice (x,y,z)
> >
> > > poi: vuoi sapere come fare a determinare il contatto tra sfera o terreno o simulare l'effetto della gravità tenendo conto delle pendenze del terreno?
> >
> > entrambe le cose, anche se l'effetto della gravità (accelerazione in pendenza ecc) è meno importante per ora.
> >
> > l'obiettivo principale è quello di muovere la sfera in modo che segua l'andamento della terra e non ci passi attraverso, il classico collision detection di cui però non riesco a trovare esempi specifici o algoritmi generalizzati
> >
> > **Modificato dall'autore il 23.05.2012 22:10**
>
> per la gravità imho dovresti calcolare una mappa col gradiente delle altezze, così a seconda delle coordinate hai il vettore corrispondente all'inclinazione.
>
> per la collisione imho devi considerare un array di coordinate corrispondente ai vertici che si trovano nell'area della sfera.
>
> Quindi se la sfera è (x1-x)2+(y1-y)2+(z1-z)2=r2, si trova in x1,y1,z1: tu devi trovare tutti i vertici dei rettangoli del terreno (xt(i),yt(i),zt(i) ) tali che (x1-xt(i))2+(z1-zt(i))2<=r2
>
> da lì poi capire su quale vertice collide... ci sto ancora pensando. bel quesito btw. Mi fai ritornare al periodo in cui ero giovane e pieno di entusiasmo
no era una stronzata, l'ho risolto
praticamente è il processo inverso a quello che uso per muovere la camera: ruotando il mouse gli dai l'angolo verticale o orizzontale, di conseguenza per spostarsi in una determinata direzione si fa
esempio: muoversi avanti
raggioE è la velocità
x=raggioE*sin(angoloO)+x;
z=raggioE*cos(angoloO)+z;
y=raggioE*sin(angoloV)+y; //facoltativo, serve ad alzarsi
quindi quello che mi serve è l'angolo V del piano su cui mi devo spostare e si risolve tranquillamente calcolando la distanza e l'altezza del punto successivo rispetto a dove mi trovo in quel momentoCercatelo con Google, ritardato! ©
-
-
-
-