2012-01-07 12 views
5

Tengo un viejo amigo que es matemático. Él tiene su propia matemática para comprimir sus fórmulas, que son increíblemente bellas.Hardcore matemático y formas 3d utilizando lienzo y Javascript

Trabaja en un programa llamado Mathematica, que transforma las fórmulas para formas tridimensionales.

Me pregunto si es posible obtener estas figuras usando Canvas y JavaScript? Ver la fórmula y la figura adjuntas.

Sé poco de esto yo mismo. Pero estaría encantado si alguien pudiera mostrarme un ejemplo.

formula

3D-shape

+1

¿Cuál es su pregunta? ¿Estás tratando de crear una imagen o un modelo 3D? – nmagerko

+1

Quiero poner en la fórmula anterior en javascript de alguna manera y recive la imagen. Quiero saber si esto es posible y, de ser así, me gustaría aprender a hacerlo. Un modelo 3D sería realmente agradable, pero una imagen sería genial. ¿Es posible entender lo que quiero decir? – user1087110

+0

Intenta buscar en google la "biblioteca de JavaScript de visualización de fórmula matemática", o algo parecido. Si eso no resulta útil ... sí, * puedes * escribir algo como esto tú mismo, pero no va a ser trivial. – deceze

Respuesta

5

Ya que mencionas Mathematica lo usaré para proporcionar algunos ejemplos más para varios valores de t. Sin embargo, no puedo ayudarte con el lienzo.

Este es el código de 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

Mathematica graphics

t = 1

Mathematica graphics

+0

Gracias Sjoerd C. de Vries, Not shore Entiendo lo que es esto. ¿Es esta la fórmula escrita en javascript? – user1087110

+2

No, como escribí anteriormente, este es el código de Mathematica. Sus ecuaciones incluyeron un parámetro t. Muestro algunos resultados para varios valores de t, para que otros, al menos, sepan qué esperar (y, por supuesto, para presumir de Mathematica) –

4

Es definitivamente posible. Puede echar un vistazo a la biblioteca javascript-surface-plot y al ejemplo de trabajo al http://www.grvisualisation.50webs.com/javascript_surface_plot.html. Produce un modelo 3D a partir de una fórmula matemática que se puede panoramizar y girar como se desee.

Si observa el código del ejemplo, hay una función de configuración que deberá actualizar a la fórmula que desee. Solo necesita convertir su fórmula matemática en javascript.

No estoy seguro de qué quiere hacer con estos modelos una vez que tenga uno, pero esta biblioteca parece ajustarse a sus requisitos. Hacer una búsqueda de html canvas 3d plot trajo bibliotecas adicionales también.

+0

¡Gracias Bill, se ve muy interesante! Mi amigo solo quiere compartir sus formas con el mundo (está escribiendo artículos científicos). – user1087110

+1

@ user1087110 Si todo lo que necesita es poner gráficos en 3D con Mathematica en línea, su mejor apuesta es http://www.vis.uni-stuttgart.de/~kraus/LiveGraphics3D/ para Mathematica <= 5.2 o http: // www .javaview.de/para todas las demás versiones. – Szabolcs

1

realmente están haciendo dos preguntas:

  1. ¿Hay alguna bibliotecas lienzo 3D: K3D
  2. ¿Hay bibliotecas de matemáticas para javascript: discussed here

Si están haciendo ecuaciones matemáticas de núcleo duro (que parece que eres), es mejor que lo hagas en algo como MatLab/Maple y en un archivo y luego utilizando una biblioteca 2D de lienzo para representar la imagen. Tengo muchos datos en 3D y lo hago.Ejecuto un script de Python que calcula los puntos y luego lo agrega a un archivo html (recuerde, las páginas web no pueden leer los datos del archivo, por lo que debe incluir los datos como parte de su archivo html). Entonces me carga el archivo HTML y mostrarlo generar la imagen usando EaselJS

+0

Gracias puk, lo verificaremos! ¿Quiere decir que las ecuaciones como esta son pesadas para que un navegador las calcule? – user1087110

+0

@ user1087110 no No quise decir eso, aunque ** podrían ** ser demasiado pesado para su navegador. No puedo decirlo porque no conozco la complejidad involucrada en el mapeo de funciones 3D. Lo que sí sé es que algo como MatLab será de órdenes de magnitud más eficientes. – puk

+0

@ user1087110 Si su amigo quiere 'compartir sus formas con el mundo', hay maneras más fáciles. Una imagen simple de 'gif' servirá. Si quiere que las personas lo roten/traduzcan/tuerzan, entonces todo lo que tiene que hacer es proporcionar los puntos que definen la forma. Solo si quiere que la gente realmente cambie la forma es este enfoque necesario – puk

1

yo creo WebGL sería ideal para esto. Tiene gráficos acelerados en los navegadores más nuevos y puede renderizarse en 3D.

Quizás haya bibliotecas por ahí que puedan renderizar desde funciones de fábrica, pero es una tecnología nueva, por lo que es posible que tenga que escribir mucho sobre ella.

Cuestiones relacionadas