Español   Ejemplos: Cuadrículas

Superficies tridimensionales

Imagina una rejilla muy elástica. Sin deformar, se ve como una red plana formada por cuadrados. Si, por el contrario, utilizamos una función de dos variables para la tercera componente, cada nudo de la misma se desplazará hacia arriba o abajo de su posición original, mostrando una superficie 3D.

Los vértices de la esquina están en puntos de coordenadas (1,1) (-1,-1) (-1,1) y (1,-1).

Se puede cambiar el tamaño de la rejilla cambiando el valor de la variable :largo, o comentar algunas líneas de código para dibujar solamente líneas horizontales o verticales.

En el procedimiento de la función, se muestran varias posibilidades. "Descomenta" sólo una ecuación para realizar el dibujo.

Estamos trabajando en un procedimiento que oculte la líneas no visibles:

para empezar
# Inicializamos papel, lapiz y tortuga
  reponetodo pontamañopantalla [400 400]
  poncolorpapel negro poncolorlapiz verde
  subelapiz ocultatortuga
#
  haz "lado 16
    # Incrementar (p.e. 32) para cuadricula mas fina
  dibujarejilla
fin

para posicionrejilla :i :j
  haz "vert funcion :i :j
  haz "green 163-92*menor :i :j
  poncolorlapiz (lista 0 :green 0)
  haz "xx 24*((5*:i)-(3*:j))
  haz "yy 9*((3*:i)+(5*:j)) + (96*:vert) -16
  devuelve lista :xx :yy
fin

para funcion :x :y
# devuelve 0   # Sin cambios
# devuelve ((cos (90* :x))*( cos (90* :y)))
# devuelve ((cos (270* :x))*( cos (270* :y)))
  devuelve cos (360* (raizcuadrada (:x*:x + :y*:y)))
fin

para dibujarejilla
  repitepara [l 0 1]
  [repitepara (lista "i cambiasigno 1 1 2/:lado)
   [subelapiz
    repitepara (lista "j cambiasigno 1 1 2/:lado)
    [si :l=0
      # lineas verticales
      [ponposicion posicionrejilla :i :j bajalapiz]
     si :l=1
      #lineas horizontales
      [ponposicion posicionrejilla :j :i bajalapiz]
  ]]]
fin

para menor :i :j
  si :i<:j [devuelve :i] [devuelve :j]
fin


Probar este programa ahora

Procedimiento a ejecutar:
empezar