16.1. EXPERIMENTA
0) Activa la geometría
del ESPACIO.
Para ver la equivalencia entre
Logosb y ACTILOGO ver la segunda hoja de OBSERVA.
1) Define los
procedimientos prisma y rectángulo y ejecútalos con los siguientes
puntos del observador.
para prisma :n :b :a
repite :n [rec :b :a vd
90 av :b vi 90 bd 360 / :n]
fin
para rec :b :a
repite 2 [av :a vd 90 av
:b vd 90]
fin
Ejecución:
?espacio
?bp ponobs
[250 500 1000 ] prisma 6 30 80
?bp ponobs
[0 0 1000] vi 90 av 15 vd 90 prisma 6 30 80
?bp ponobs
[0 500 1000] vi 90 av 15 vd 90 prisma 6 30 80
?pb ponobs
[0 0 200] si re 40 vi 90 av 15 vd 90 bi prisma 6 30 80
?muestra obs
?ponobs [250
500 1000]
2) Ejecuta las siguientes
órdenes y fíjate en la 3,1 coordenada de ponpos.
?bp prisma 6
30 80
?bp ponpos
[0 0 0] prisma 6 30 80
?bp sl
ponpos [-150 -400 800] bl prisma 6 30 80
?bp sl
ponpos [-300 -800 1600] bl prisma 6 30 80
?bp sl
ponpos [-600 -1600 3200] bl prisma 6 30 80
?bp sl
ponpos [0 0 -100] bl prisma 6 30 80
?bp sl
ponpos [50 50 -200] bl prisma 6 30 80
?bp sl
ponpos [100 150 -400] bl prisma 6 30 80
?bp sl ponpos [150 250 -600] bl prisma 6
30 80
?muestra pos
?centro
?muestra pos
3) Ejecuta las siguientes órdenes:
?bp prisma 6
30 80
?vd 45
prisma 6 30 80
?vd 45
prisma 6 30 80
?bp prisma 6
30 80
?ponrumbo
[45 0 0] prisma 6 30 80
?ponrumbo
[45 0 0] prisma 6 30 80
?muestra
rumbo
?bp ponrumbo
[-135 120 120] prisma 6 30 80
?muestra
rumbo
4) Define el siguiente procedimiento y ejecútalo:
para cono :r :a
haz "paso 2 * pi *
:r / 36
sl av :a
haz "V pos
re :a
vd 90 av :r bl
cb 95
repite 36 [haz "P
pos poncl 3 ponpos :V ponpos :P cb 10 poncl 2 av :paso]
ca 95
sl re :r vi 90
fin
Ejecución:
?ponobs [0
500 1000]
?bp cono 50
100
?bp vd 90
cono 50 100
?bp sl
ponpos [-140 30 0] vd 90 bl cono 80 290
?bp ponobs
[0 0 1000] ca 90 cono 50 100
?bp cono 50
100
?muestra obs
?ponobs [0
500 1000]
?bp cono 50
100
?bp vd 90
cono 50 100
?muestra obs

