Aggiornamento array 3D in C # [chiuso]

-1

Sono curioso perché ho letto che una volta dichiarata una matrice non può essere modificata. Forse se espongo i miei pensieri.

Dire, ho un cubo con dimensioni 5x5x5 e ho una finestra che può ruotare la faccia del cubo per vedere i dati dell'oggetto in un'area. Invece di affettare l'immagine in piani piatti, è possibile avere un aggiornamento per i dati dell'array in base al lato del cubo attuale? Inoltre, posso generare uno strato shader sul livello superiore per eliminare l'opacità e poter selezionare o modificare i cubi interni?

So che devo spiegarlo male.

    
posta Fran Pietrowski 08.09.2015 - 05:50
fonte

2 risposte

4

Sembra che tu stia confondendo un sacco di cose. Prima di tutto un array in C # o qualsiasi altra lingua si riferisce a una struttura di dati che memorizza valori di un certo tipo come interi, doppi, stringhe ecc. Questa è la rappresentazione dei dati non un rendering di un oggetto tridimensionale.

È corretto che un array multidimensionale in C # non possa essere ridimensionato una volta dichiarato. Dovresti dichiarare un nuovo array e copiare gli elementi.

Se tratti quell'array 3D come un cubo, puoi effettivamente aggiornare certe "fette". La parte più piccola di un array è costituita dagli elementi a cui è possibile accedere tramite il loro indice. Puoi immaginarli come scatole che memorizzano contenuti e ognuno ha numeri che li identificano. Per un array 3D, sarebbero tre numeri uno per ogni dimensione.

Per aggiornare quello che hai chiamato una sezione, eseguiresti l'iterazione attraverso tutte le caselle in due dimensioni e manterrai fisso il terzo. Dato che il 3D è solo un'astrazione, in realtà non c'è nessun lato che stai affrontando quando lo tratti figurativamente come una cosa.

Per il rendering 3D effettivo dei cubi, che non sono la stessa cosa di un array, potresti provare OpenGL, XNA Game o il rendering 3D con WPF.

Spero che chiarisca un po 'le cose.

Ecco un tutorial su come utilizzare gli array , dovrebbe essere abbastanza semplice da seguire per un principiante.

Per quanto riguarda il rendering 3D con C # non sono di grande aiuto, perché non l'ho mai fatto da solo. Ma ci sono anche molti tutorial per questo. Ad esempio questo .

    
risposta data 08.09.2015 - 06:13
fonte
0

Supponiamo di avere un array (senso generale, non senso di programmazione) di oggetti 3D in una griglia cartesiana di 5 x 5 x 5 .

Le otto celle d'angolo dell'array sono (usando l'indicizzazione basata su zero):

  • [0][0][0]
  • [0][0][4]
  • [0][4][0]
  • [0][4][4]
  • [4][0][0]
  • [4][0][4]
  • [4][4][0]
  • [4][4][4]

Le sei facce dell'array sono ( for j, k range from 0 to 4 ):

  • [0][j][k]
  • [4][j][k]
  • [j][0][k]
  • [j][4][k]
  • [j][k][0]
  • [j][k][4]

Si noti che alcune celle sono condivise da due o tre facce.

In generale, puoi suddividere lo spazio 3D con un separatore di iperplani , che è una disuguaglianza.

  • compare(a * x + b * y + c * z + d, 0)

Correggi i parametri (a, b, c, d) , che definisce il modo in cui l'iperpiano taglia lo spazio. Per ciascun oggetto, è possibile controllare la posizione relativa dell'oggetto all'iperpiano collegando la (x, y, z) dell'oggetto alla disuguaglianza e controllare il segno del confronto. Se il risultato del confronto è maggiore di, si trova su un lato dell'iperoplano. Se è inferiore a, è sull'altro lato dell'iperpiano.

L'articolo di Wikipedia linkato sopra spiega come scegliere i parametri di tale disuguaglianza in modo che l'iperpiano passi attraverso punti specifici, che dovrebbero essere manipolati dall'utente.

    
risposta data 08.09.2015 - 09:01
fonte

Leggi altre domande sui tag