Saltar al contenido

¿Cómo dibujar una familia de planos y su envolvente?

Recuerda que en la informática cualquier problema casi siempere suele tener diversas soluciones, pero aquí te mostraremos lo mejor y más eficiente.

Solución:

Un par de ideas. La representación es un problema con la transparencia y tantos planos. De ahí la necesidad de "DepthPeelingLayers".

zsol = Solve[2 a x + 2 b y - z + a^2 + b^2 == 0, z];

family = Graphics3D[
  Opacity[0.3], [email protected], Specularity[White, 10], 
   EdgeForm[Directive[Opacity[0.25], Red]], 
   Table[InfinitePlane[x, y, z /. zsol /. Thread[x, y -> #] & /@ 
      [email protected][0, 1, 2]],
    a, -2, 2, 2/3, b, -2, 2, 2/3]
   ,
  PlotRange -> 2.5, 
  BaseStyle -> RenderingOptions -> "DepthPeelingLayers" -> 70]

gráficos matemáticos

Con Opacity[1]:

gráficos matemáticos

Con discos tangentes en lugar de planos, se puede empezar a percibir la silueta exterior de la envolvente:

f = 2 a x + 2 b y - z + a^2 + b^2;
norm = D[f, x, y, z];
env = x, y, z /. [email protected][# == 0, D[#, a] == 0, D[#, b] == 0] &[f];
t1 = norm[[3]], 0, -norm[[1]];
t2 = Cross[norm[[3]], 0, -norm[[1]], norm];
t1, t2 = Normalize /@ t1, t2;

family = Graphics3D[
   Opacity[0.04], Red, EdgeForm[], 
    Table[[email protected]
      Table[env + 1.5 Cos[t] t1 + 1.5 Sin[t] t2, t, 0, 2 Pi - 0.1, 
        Pi/4],
     a, -2, 2, 1/4, b, -2, 2, 1/4]
    ,
   PlotRange -> 2.5];
Style[
 Show[family /. Opacity[_] -> Opacity[0.15], PlotRange -> 2], 
 RenderingOptions -> "DepthPeelingLayers" -> 150]

gráficos matemáticos

Algunos análisis manuales primero. (Actualmente no pude pensar en una manera de analizar esto con Matemática.) La envolvente muestra la región que ocupa la familia de planos, por lo que si podemos decidir si un punto en el espacio pertenece a la familia o no, podemos dibujar la envolvente. ¿Cómo decidir? Cambiamos un poco la forma de la ecuación:

$$ (a+x)^2+(b+y)^2=x^2+y^2+z $$

Aparentemente cuando $a,binBbbR$ solo los puntos que satisfacen $x^2+y^2+zgeq 0$ pertenecen a la familia. Entonces es fácil dibujar el sobre:

RegionPlot3D[z + x^2 + y^2 >= 0, x, -5, 5, y, -5, 5, z, -10, 5]

ingrese la descripción de la imagen aquí

…No es tan interesante, ¿verdad? OK, déjame mostrarte algo más.

Observe que para cualquier $(x, y, z)$ definido, la ecuación $(a+x)^2+(b+y)^2=x^2+y^2+z$ representa un círculo que cada punto allí representa un posible par de $(a,b)$, por lo que el perímetro del círculo es proporcional a la densidad de puntos en una cierta ubicación en el espacio. Con esto en mente, podemos dibujar la densidad espacial de la familia de planos con el siguiente código:

data = [email protected]
   Compile[, 
     With[r = Range[-3, 3, 1/20], z = Range[-3, 1/2, 1/20], 
      [email protected](# [email protected]# &)@Table[z + x^2 + y^2, x, r, y, r]]][];
[email protected]

ingrese la descripción de la imagen aquí

Nos puedes añadir valor a nuestra información cooperando tu experiencia en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *