2012-01-07 6 views
5

Ho un vecchio amico che è un matematico. Ha la sua matematica per comprimere le sue formule, che sono incredibilmente belle.Forme matematiche e 3d dinamiche con canvas e javascript

Lavora in un programma chiamato Mathematica, che trasforma le formule per le forme 3D.

Mi chiedo se è possibile ottenere queste figure utilizzando Canvas e JavaScript? Vedi la formula e la figura allegate.

Ne conosco poco io stesso. Ma sarei lieto se qualcuno potesse mostrarmi un esempio.

formula

3D-shape

+1

Allora, qual è la tua domanda? Stai cercando di creare un'immagine o un modello 3D? – nmagerko

+1

Voglio inserire nella formula sopra in javascript un po 'come e recuperare l'immagine. Voglio sapere se questo è possibile e se così mi piacerebbe imparare come farlo. Un modello 3D sarebbe davvero bello, ma un'immagine sarebbe interessante. È possibile capire cosa intendo? – user1087110

+0

Prova a google per "libreria di javascript di visualizzazione di formule matematiche" o qualcosa del genere. Se questo non rivela niente di utile ... sì, puoi * scrivere qualcosa di simile, ma non sarà banale. – deceze

risposta

5

Dal momento che si parla di Mathematica lo userò per fornire un paio di esempi per vari valori di t. Comunque non posso aiutarti con la tela.

Questo è il codice Mathematica:

With[{a = 3, t = 0.7}, 
RegionPlot3D[ 
    10^-(t x + y)^10 + 10^-(-t x + y)^10 + 10^-(t y + z)^10 + 
    10^-(-t y + z)^10 + 10^-(t z + x)^10 + 10^-(-t z + x)^10 > 
    5/2, {x, -a, a}, {y, -a, a}, {z, -a, a}, PlotPoints -> 50, 
    Boxed -> False, Axes -> None 
]] 

t = 0,2

Mathematica graphics

t = 0,4

Mathematica graphics

t = 0.7

0.123.

Mathematica graphics

t = 1

Mathematica graphics

+0

Grazie a Sjoerd C. de Vries, non a terra capisco di cosa si tratta. È questa la formula scritta in javascript? – user1087110

+2

No, come ho scritto sopra questo è il codice Mathematica. Le equazioni includevano un parametro t. Io mostro alcune uscite per vari valori di t, così che altri sappiano almeno cosa aspettarsi (e, ovviamente, sfoggiare Mathematica) –

4

E 'sicuramente possibile. Puoi dare un'occhiata alla libreria javascript-surface-plot e all'esempio di lavoro allo http://www.grvisualisation.50webs.com/javascript_surface_plot.html. Produce un modello 3D da una formula matematica che può essere ruotata e ruotata a piacere.

Se si guarda il codice dell'esempio, è disponibile una funzione di installazione che è necessario aggiornare a qualsiasi formula desiderata. Basta convertire la formula matematica in javascript.

Non sono sicuro di cosa si voglia fare con questi modelli dopo averne uno, ma questa libreria sembra adattarsi alle proprie esigenze. Facendo una ricerca per html canvas 3d plot ha portato anche altre librerie.

+0

Grazie Bill, sembra molto interessante! Il mio amico vuole solo condividere le sue forme con il mondo (sta scrivendo articoli scientifici). – user1087110

+1

@ user1087110 Se tutto ciò che serve è mettere online la grafica 3D usando Mathematica, la soluzione migliore è http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D/ per Mathematica <= 5.2 o http: // www .javaview.de/per tutte le altre versioni. – Szabolcs

1

siete veramente due domande:

  1. ci sono le librerie 3D Canvas: SIK3D
  2. Ci sono librerie matematiche per javascript: SIdiscussed here

Se stanno facendo le equazioni matematiche hard core (che sembra che tu sia), è meglio farlo in qualcosa come MatLab/Maple e dumping in un file usando quindi una libreria 2D canvas per rendere l'immagine. Ho molti dati 3D e faccio proprio questo.Eseguo uno script Python che calcola i punti quindi lo aggiunge a un file html (rememer, le pagine web non possono leggere i dati dal file, quindi devi includere i dati come parte del tuo file html). Quindi caricare il file html e visualizzare generare l'immagine usando EaselJS

+0

Grazie puk, lo verificherò! Intendi dire che equazioni come questa sono troppo pesanti da calcolare per un browser? – user1087110

+0

@ user1087110 no non intendevo quello, anche se ** potrebbero ** essere troppo pesanti per il tuo browser. Non posso dire perché non conosco la complessità della mappatura delle funzioni 3D. Quello che so è che qualcosa come MatLab sarà di ordine di grandezza più efficiente. – puk

+0

@ user1087110 Se il tuo amico vuole "condividere le sue forme con il mondo" ci sono modi più semplici. Una semplice immagine 'gif' farà. Se vuole far ruotare/tradurre/distorcere le persone, tutto ciò che deve fare è fornire i punti che definiscono la forma. Solo se vuole che le persone cambino effettivamente la forma è necessario questo approccio – puk

1

Penso che WebGL sarebbe l'ideale per questo. È accelerato dalla grafica nei nuovi browser e può essere visualizzato in 3D.

Forse ci sono librerie là fuori che possono eseguire il rendering da funzioni fuori dalla scatola, ma è una nuova tecnologia quindi potresti dover scrivere molto di te stesso.