16.2. OBSERVA
ponobs :l3
PONe el lugar
del OBServador, es el punto de la perspectiva, al variar este punto
varía la vista de la figura. Es importante elegirlo bien, en general
aconsejamos [250 500 1000]
Ej. ponobs [250 500 1000 ]
obs
Devuelve el punto del OBServador.
Ej. muestra obs
[250
500 1000]
PONe en la POSisición
indicada del espacio al ovni.
Ej. ponpos [100 -50 80]
pos
Devuelve la POSición del ovni.
Ej. muestra pos
[100
-50 80]
centro
Lleva el
ovni al origen de coordenadas y le pone rumbo [0 0 0]
ponrumbo :l3
PONe el RUMBO
de la lista al ovni en el siguiente orden vd, cb y bd.
Ej. ponrumbo [30 -90 45]
rumbo
Devuelve el RUMBO que tiene
el ovni.
Ej. muestra rumbo
[30 270 45]
Comprobación:
?bp vd 10 cb
20 bd 30
?muestra
rumbo
[10 20 30]
Plano
Devuelve el control a las primitivas
del PLANO
EQUIVALENCIAS:
Logosb ACTILOGO
av AVE AVanza en el Espacio
re REE REtrocede en el Espacio
vd VD Vira a la Derecha
vi VI Vira a la Izquierda
ca CA Cabecea Arriba
cb CB Cabecea aBajo
bd BD Balancea a la Derecha
bi BI Balancea a la Izquierda
bp BPE Borra la Pantalla
en el Espacio
centro CENTROS CENTRO
en el Espacio
ponpos PONPOSE PON POSición en el Espacio
pos POSE POSición en el Espacio
puntoe PUNTOS PUNTO
en el Espacio
ponrumbo PONRUMBOE PON RUMBO en el Espacio
rumbo RUMBOS RUMBO
en el Espacio
ponobs PONOBS PON el punto del OBSenrador
obs OBS devuelve el punto del OBServador
plano PLANO devuelve el control al PLANO
espacio CARGA "ESPACIO activa el ESPACIO
Vamos a
definir puntoe en el espacio para el
Logosb
para puntoe :l3
local "p#
haz "p# pos
sl ponpos :l3 bl
ponpos pos
sl ponpos :p# bl
fin
16.3. RESOLUCION DE
PROBLEMAS
PROBLEMA 1:
Define un DIBUJARAPIDO en el espacio que vaya
anotando las coordenadas del punto y el rumbo.

PROBLEMA 2:
Define una pirámide
regular y dibújala en varias orientaciones.

PROBLEMA 3:
1) Define los
procedimientos necesarios para dibujar mediante prismas la palabra LOGO con
techo y suelo.

2) Define una escalera de
caracol.

PROBLEMA 4:
1) Define el siguiente
techo discotequero.

2) Define el siguiente arco de TRIUNFO
PROBLEMA 5:
Define un MENU
para este tema y guárdalo en el disco con una variable global ARRANQUE.

