50 votos

¿Qué programa puede sacar fotos como esta?

He utilizado Mathematica para dibujar una función de la imagen, pero no es hermosa como la imagen de abajo. Quiero saber lo que el software puede dibujar bellas imágenes como la de abajo.

Esta foto es de la Wikipedia artículo sobre Hopf fibration.

Coloured diagram

50voto

Janis Veinbergs Puntos 210

Tanto de las respuestas dicen que es hecho en Sage, pero es sólo parcialmente cierto. La visualización no se hizo en Sage por sí misma. La imagen es de trazado de rayos. Niles Johnson, autor de la imagen, utiliza Taquión, una fuente abierta raytracer.

Así que para seguir el flujo de trabajo similar mi recomendación sería:

  1. Generar datos en Sage, Mathematica o similar paquete matemático. Por los datos que me refiero como el anillo de posiciones y de color.
  2. Generar la geometría. Usted necesita para generar la real mallas poligonales que serán prestados. Esto podría ser posible hacer en Mathematica o Sage, pero me gustaría utilizar un programa 3d como Autodesk Maya, 3ds Max o Blender.
  3. De procesamiento de la geometría. El uso de ray-tracer para representar la geometría. Usted puede utilizar el open-source representador como los Taquiones, Mitsuba o uso comercial, tales como V-Ray, Mental Ray.

Probablemente voy a hacer de todo en la Licuadora, porque es compatible con Python. Quiero descargar algo de matemáticas de la biblioteca, por ejemplo, numpy, para hacer de la generación de datos más fácil, entonces puedo generar la geometría directamente y Blender tiene un built-in de ray-tracer, que puede ser utilizado para la representación.

32voto

Azz Puntos 126

La belleza de la imagen de arriba no es principalmente una cuestión de que el software utilizado, sino el tiempo y el esfuerzo que entró en ella. En principio, la única cosa que el software tiene que ser capaz de hacer es trazar una parametrización de la superficie con parametrizadas colores. Aquí una imagen similar a Niles Johnson (pero con solo 2 o 3 horas invertidas, y en consecuencia menos magnífico), producido gracias a la conexión a la Asíntota paquete de software, y tomar sólo un par de segundos para compilar en un portátil:

enter image description here

settings.outformat="png";
settings.render = 4;
import graph3;
defaultrender.tubegranularity=1e-3;

size(20cm);

currentprojection = orthographic(-5,-4,2);

typedef triple surfaceparam(pair);
typedef pair curveparam(real);

surfaceparam revolve(curveparam F) {
  return new triple(pair uv) {
    real t = uv.x, theta = uv.y;
    pair rz = F(t);
    real r = rz.x, z = rz.y;
    return (r*cos(theta), r*sin(theta), z);
  };
}

pair circlecenter(real r) {
  return r + 1 / (1 + r);
}

curveparam circleparam(real r) {
  pair center = circlecenter(r);
  return new pair(real t) {
    return center + r * expi(2 pi * t);
  };
}

surfaceparam torusparam(real r) { return revolve(circleparam(r)); }

surfaceparam hopfparam(real r) {
  surfaceparam mytorus = torusparam(r);
  return new triple(pair uv) {
    return mytorus((uv.x, 2 pi * (uv.y - uv.x)));
  };
}

surface surface(triple f(pair z), pair a, pair b, int nu=nmesh, int nv=nu,
        bool smooth=true, pen color(pair z)) {
  surface s = smooth ? surface(f, a, b, nu, nv, Spline) : surface(f, a, b, nu, nv);
  real delta_u = (b.x - a.x)/nu;
  real delta_v = (b.y - a.y)/nv;
  for (int i = 0; i < nu; ++i) {
    for (int j = 0; j < nv; ++j) {
      patch currentpatch = s.s[s.index[i][j]];
      pair z = (interp(a.x, b.x, i/nu), interp(a.y, b.y, j/nv));
      currentpatch.colors = new pen[];
      currentpatch.colors.push(color(z));
      currentpatch.colors.push(color(z + (delta_u, 0)));
      currentpatch.colors.push(color(z + (delta_u, delta_v)));
      currentpatch.colors.push(color(z + (0, delta_v)));
    }
  }
  return s;
}

real rescale(real t) { return atan((pi/2)*t) / (pi / 2); }

for (real r : new real[] {0.2, 0.8, 2.0}) {
  pen color(pair uv) {
    real z = 2 * rescale(r) - 1;
    if (z > 1)  z = 1;
    else if (z < -1) z = -1;
    real cylradius = sqrt(1 - z^2);
    real theta = 2pi * uv.y;
    real x = cylradius * cos(theta), y = cylradius * sin(theta);
    x = (x+1)/2; y = (y+1)/2; z = (z+1)/2;
    return x*red + y*green + z*blue;
  }
  int nu = 8, nv = 8;
  surface s = surface(hopfparam(r), (0,0), (1,1/2), nu, nv, smooth=true, color=color);
  draw(s);
  for (int j = 0; j < nv; ++j)
    draw(s.vequals(j), linewidth(0.5));
  draw(s.vequals(nv-.01), linewidth(0.5));
}

Eche un vistazo a Niles Johnson notas de producción. Usted puede ver que él tomó el tiempo para hacer ejercicio bastante complejo parametrización para las fibras de la Hopf fibration. No me sorprendería si él considera posible el proceso de parametrización, y eligió este, precisamente porque le da la más atractiva visualmente los resultados. Mi foto de aquí es más fácil, pero menos atractivo parametrización; la limitación aquí no es el software, pero el tiempo y el esfuerzo mental requerido para programar en el quaternion basado en la representación.

Incluso Niles' el esquema de color es cuidadosamente elegido para ser visualmente atractivo y matemáticamente significativa. Y en el curso de la producción y la "coreografía" de su animación, sin duda se convirtió en un experto en cualquier número de maneras para ajustar la apariencia de una imagen de una de Hopf fibration.

Hay un aspecto importante para el software elegido. Mediante un trazado de rayos algoritmo, Niles fue capaz de incorporar cierto sombras en su imagen, que otros tipos de algoritmos de procesamiento general, no puede lograr. (Nota: trazado de rayos es en realidad un algoritmo muy simple que produce magníficos resultados, pero no es comúnmente utilizado por software porque es demasiado intensivo de los recursos para producir, por ejemplo, las imágenes que se pueden girar de forma interactiva.) Pero los beneficios de utilizar el trazado de rayos algoritmo son secundarias a la vez y pensaba que iba a construir la imagen en el primer lugar.

31voto

A.P. Puntos 6582

Desde la página de Wikimedia acerca de que la imagen nos enteramos de que estaba hecho con Sage. Un enlace a la página del autor , además, describe cómo fue creado.

9voto

Ya Basha Puntos 130

La imagen de la página de información de las reclamaciones que se hace con la Salvia. Es parte de esta animación, en la que su imagen aparece en la marca de tiempo de 2:27.

2voto

swiley Puntos 21

Que parece que puede haber sido trazado de rayo, se suele usar un programa de código abierto para el trazado de rayos es povray, se espera que todos los de la geometría se define en el procedimiento o matemáticamente que hace que sea más fácil de usar para la creación de imágenes como esta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X