2009-03-03 3 views
15

Sto scrivendo uno strumento che verrà utilizzato per elaborare una serie di dati 3D, facendo cose come oggetti rotanti, traduzione, ridimensionamento e tutte quelle cose buone. Qualcuno sa di una buona libreria che già fa parte di questa roba comune in 3D?Una buona libreria per la matematica 3D in C#?

Non sono interessato a visualizzare i dati al momento e sono principalmente interessato a eseguire le operazioni.

cose che so ho bisogno a questo punto:

  • 2D/3D/4D vettori
    • (aggiungendo, sottraendo, prodotto scalare, prodotto vettoriale, ecc ...)
  • rotazione/Traduzione/scala utilizzando matrici
  • quaternioni

Sono stato in grado di individuare la libreria Sharp3D, ma sembra che potrebbe fare ciò che voglio ma non è stato aggiornato da molto tempo. Qualcuno ha usato questo prima? Qualche altro (migliore) suggerimento?

risposta

12

Microsoft.Xna.Framework (spedire questo XNA) potrebbe fare il lavoro.

La libreria Math XNA Framework dispone di più tipi geometrici di base che possono essere utilizzati per manipolare oggetti nello spazio 2D o 3D. Gli oggetti primitivi in ​​questa libreria rappresentano i dati richiesti per rappresentare un oggetto geometrico o un'operazione su quell'oggetto. Ogni tipo geometrico ha un numero di operazioni matematiche supportate per il tipo.

Vector

XNA Framework fornisce le classi Vector2, Vector3 e vector4 per la rappresentazione e la manipolazione di vettori. Un vettore viene in genere utilizzato per rappresentare una direzione e una magnitudine. Tuttavia, nel framework XNA potrebbe anche essere utilizzato per memorizzare una coordinata o qualche altro tipo di dati con gli stessi requisiti di archiviazione.

Ogni classe vettore ha metodi per eseguire le operazioni vettoriali standard, come ad esempio:

  • prodotto Dot
  • prodotto Croce
  • Normalizzazione
  • Trasformazione
  • lineare, cubica, Catmull-Rom, o Interpolazione spline di eremite.

Matrici

XNA Framework fornisce la classe Matrix per la trasformazione della geometria. La classe Matrix usa un ordine maggiore di riga per indirizzare le matrici, il che significa che la riga viene specificata prima della colonna quando descrive un elemento di una matrice bidimensionale. La classe Matrix fornisce metodi per eseguire operazioni di matrice standard come il calcolo del determinato o dell'inverso di una matrice, oltre ai metodi di supporto per la creazione di scale, traslazioni e matrici di rotazione.

quaternioni

XNA Framework fornisce la struttura Quaternion per rappresentare e calcolare la rotazione efficace di un vettore lungo un angolo specificato.

+0

Ai posteri, [XNA è anche morto] (http://gamasutra.com/view/news/185894/Its_official_XNA_is_dead. php # .UREwnmResyF) che dovrebbe essere ufficiale nell'aprile 2014. – cod3monk3y

0

Prova Scinet Linea a www.obacs.com. Non è una libreria gratuita ma rispetto alle alternative non è molto costoso ww

0

Scinet Linea non è più disponibile da www.obacs.com. Ora arriva all'interno di Scinet Math che ha molte più possibilità. Ho acquistato una copia per la mia ricerca un mese fa. Mi piace così tanto.

2

Non l'ho mai usato prima, ma ho appena preso Sharp3D e sembra funzionare bene (a parte qualche problema sui nomi forti che impiegano pochi minuti per aggirare). La mia impressione è che non sia esattamente leggero ma lontano dall'essere pesante.

Per quanto riguarda recenti aggiornamenti, non è come la matematica sta cambiando o niente ...