16.4. SOLUCIONES
PROBLEMA 1:
DIBUJARAPIDO
EN EL ESPACIO
para andar
ponobs [250 500 1000]
menúandar
posrumbo
anda
fin
para menúandar
bp bt
poncursor [0 0]
ponct [1 0] es [a = av
10\ \ \ \ \ d = re 10\ \ \ \ \ b = bp]
ponct [2 0] es [u = vd
15\ \ \ \ \ i = cb 15\ \ \ \ \ o = bd 15]
ponct [3 0] es [j = vi 15\
\ \ \ \ k = ca 15\ \ \ \ \ l= bi 15]
ponct [3 0]
poncursor [0 22] repite
80 [teclea "\ ]
poncursor [3 22] es
"X
poncursor [9 22] es
"Y
poncursor [15 22] es
"Z
poncursor [2122] es
"vd
poncursor [27 22] es
"cb
poncursor [33 22] es
"bd
fin
para posrumbo
ponct [10]
poncursor [3 23] es
(redondea 10 * pr pos) / 10
poncursor [9 23] es
redondea pr mp pos
poncursor [15 23] es
redondea ul pos
ponct [2 0]
poncursor [21 23] es
redondea pr rumbo
poncursor [27 23] es
redondea pr mp rumbo
poncursor [33 23] es
redondea ul rumbo
fin
para anda
local "c
haz "c lc
si "a = :c [av 10]
si "d = :c [re 10]
si "u = :c [vd 15]
si "i = :c [cb 15]
si "o = :c [bd 15]
si "j = :c [vi 15]
si "k = :c [ca 15]
si "l = :c [bi 15]
si "b = :c
[menúandar]
posrumbo
anda
fin
Arbol: andar --> menúandar
--> posrumbo
--> andar
--> menuandar
--> ponrumbo
Ejecución:
?andar
PROBLEMA 2:
para pirámide :n
:aristabase :altura
haz "A 180 / :n
haz "t (sen :A) /
cos :A
haz "apotema
:aristabase / (2 * :t)
sl av :altura
haz "V pos
re :altura
vd 90 av :apotema bl
cb 90 av :aristabase / 2
repite :n [haz 11 P pos
poncl 3 ponpos :V ponpos :P cb 360 / :n poncl 2 av :aristabase]
sl re :aristabase / 2 ca
90 re :apotema vi 90
fin
Ejecución
?ponobs [50 500 1000]
?bp pirámide 6 40 100
?bp pirámide 8 30 100
?bp sl vd 90 re 130 bl
pirámide 6 70 260
?bp ponobs [0 0 1000] cb
90 pirámide 6 60 100
?bp ponobs [250 500 1000]
PROBLEMA 3:
1) para logo
sl re 35 vi
90 av 155 vd 90 bl
poncl 21 100
sl vd 90 av
100 vi 90 bl
poncl 101
100
sl vd 90 av
80 vi 90 bl
poncl 3 g 100
sl vd 90 av 80
vi 90 bl
poncl 101 100
sl av 35 vi 90
av 105 vd 90 bl
techo 95 vd 180
sl vi 90 av 150
vd 90 av 110 bl
techo 95
fin
para 1 :a
prisma 4 :a * .3 :a
av:a*.3 vd 90
prisma 4 :a * .3 :a * .6
vi 90 re:a*.3
fin
para prisma :n :b :a
repite :n [rec :b :a vd 90 av :b vi 90 bd 360 /
:n]
fin
para rec :b
:a
repite 2 [av
:a vd 90 av :b vd 90]
fin
para o1 :a
ca 90re:a*.3
prisma 12 :a
* .18 :a * .3
av:a*.3 cb
90
fin
para g :a
ca 90 re :a
* .3
repite 3
[rec :a * .18 :a * .3 vd 90 av :a * .18 vi 90 bd 360 / 12]
bd 90 rec :a*.18:a*.3
bi 90
sl vd 90 av :a*.18
vi 90 bd 360 / 12 bl
repite 8
[rec :a*.18:a*.3 vd 90 av :a*.18 vi 90 bd 360 / 12]
av:a*.3 cb
90
fin
Arbol: Logo --> 1 --> prisma -->
rec
--> ol
--> prisma --> rec
--> g
--> prisma
--> rec
--> techo --> cuadrícula --> rayado
Ejecución:
?ponobs [0 0 500]
?bp bt logo
?bp bt vd 180 logo
2) para escalera :n :d
repite :n
[escalón :d av :d / 5 bd 30]
fin
para escalón :d
vd 90
rec :d / 5 :d av :d cb 105
rec:d / 52*:d*sen 15 av
2*:d*sen 15 cb 105
rec :d / 5 :d av :d cb 150
vi 90
fin
para rec :b :a
repite 2 [av :a vd 90 av :b vd 90]
fin
Arbol: escalera --> escalón -->
rec
Ejecución:
?bp bt sl re 90 bl ponobs
[0 ‑90 1000]
?escalera 10 100
PROBLEMA 4:
1) para
conjunto
ponfondo 1
ponpaleta 0 poncl 3
techo 100
columnasc 3
30
fin
para techo :a
sl av 110 vi 90 av 150 vd
90 bl
cb :a cuadrícula 10 30
ca :a
fin
para cuadrícula :n :d
rayado :n :d
sl vd 90 av:n*:d vd 180 bl
rayado :n :d
sl av:n*:d vd 90 bl
fin
para rayado :n :d
repite :n + 1 [av :n * :d
re :n * :d si vd 90 av :d vi 90 bl]
sl vi 90 av (:n + 1) * :d
vd 90 bl
fin
para columnasc :n :d
sl vd 90 av:d / 2 vi 90
cb 100 av:d/2 ca 100
bl ca 180
columnacubos :n :d
sl re2*:n*:d cb 180
cb 100 av 9 * :d ca 100
bl
ca 180
columnacubos :n :d
sl re 2*:n*:d cb 180
vd 90 av 9 * :d vi 90 bl
ca 180
columnacubos :n :d
sl re 2*:n*:d cb 180
ca 80 av 9 * :d cb 80 bl
ca 180
columnacubos :n :d
sl re 2*:n*:d cb 180
vi 90 av 9*:d vd 90 bl
fin
para
columnacubos :n :d
repite :n
[cuboc :d]
fin
para
cuboc :d
poncl
2 av :d sl
vi 90
av :d / 2 ca 90 av :d / 2 cb 90 vd 90 bl
poncl
1 cubo :d
sl vd
90 av :d / 2 vi 90 cb 90 av :d / 2 ca 90 av :d bl
fin
para cubo: d
repite 4
[cua :d vd 90 av :d vi 90 bd 90]
fin
para cua :d
repite 4 [av
:d vd 90]
fin
Arbol: conjunto -->
techo --> cuadrícula --> rayado
-->
columnasc --> columnacubos --> (1)
(1) cuboc -->
cubo --> cua
Ejecución:
?bp ponobs
[0 0 500] conjunto
2) para triunfo :d
poncl 3
columnas :d
si av 20*:d
vi 90 av :d vd 90 ca 90 av :d cb 90 bl
poncl 2
cornisa :d
sl ca 90 re
:d cb 90 vi 90 re :d vd 90 av 2* :d bl
poncl 1 arco
:d
bóveda :d
vd 90 av
10*:d vi 90 av 16*:d
sl vd 90 av
:d vi 90 ca 90 av :d cb 90 vi 90 av (72/3.14 + 23) * :d vd 90 bl
poncl 3
montate :d
fin
para columnas :d
prisma 4 10 * :d 20 * :d
vi 90 sl av(72 / 3.14+10)*:d
bl
vd 90
prisma 4 10 * :d 20 * :d
sl vd 90 av (72 / 3.14 + 10) * :d bl
vi 90
fin
para cornisa :d
prisma 4 12 * :d 2 * :d
vi 90 sl av(72 / 3.14+10)*:d
bl
vd 90
prisma 4 12 * :d 2 * :d
sl vd 90 av 72*:d /
3.14+10*:d bl
vi 90
fin
para arco :d
vi 5 repite 18 [av 2 * :d
vi 10] vd 5
vd 180 cb 90 av 10*:d ca
90
vd 5 repite 18 [av 2 * :d
vd 10] vi 5
vi 180 ca 90 av 10*:d cb
90
fin
para bóveda: d
cb 90 cua 10 * :d ca 90
vd 90 av 10*:d vi 90
bd 90 rec 10*:d16*:d bi 90
av16*:d
bd 90 cb 90 rec 10 * :d (72 /
3.14 + 20) * :d
av (72 / 3.14+20)*:d ca 90 bd
90
re 16*:d bi 90
rec 10*:d 16*:d bi 90
cb 90 cua 10 * :d ca 90
vd 90
sl av (72 / 3.14+10)*:d bl vi
90
fin
para montante: d
prismar 3 * :d (72 / 3.14
+ 24) * :d 12 * :d
fin
para prismar :d1 :d2 :d3
repite 2 [rec :d2 :dl vd
90 av :d2 vi 90 bd 90 rec :d3 :dl vd 90 av :d3 vi 90 bd 90]
fin
Arbol: triunfo --> columnas
--> prisma ->
rec
-->
cornisa --> prisma -> rec
-->
arco
--> bóveda --> cua
--> rec
-->
montante -> prismar ->
rec
Ejecución:
?ponobs [200
300 500]
?bp si
ponpos [50 -70 0] bl triunfo 4
?ponobs [0
100 150]
?bp si
ponpos [45 -70 0] bl ca 20 triunfo 4
?ponobs [0
100 300]
?bp si
ponpos [-15 -55 0] bl bi 90 triunfo 4
?ponobs
[0 200 150]
?bp si ponpos
[50 -80 0] bl cb 60 triunfo 4
?bp si
ponpos [80 -90 50] bl vi 45 triunfo 4