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]
Con Opacity[1]
:
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]
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]
…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]
Nos puedes añadir valor a nuestra información cooperando tu experiencia en las notas.