Shirogane
3rd December 2010, 14:40
In realtà più che un problema di programmazione è un problema riguardante il metodo che sto usando che inizio a pensare sia sbagliato di peso.
Sto scrivendo alcuni metodi in c# che dovremo poi riciclare sulla tesi, uno di questi metodi che pensavo fosse banale invece mi sta dando problemi.
Nel nostro mondo virtuale gli oggetti sono un insieme di celle quadrate composte da 4 segmenti, un edificio ad esempio di forma quadrata per banalizzare è quindi costituito da un'array multidimensionale di oggetti cella con tante righe quante colonne.
Ora voglio implementare un metodo che consenta di ruotare tale edificio sul proprio baricentro di un certo numero di gradi per poter testare successivamente l'applicazione di varie forze fisiche, per attuare tale rotazione effettuo il calcolo del baricentro dell'edificio (che sono sicuro sia esatto) poi successivamente esprimo ogni segmento (che abbiamo definito come interpolazione di 2 punti estremi A e B) di cui è composta ogni singola cella in funzione delle coordinate del baricentro (cambio quindi sistema di riferimento), ad esempio facendo Xpunto-Xbaricentro=Xnuova.
Fatto ciò applico una matrice di rototraslazione cosi costituita
| cos(alpha) -sen(alpha) | | Xnuova | |Xrisultante |
| sen(alpha) cos(alpha) | * | Ynuova | = | Yrisultate |
(* prodotto tra matrici, alpha numero di gradi di cui voglio ruotare)
al risultato poi risommo le coordinate del baricentro per ritornare in coordinate assolute e opero cosi per ogni coppia di punti A e B (quello sopra è il procedimento per un solo ipotetico punto A) ritraccio ogni segmento con le coordinate dei punti estremi aggiornate e dovrebbero essere ruotati del numero di gradi forniti rispetto al baricentro dell'edificio.
Ora questo metodo funziona solo per alcuni valori tipo se inserisco 45° ruota l'edificio correttamente, per altri valori invece lo ruota sempre attorno al baricentro ma sembra "tirato" tutto da un'lato.
Il problema è + che altro matematico, il codice dovrebbe essere giusto al 90% quindi probabilmente non tengo in considerazione qualcosa nel metodo che applico...qualcuno ne capisce qualcosa e può aiutarmi? :D
io ho finito le idee
Sto scrivendo alcuni metodi in c# che dovremo poi riciclare sulla tesi, uno di questi metodi che pensavo fosse banale invece mi sta dando problemi.
Nel nostro mondo virtuale gli oggetti sono un insieme di celle quadrate composte da 4 segmenti, un edificio ad esempio di forma quadrata per banalizzare è quindi costituito da un'array multidimensionale di oggetti cella con tante righe quante colonne.
Ora voglio implementare un metodo che consenta di ruotare tale edificio sul proprio baricentro di un certo numero di gradi per poter testare successivamente l'applicazione di varie forze fisiche, per attuare tale rotazione effettuo il calcolo del baricentro dell'edificio (che sono sicuro sia esatto) poi successivamente esprimo ogni segmento (che abbiamo definito come interpolazione di 2 punti estremi A e B) di cui è composta ogni singola cella in funzione delle coordinate del baricentro (cambio quindi sistema di riferimento), ad esempio facendo Xpunto-Xbaricentro=Xnuova.
Fatto ciò applico una matrice di rototraslazione cosi costituita
| cos(alpha) -sen(alpha) | | Xnuova | |Xrisultante |
| sen(alpha) cos(alpha) | * | Ynuova | = | Yrisultate |
(* prodotto tra matrici, alpha numero di gradi di cui voglio ruotare)
al risultato poi risommo le coordinate del baricentro per ritornare in coordinate assolute e opero cosi per ogni coppia di punti A e B (quello sopra è il procedimento per un solo ipotetico punto A) ritraccio ogni segmento con le coordinate dei punti estremi aggiornate e dovrebbero essere ruotati del numero di gradi forniti rispetto al baricentro dell'edificio.
Ora questo metodo funziona solo per alcuni valori tipo se inserisco 45° ruota l'edificio correttamente, per altri valori invece lo ruota sempre attorno al baricentro ma sembra "tirato" tutto da un'lato.
Il problema è + che altro matematico, il codice dovrebbe essere giusto al 90% quindi probabilmente non tengo in considerazione qualcosa nel metodo che applico...qualcuno ne capisce qualcosa e può aiutarmi? :D
io ho finito le idee