Revistas en papel
 Commodore Amiga World Nº4 - Noviembre 1989
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

PEQUEÑAS UTILIDADES Amiga World

Los dos pequeños
programas de
gráficos
presentados en
este artículo
muestran toda
la potencia
gráfica del Amiga
desde Basic.

Por José Luis Sosa Bayón


Cubo 3-D


Este es un pequeño programa con el cual se pueden observar desde cualquier punto de vista un cubo en tres dimensiones. Para poder moverlo se presiona el botón izquierdo del ratón, y el cubo cambiará de posición, apuntando hacia la posición de la flecha. Es un programa interesante con algunas funciones matemáticas. Si eres un pionero de las "mates" puedes hasta cambiar el objeto.

Listado 1: CUBO-3D
' CUBO 3D                                                         .324
' (c)1989 by Jose Luis Sosa                                       .609
' (c)1989 by Commodore/Amiga World                                .859
SCREEN 1,640,400,2,4                                              .554
WINDOW 2,"CUBO 3D",(0,0)-(617-385),15,1                           .729
PALETTE 1,.4,.4,.4                                                .527
DIM xa(40),ya(40),x(40),y(40):zi=0                                .697
DIM ta(40),sa(40),T(40),s(40)                                     .308
m1=320:m2=200                                                     .171
INIT:                                                             .195
IF MOUSE(0)<>0 THEN RX=-MOUSE(2)/100:RY=-MOUSE(1)/100             .852
GOSUB rotation                                                    .375
zi=-50:yi=-50:xi=-50                                              . 32
CALC:                                                             .204
xt=xi:yt=yi:zt=zi:GOSUB tri:xa(1)=x:ya(1)=y                       .167
xt=xt+100:zt=zi:GOSUB tri:x(1)=x:y(1)=y:xa(2)=x(1):ya(2)=y(1)     .294
zt=zt+100:GOSUB tri:x(2)=x:y(2)=y:xa(3)=x(2):ya(3)=y(2)           .563
xt=xt-100:GOSUB tri:x(3)=x:y(3)=y:xa(4)=x(3):ya(4)=y(3)           .621
zt=zt-100:GOSUB tri:x(4)=x:y(4)=y                                 .758
yi=yi+100:xt=xi:yt=yi:zt=zi:GOSUB tri:xa(5)=x:ya(5)=y             .403
xt=xt+100:GOSUB tri:x(5)=x:y(5)=y:xa(6)=x(5):ya(6)=y(5)           .292
zt=zt+100:GOSUB tri:x(6)=x:y(6)=y:xa(7)=x(6):ya(7)=y(6)           .200
xt=xt-100:GOSUB tri:x(7)=x:y(7)=y:xa(8)=x(7):ya(8)=y(7)           .258
zt=zt-100:GOSUB tri:x(8)=x:y(8)=y                                 .568
yi=yi-100:xt=xi:yt=yi:zt=zi:GOSUB tri:xa(9)=x:ya(9)=y             . 77
yt=yt+100:GOSUB tri:x(9)=x:y(9)=y                                 .896
yt=yt-100:xt=xi+100:yt=yi:zt=zi:GOSUB tri:xa(10)=x:ya(10)=y       .298
yt=yt+100:GOSUB tri:x(10)=x:y(10)=y                               .223
yt=yt-100:xt=xi+100:yt=yi:zt=zi+100:GOSUB tri:xa(11)=x:ya(11)=y   .650
yt=yt+100:GOSUB tri:x(11)=x:y(11)=y                               .969
yt=yt-100:xt=xi:yt=yi:zt=zi+100:GOSUB tri:xa(12)=x:ya(12)=y       .428
yt=yt+100:GOSUB tri:x(12)=x:y(12)=y                               .716
FOR T=1 TO 12                                                     .906
IF T>=5 THEN CL=2                                                 .177
IF T<5  THEN CL=3                                                 .600
LINE (ta(T),sa(T))-(T(T),s(T)),0                                  .835
LINE (xa(T),ya(T))-(x(T),y(T)),CL                                 .331
ta(T)=xa(T):sa(T)=ya(T):T(T)=x(T):s(T)=y(T)                       .728
NEXT T:tt=0:GOTO INIT                                             .969
tri:                                                              .492
q=(r3*xt+r6*yt+r9*zt)+150                                         .474
x=(r1*xt+r4*yt+r7*zt)*100/q+m1                                    .926
y=(r2*xt+r5*yt+r8*zt)*100/q+m2                                    .721
RETURN                                                            .357
rotation:                                                         .383
r1= COS(RZ)*COS(RY)                                               .349
r2= SIN(RZ)*COS(RY)                                               .658
r3=-SIN(RY)                                                       .397
r4=-SIN(RZ)*COS(RX)+COS(RZ)*SIN(RY)*SIN(RX)                       . 53
r5= COS(RZ)*COS(RX)+SIN(RZ)*SIN(RY)*SIN(RX)                       .455
r6= COS(RY)*SIN(RX)                                               .456
r7= SIN(RZ)*SIN(RX)+COS(RZ)*SIN(RY)*COS(RX)                       .100
r8=-COS(RZ)*SIN(RX)+SIN(RZ)*SIN(RY)*COS(RX)                       .990
r9= COS(RY)*COS(RX)                                               .301
RETURN                                                            .357
Numero de lineas: 55

