2010-09-03 12 views
9

Sto cercando di insegnarmi la grafica 3D, ma ho problemi a visualizzare i vettori 3D coinvolti.Grafica 3D: software per la visualizzazione di vettori 3D?

Esiste un buon software che è possibile utilizzare per visualizzare i vettori 3D?

Ad esempio, in questo momento sto imparando a conoscere le trasformazioni della telecamera, e sarebbe bello se potessi facilmente tracciare i vettori di destra/su/occhione/occhio.

Ho provato Grapher.app e gnuplot, ma è molto difficile inserire punti in Grapher.app e gnuplot non sembra in grado di bloccare le proporzioni.

risposta

8

Visual Python è una libreria estremamente semplice per la visualizzazione 3D.

Ad esempio, per mostrare una sfera e freccia:

import time, math, visual 

ball = visual.sphere(pos=(0,2,0), radius=1, color=visual.color.red) 
vect = visual.arrow(pos=(2,0,0), axis=(2 ,2,-2)) 

visual.scene.forward = (.1, -.3, -1) # controls the camera view angle 

alt text

Questa finestra ha ora anche tutto il normale interattività con il mouse, ad esempio lo zoom e rotazione della telecamera (cioè angolo di visione).

VPython è anche facile da animare. Ad esempio, la seguente freccia ruoterà:

da = 2*math.pi/100 
for timestep in range(100): 
    angle = timestep*da 
    vect.axis = (2+2*math.sin(angle), 2*math.cos(angle), -2) 
    time.sleep(.1) 
+0

Fantastico - sembra davvero buono. Molte grazie. –

+0

Se avrò più problemi aprirò nuove domande per loro ... Ma eseguendo esattamente quello che hai, non ho alcun tipo di interattività con il mouse. C'è qualche salsa segreta che mi manca? –

+0

Sto usando VPython da Ubuntu Linux, e lì il tasto centrale del mouse zooma e il tasto destro del mouse ruota (e non ho fatto niente di speciale per ottenere questo). Dici che non ottieni niente di tutto questo? Potresti voler provare a impostare: visual.scene.autoscale = 0, visual.scene.userzoom = 1 e visual.scene.userspin = 1 ma penso che l'impostazione predefinita consenta l'interazione, quindi questo non dovrebbe essere necessario. – tom10

2

Non so se questo sarebbe più semplice di Grapher.app o gnuplot, ma potresti scrivere il tuo programma di grafica 3D che traccia solo i vettori.

Here's an example in OpenGL che disegna i vettori di asse X, Y e Z.

Aggiornamento:Here's a Java applet specificamente incentrato sull'aiutare a visualizzare i vettori nelle trasformazioni della telecamera. Nota le istruzioni di installazione: devi installare Java 3D.

Descrizione: L'applet prospettiva della telecamera Parametri propone di avvicinare studenti con i vari parametri associato con un sintetico, fotocamera prospettiva proiezione. Gli utenti possono regolare uno dei seguenti parametri: larghezza del campo di vista, altezza del campo visivo , vicino al ritaglio della distanza del piano , distanza di ritaglio distanza, vettore in alto e aspetto vettoriale. La finestra di visualizzazione è visualizzata in una finestra , consentendo agli studenti di di capire come i parametri si riferiscono a alla forma del tronco di visualizzazione.

Lo stesso sito ha many components, such as axes, che è possibile utilizzare per impostare una semplice applet che mostra solo i vettori che si desidera.

+0

Hhmm ... Non l'avevo considerato (mi occupo di grafica 3D non interattiva), ma non è una cattiva idea. Grazie. –

+0

@ Jay, con chi stavi parlando? – LarsH

+0

@David Wolever, se crei un'app e l'open source, sono sicuro che sarebbe utile anche per gli altri. –