DomusP45
23-10-2013, 10:38
Salve a tutti,
sono un pò arrugginito in merito agli array con gli oggetti, e quindi vi chiedo aiuto su questo mio problema.
Devo creare una classe Cubo, definita da 8 punti e un puntatore a vettore di cubi, che altro non è che una lista di 8 oggetti cubo (se stessa in pratica). Ogni oggetto cubo è identificato da un vettore di 8 oggetti punto, dove punto è una struct fatta così:
struct punto{
double x;
double y;
double z;
bool V;
};
Ora, la classe deve essere caratterizzata da due funzioni:
1) Inizializza: che prende in ingresso x,y,z double ed un intero div (che indica la divisione) ed instanzia un numero di cubi iniziale in base a quanto ho diviso lo spazio di partenza con div. Esempio: viene dato 2000,2000,2000 e 4, inizializza divide le misure di questo spazio in 4 e quindi ne vengono fuori 64 cubi. Deve restiture in output il vettore di cubi.
2) verifica: che prende in ingresso un vettore di cubi e verifica con una funzione di retroproiezione su un'immagine se scartare o meno i vari cubi del vettore. Se non va bene, il cubo viene eliminato dalla vettore (vengono contrassegnati i punti come non buoni), altrimenti viene richiamata ricorsivamente su tutti i cubi buoni dopo che sono stati "esplosi" (cioè divisi in altri 8) con la funzione esplodi.
3) La funzione esplodi: prende in ingresso un cubo e lo divide in 8 (dividendo in due le tre misure) e restituisce in output il vettore di 8 sottocubi.
In pratica, immagino un grande cubo da 8 punti iniziali che rappresenta lo spazio in cui effettuo la foto dell'oggetto (dalla quale ottengo l'immagine binaria) e me li ricavo dalle dimensioni fornite in input (x,y,z) dopo di che:
1 - lancio inizializza, che mi restituisce un vettore di tot cubi in base a quanto è stato scelto di dividere;
2 - su tali cubi, lancio verifica, che mi indicherà quali cubi sono buoni e su cui lanciare "esplodi";
ripeto il punto 2 sui cubi usciti da esplodi.
Il discorso in schema è il seguente:
http://img401.imageshack.us/img401/6450/03u1.jpg
Dove con P indico i punti, con "C" i cubi di partenza e con "SC" i sottocubi.
In pratica è sempre l'oggetto cubo che viene "diviso" in altri 8 cubi più piccoli o cancellato dalla lista di partenza. Quello che dovrò ottenere alla fine è un vettore di cubi con i relativi punti selezionato man mano fino ad un limite fissato in partenza.
Come posso fare questa cosa?? Potete aiutarmi per favore???:muro
sono un pò arrugginito in merito agli array con gli oggetti, e quindi vi chiedo aiuto su questo mio problema.
Devo creare una classe Cubo, definita da 8 punti e un puntatore a vettore di cubi, che altro non è che una lista di 8 oggetti cubo (se stessa in pratica). Ogni oggetto cubo è identificato da un vettore di 8 oggetti punto, dove punto è una struct fatta così:
struct punto{
double x;
double y;
double z;
bool V;
};
Ora, la classe deve essere caratterizzata da due funzioni:
1) Inizializza: che prende in ingresso x,y,z double ed un intero div (che indica la divisione) ed instanzia un numero di cubi iniziale in base a quanto ho diviso lo spazio di partenza con div. Esempio: viene dato 2000,2000,2000 e 4, inizializza divide le misure di questo spazio in 4 e quindi ne vengono fuori 64 cubi. Deve restiture in output il vettore di cubi.
2) verifica: che prende in ingresso un vettore di cubi e verifica con una funzione di retroproiezione su un'immagine se scartare o meno i vari cubi del vettore. Se non va bene, il cubo viene eliminato dalla vettore (vengono contrassegnati i punti come non buoni), altrimenti viene richiamata ricorsivamente su tutti i cubi buoni dopo che sono stati "esplosi" (cioè divisi in altri 8) con la funzione esplodi.
3) La funzione esplodi: prende in ingresso un cubo e lo divide in 8 (dividendo in due le tre misure) e restituisce in output il vettore di 8 sottocubi.
In pratica, immagino un grande cubo da 8 punti iniziali che rappresenta lo spazio in cui effettuo la foto dell'oggetto (dalla quale ottengo l'immagine binaria) e me li ricavo dalle dimensioni fornite in input (x,y,z) dopo di che:
1 - lancio inizializza, che mi restituisce un vettore di tot cubi in base a quanto è stato scelto di dividere;
2 - su tali cubi, lancio verifica, che mi indicherà quali cubi sono buoni e su cui lanciare "esplodi";
ripeto il punto 2 sui cubi usciti da esplodi.
Il discorso in schema è il seguente:
http://img401.imageshack.us/img401/6450/03u1.jpg
Dove con P indico i punti, con "C" i cubi di partenza e con "SC" i sottocubi.
In pratica è sempre l'oggetto cubo che viene "diviso" in altri 8 cubi più piccoli o cancellato dalla lista di partenza. Quello che dovrò ottenere alla fine è un vettore di cubi con i relativi punti selezionato man mano fino ad un limite fissato in partenza.
Come posso fare questa cosa?? Potete aiutarmi per favore???:muro