Torna indietro   Hardware Upgrade Forum > Software > Programmazione

GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-06-2007, 16:10   #1
x-t
Member
 
Iscritto dal: Sep 2006
Messaggi: 207
Aiutatemi con questo algoritmo, vi prego! Sto esaurendo

Salve a tutti.
Ho qualche problemino con un algoritmo.
Di seguito vi posto il metodo (io l'ho fatto in java, ma ovviamente non è un problema di linguaggio). Questo deve verificare se 2 segmenti si intersecano (il tutto in coordinate cartesiane).
In ingresso prende 2 coppie x, y; ogni coppia rappresenta un segmento.
La funzione deve restituire vero se si intersecano, falso altrimenti.
____________________________________________________
public boolean si_intersecano(double x11,double y11,double x21,double y21,double x12,double y12,double x22,double y22){
//primo segmento
//x11
//y11
//x21
//y21
//secondo segmento
//x12
//y12
//x22
//y22

double a= (y21-y11);
double b=(x11-x21);
double c=x11*(y11-y21)+y11*(x21-x11);//l'equazione ax + by + c=0 rappresenta la retta che contiene il segmento 1, caratterizzato dai punti: (x11,y11) (x21,y21)
double d=(y22-y12);
double e=(x12-x22);
double f=x12*(y12-y22)+y12*(x22-x12);//l'equazione dx + ey + f=0 rappresenta la retta che contiene il secondo segmento, caratterizzato dai punti: (x12,y12) (x22,y22)
double xint=0;//punto di intersezione x
if((a*e-b*d)!=0) xint=(-c*e+b*f)/(a*e-b*d);

double yint=0;//punto di intersezione y
if((a*e-b*d)!=0) yint=(-f*a+c*d)/(a*e-b*d);
if((a*e-b*d)==0 ) return false;
//se le rette sono parallele o sovrapposte ritorno falso,
//so che non è giusto, ma nel mio caso mi va bene



//ora dobbiamo verificare che il punto di intersezione appartenga ad entrambi i segmenti
double maxx1;
double maxy1;
double maxx2;
double maxy2;
double minx1;
double miny1;
double minx2;
double miny2;
if(x11>x21) {maxx1=x11; minx1=x21;} else {maxx1=x21; minx1=x11;}
if(y11>y21) {maxy1=y11; miny1=y21;} else {maxy1=y21; miny1=y11;}
if(x12>x22) {maxx2=x12; minx2=x22;} else {maxx2=x22; minx2=x12;}
if(y12>y22) {maxy2=y12; miny2=y22;} else {maxy2=y22; miny2=y12;}

if (xint<=maxx1 && xint<=maxx2 && xint>=minx1 && xint>=minx2 && yint<=maxy1 && yint<=maxy2 && yint>=miny1 && yint >= miny2) return true;
else return false;
}
__________________________________________________________
Dunque, risolvo un sistema di equazioni in 2 incognite, ottengo l'intersezione, e verifico che l'intersezione appartenga ad entrambi i segmenti.
Eppure, non funziona sempre!
Non capisco proprio dove sia il problema! sto esaurendo!
IMPORTANTE! anche se l'algoritmo considera 2 eventuali segmenti sovrapposti come segmenti che non si intersecano, questo non è importante ai miei fini, perchè nel mio caso è una situazione che non si presenta mai.
Il problema è da qualche altra parte, ma non capisco proprio dove.Aiutooooooooooo
x-t è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2007, 19:33   #2
Perry_Rhodan
Member
 
L'Avatar di Perry_Rhodan
 
Iscritto dal: Jul 2005
Città: Canelli
Messaggi: 158
Forse dico una cagata, nel qual caso scusami, ma non è che entra in gioco l'epsilon di macchina?
Cioè quando si confrontano dei valori double i due numeri potrebbero apparire diversi alla macchina anche se invece dovrebbero essere uguali, semplicemente perchè differiscono per una o più delle cifre meno significative a causa degli errori di arrotondamento.

es:

per la macchina A==B solo se tutti i bit di A e B coincidono

Ma se A e B hanno valori che differiscono di pochissimo tanto da essere praticamente uguali, per il computer continueranno ad essere diversi anche se questa differenza è solo dovuta agli arrotondamenti dei calcoli.

Contando l'epsilon di macchina dovresti avere:

A==B se |A-B|<= epsilon

Scusa se sono stato un po' contorto nella spiegazione
Perry_Rhodan è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2007, 19:53   #3
Perry_Rhodan
Member
 
L'Avatar di Perry_Rhodan
 
Iscritto dal: Jul 2005
Città: Canelli
Messaggi: 158
guarda questa faq java, forse può esserti utile:

http://www.javastaff.com/faq.php#r204
Perry_Rhodan è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2007, 23:41   #4
x-t
Member
 
Iscritto dal: Sep 2006
Messaggi: 207
ok....tutto risolto....ho trovato un algoritmo già bello e pronto....
Cmq (parlo con Perry_Rhodan), no, il problema non era quello; nel mio codice si trattava solo di trovare un'intersezione e fare delle verifiche di tipo maggiore minore ecc (che non potevano riguardare, nel mio caso, valori così piccoli da poter dare questi problemi)... quindi quei tipi di problemi non potevano presentarsi. Il problema riguardava sicuramente qualche oscura maligna riga di codice scritta male che voleva farmi esaurire.
Se qualcuno, in un futuro remoto, dovesse capitare nel mio stesso problema, può trovare l'algoritmo a questo indirizzo: http://www.cg-cad.com/ttlisp132.htm (non immediato da capire, ma quello che conta è che è funzionale al massimo).
Nel mio caso l'ho portato in java (con le opportune modifiche), e ho cambiato gli int con i double, e tutto ha funzionato alla perfezione! Santo subito chi l'ha messo su internet!
Grazie comunque dell'interessamento Perry_Rhodan !

Ultima modifica di x-t : 27-06-2007 alle 23:47.
x-t è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2007, 21:54   #5
a2000.1
Senior Member
 
L'Avatar di a2000.1
 
Iscritto dal: Aug 2004
Messaggi: 311
Quote:
Originariamente inviato da x-t Guarda i messaggi
...
Se qualcuno, in un futuro remoto, dovesse capitare nel mio stesso problema, può trovare l'algoritmo a questo indirizzo: http://www.cg-cad.com/ttlisp132.htm (non immediato da capire, ma quello che conta è che è funzionale al massimo).
...
mah
__________________
Senior Member
Registrato il: Jan 2001
Messaggi: 2609
a2000.1 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Incentivi auto elettriche, falsa partenz...
Silence crea anche in Francia una rete d...
La realtà mista al servizio degli...
Nothing ha un altro smartphone in progra...
Decisione storica ad Amburgo: i cittadin...
Questo è il nuovo motore elettric...
HUAWEI WATCH GT 6: lo smartwatch 'infini...
Fotografia con AI: ecco Caira, la macchi...
PlayStation 6 vs Xbox Magnus: il rumor s...
DJI Osmo Action 4 a soli 208€ su Amazon:...
Irion, la data governance diventa strate...
EHang VT35: debutta in Cina il nuovo aer...
Cooler Master MasterLiquid Atmos II 360:...
Trapela in rete la roadmap dei nuovi gio...
In Germania la prima centrale solare gal...
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: 17:05.


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