Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Politica, accademia e industria a confronto su mercato unico, sicurezza e competitività. Nei laboratori di Vimercate, Nokia ha mostrato le nuove generazioni di chip ottici e i test che ogni prodotto deve superare prima di arrivare sul mercato
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-06-2004, 17:37   #1
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
x cionci [vc6] Direct3d

ciao amico mio................. sto lavorando in direct3d e directx:

La domanda principale è:
Nella mappa che ho fatto devo valutare, dalle coordinate di dove mi trovo x e z se il punto, appunto x e z, si trova sul primo triangolo o il secondo.....................

mi spiego meglio:
Innanzitutto ogni quadrato della mappa è formato da 2 triangoli esempio:
0.....5 per la x
------/5
t1/t2|
/-----|0 per la y coordinate in pixel

anche se il disegno è in pò primordiale, si capisce che t1 è il primo triangolo e t2 è il secondo........ ora avendo le coordinate x e z riesco a prendere gli indici, del Indexbuffer che sono così costituiti:
0 1 2 per il primo triangolo t1 e 3 4 5 per t2 il secondo triangolo:
questa è la ma formula per estrarre gli indice dall'index buffer:

s=cz+3;

v1=pVertices[s].position;
v2=pVertices[s+1].position;
v3=pVertices[s+2].position;

cz+3 è perche prendo sempre gli indici + grandi in questo caso 3 4 5......... ora facendo i dovuti calcoli riesco a camminare in quota sul mio terreno................................ okay spiegato questo, passo alla domanda del tread:

se guardi il mio disegno e provi a verificare la coordinata x=2 e z=6 io mi trovo sul primo triangolo il problema è che estraggo gli indici del secondo triangolo quindi dovrei calcolare che le coordinate x=2 e z=6 fanno parte del primo triangolo ed estrarre gli indici 0 1 2 ovvero s=cz-3 e infatti camminerei in quota anche sul primo triangolo

per far questo ho pensato di prendere in considerazione la coordinata x tracciare una linea(lato) che congiunga un vertice di t1 vertice x=0 e y=0 (del primo triangolo e calcolare l'angolo e se l'angolo è >45° allora lascio s=cz+3 se <45° faccio s=cz-3
------------------------------
Allora cionci mi aiuti a sviluppare questo piccolo algoritmo, sono a digiuno di geometria di angoli ecc, ecc...............
------------------------------

questo è il mio algoritmo:

s=cz+3;


v1=pVertices[s].position;
v2=pVertices[s+1].position;
v3=pVertices[s+2].position;

/*
Nota: v1,v2,v3 sono vettori appartenenti alla struct quindi:
ora ho le coordinate del triangolo xyz
v1.x v1.y v1.z.........v2.x v2.y v3.z e v3.x v3.y v3.z.....chiaro?
*/

//Questa sotto per ricavare gli angolo ma tieni presente
// quello detto sopra

float theta, alfa, angle, xnew, ynew, pi=3.14f;
angle = 0;
for(int i=0; i<3;i++){

if(i==0){
theta = atan2(v1.x - x, v1.y - z);
xnew = (v2.x - x) * cos(theta) + (v2.y - z) * sin(theta);
ynew = (v3.y - z) * cos(theta) - (v3.x - x) * sin(theta);
}

if(i==1){
theta = atan2(v2.x - x, v2.y - z);
xnew = (v1.x - x) * cos(theta) + (v1.y - z) * sin(theta);
ynew = (v3.y - z) * cos(theta) - (v3.x - x) * sin(theta);
}

if(i==2){
theta = atan2(v3.x - x, v3.y - z);
xnew = (v1.x - x) * cos(theta) + (v1.y - z) * sin(theta);
ynew = (v2.y - z) * cos(theta) - (v2.x - x) * sin(theta);
}

alfa = atan2(ynew, xnew);

angle = angle + alfa;

}

if(fabs(angle)>pi){
s=cz;//estraggo gli indici 0 1 2
v1=pVertices[s].position;
v2=pVertices[s+1].position;
v3=pVertices[s+2].position;
}

....................................

//NON SONO SICURO DI QUESTA ROUTINE SOTTO
//PUOI CONTROLLARE................. gli if ed else if e naturalmente
// i valor passti e ritornati......

float CGame::atan2(float Y, float X)
{

float valore;
float pi,hpi;

pi=3.14f;

hpi=hpi/2;
if(X==0){
if(Y>0)
valore=hpi;

else if (Y<0)
valore=-hpi;

else

valore=0;
}
else if(Y==0){
if(X<0){
valore = pi;
} else{
valore = 0;
}

//}



}else{

if(X<0){
if(Y>0){
// atan2=atn(Y/X)+pi;
valore=tan(Y/X)+pi;

}else{
// atan2=atn(Y/X)-pi;
valore=tan(Y/X)-pi;
}

// }
}else{
// atan2 = Atn(Y / X);
valore = tan(Y / X);
}




}

//spero in tuo aiuto...................... ciao amico mio W asm
okay è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 18:50   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Fammi capire....tu in pratica vuoi sapere se un dato punto si trova su un triangolo o sull'altro ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 19:18   #3
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
si...............
okay è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 19:29   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Allora è molto più facile...
Devi trovare se un segmento fra il vertice in alto a destra (seguendo l'esempio) ed il punto da verificare interseca i meno il segmento in comune dei due triangoli...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 19:42   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Anzi se è un quadrato allora è molto più semplice (mi confermi che sia un quadrato ?)...
Codice:
//la funzione ritorna 0 per il tringolo 1 e 1 per il triangolo 2
inline int GetTringle(int x0, int y0)
{
   //per evitare di assegnare tutti i pnti sulla diagonale ad un
   //solo tringolo faccio questa cosa
   if(x0 == y0)
      return x0%2;
   if(y0 > x0)
      return 0; //trinagolo 1
   return 1; //altrimenti tringolo 2
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2004, 21:30   #6
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
si i due triangoli formano un quadrato...................

il proble è che che non capisco quali sono i vertici da passare
............ in effetti non sto a 2 dimensioni ma 3 dimensioni..............
guarda di nuovo il mio primo post

devo passare i vertici e per ogni triangolo sono 3 vertici costituiti dai punti:
v1.x v1.y v1.z
v2.x v2.y v2.z
v3.x v3.y v3.z

quali devo passare?????????
okay è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2004, 00:26   #7
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
okay...................
grazie cionci risolto!!!!!!!!!!!!
okay è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Ray-Ban Meta Audio: arrivano gli occhial...
Apple TV 4K: chip A19, CPU più veloce de...
Il mercato console sprofonda: i rincari ...
Apple Home Collection: videocamere 2,5K,...
Apple presenta HomeView, il nuovo hub do...
Apple HomePod mini 2 arriva in Italia: a...
SFSCON 2026: la sovranità digital...
Cooler Master GPU Shield arriva in Europ...
Wolters Kluwer Tax & Accounting pote...
NVIDIA accelera il DLSS 5: il nuovo mode...
Character.ai in bancarotta, Disney pront...
realme passa a ColorOS 17 con Android 17...
OPPO presenta ColorOS 17: più flu...
Giochi PS2 su smartphone Android: ARMSX2...
Ecco il nuovo tool semplificato per alle...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v