Gráficos

Este es otro programa en el que aparecen algunas figuras interesantes realizadas con líneas, todas de diferentes colores. Hay muchas y si quieres puedes coger una de cualquier tipo y utilizarla como presentación de tus programas favoritos, o para experimentar con ellas.

Listado 2: GRAFICOS
' GRAFICOS AmigaBasic                                 .139
' (c)1989 by Jose Luis Sosa                           .609
' (c)1989 by Commodore/Amiga World                    .859
MatGraphics:                                          .823
GOSUB Initialize                                      .537
WHILE INKEY$=""                                       .982
R1=150                                                .609
R2=25                                                 .491
R3=25                                                 .894
R4=85                                                 .592
INC=Pi/64                                             .455
FOR Theta=0 TO 2*TwoPi STEP INC                       .673
X1=FNPolarX(R1,Theta)                                 .994
Y1=FNPolarY(R2,Theta)                                 .958
x2=FNPolarX(R3,Theta+Pi)                              .916
Y2=FNPolarY(R4,Theta+Pi)                              .556
LINE(X2,Y2)-(X1,Y1),INT(RND*31)+1                     . 96
NEXT                                                  . 61
Pause                                                 .555
R1=150                                                .609
R2=35                                                 .540
R3=65                                                 . 91
R4=85                                                 .592
INC=Pi/64                                             .455
Offset=Pi/3                                           .710
FOR Theta=0 TO 3*TwoPi STEP INC                       . 41
X1=FNPolarX(R1,Theta)                                 .994
Y1=FNPolarY(R2,Theta)                                 .958
X2=FNPolarY(R3,Theta+Offset)                          .149
Y2=FNPolarY(R4,Theta)                                 .151
LINE(X1,Y1)-(X2,Y2),INT(RND*31)+1                     .702
NEXT                                                  . 61
Pause                                                 .555
R1=150                                                .609
R2=35                                                 .540
R3=65                                                 . 91
R4=85                                                 .592
INC=Pi/64                                             .455
Offset=Pi/3                                           .710
FOR Theta=0 TO 3*TwoPi STEP INC                       . 41
X1=FNPolarX(R1,Theta)                                 .994
Y1=FNPolarY(R2,Theta)                                 .958
X2=FNPolarX(R3,Theta)                                 .187
Y2=FNPolarY(R4,Theta+Offset)                          .923
LINE(X1,Y1)-(X2,Y2),INT(RND*31)+1                     .702
NEXT                                                  . 61
Pause                                                 .555
R1=100                                                .364
INC=Pi/128                                            .765
Lobes=4                                               .350
FOR Theta=0 TO 2*TwoPi STEP INC                       .673
R2=R1*SIN(Lobes*Theta)                                .916
x1=FNPolarX(R2,Theta)                                 .565
Y1=FNPolarY(R2,Theta)                                 .958
LINE (XCenter,YCenter)-(X1,Y1),INT(RND*31)+1          .229
NEXT                                                  . 61
Pause                                                 .555
R1=100                                                .364
R2=85                                                 .785
INC=Pi/160                                            .905
Lobes=3                                               .343
FOR Theta=0 TO 2*TwoPi STEP INC                       .673
X!=FNPolarX(R1,Theta*Lobes)                           .391
Y1=FNPolarY(R2,Theta)                                 .958
LINE (XCenter,YCenter)-(X1,Y1),INT(RND*31)+1          .229
NEXT                                                  . 61
Pause                                                 .555
R1=130                                                .511
R2=80                                                 .750
INC=Pi/160                                            .905
Lobes=3                                               .343
FOR Theta=0 TO 2*TwoPi STEP INC                       .673
X1=FNPolarX(R1,Theta)                                 .994
Y1=FNPolarY(R2,Theta*Lobes)                           .787
LINE (XCenter,YCenter)-(X1,Y1),INT(RND*31)+1          .229
NEXT                                                  . 61
Pause                                                 .555
R1=115                                                .448
R2=85                                                 .785
R3=40                                                 .957
R4=45                                                 .396
Inc1=Pi/3                                             .126
Inc2=Pi/20                                            .537
FOR Theta1=0 TO TwoPi STEP Inc1                       .  5
FOR Theta2= 0 TO TwoPi STEP Inc2                      .663
X1=FNPolarX(R1,Theta2)                                .693
Y1=FNPolarY(R2,Theta2)                                .441
X2=FNPolarX(R1,Theta1)                                .987
Y2=FNPolarY(R1,Theta1)                                .734
LINE (X1,Y1)-(X2,Y2),INT(RND*31)+1                    .107
NEXT                                                  . 61
NEXT                                                  . 61
Pause                                                 .555
R1=115                                                .448
R2=85                                                 .785
R3=40                                                 .957
R4=45                                                 .396
Inc1=PI/3                                             .126
Inc2=Pi/18                                            .544
FOR Theta1=0 TO TwoPi STEP Inc1                       .  5
FOR Theta2= 0 To TwoPi STEP Inc2                      .663
X1=FNPOlarX(R1,Theta2)                                .693
Y1=FNPolarY(R2,Theta1)                                .392
X2=FNPolarX(R3,Theta1)                                .989
Y2=FNPolarY(R4,Theta2)                                .786
LINE (X1,Y1)-(X2,Y2),INT(RND*31)+1                    .107
NEXT                                                  . 61
NEXT                                                  . 61
Pause                                                 .555
WEND                                                  . 89
wINDOW CLOSE 2                                        .231
SCREEN CLOSE 2                                        .858
WINDOW OUTPUT                                         .734
END                                                   .992
SUB Puase STATIC                                      .547
FOR Delay=1 TO 5000                                   .461
NEXT                                                  . 61
CLS                                                   .313
END SUB                                               .214
Initialize:                                           .287
SCREEN 2,320,200,5,1                                  . 71
WINDOW 2,"AmigaBASIC Graficos",(0,0)-(297,185),23,2   .336
CLS                                                   .313
PALETTE 0,0,0,0                                       .946
FOR L=1 TO 31                                         .989
PALETTE L,RND,RND,RND                                 .107
NEXT                                                  . 61
RANDOMIZE TIMER                                       . 96
Pi=3.14159                                            .705
TwoPi=2*Pi                                            .555
XCenter=151                                           .108
YCenter=93                                            . 66
DEF FNPolarX(R,Theta)=R*COS(Theta)+XCenter            .599
DEF FNPolarY(R,Theta)=R*SIN(Theta)+YCenter            .120
RETURN                                                .357
Numero de lineas: 135

Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal