DIBUJO ASISTIDO POR ORDENADOR
LISTADO 5

    
    DECLARE SUB PROYECTA (P!(), Q!())
    DECLARE FUNCTION F! (X!, Y!)
    DIM P1(3), Q1(3), P2(3), Q2(3)
    XMIN = -5: XMAX = 5
    YMIN = -5: YMAX = 5
    ZMIN = -5: ZMAX = 5
    NX = 50: NY = 50
    SX = (XMAX - XMIN) / NX
    SY = (YMAX - YMIN) / NY
    P1(1) = XMAX: P1(2) = YMIN: P1(3) = 0: PROYECTA P1(), Q1()
    XpMIN = Q1(1)
    P1(1) = XMIN: P1(2) = YMAX: P1(3) = 0: PROYECTA P1(), Q1()
    XpMAX = Q1(1)
    P1(1) = XMIN: P1(2) = YMIN: P1(3) = ZMAX: PROYECTA P1(), Q1()
    YpMAX = Q1(2)
    P1(1) = XMAX: P1(2) = YMAX: P1(3) = ZMIN: PROYECTA P1(), Q1()
    YpMIN = Q1(2)
    XS = XpMAX - XpMIN
    YS = YpMAX - YpMIN
    XC = .5 * (XpMAX + XpMIN)
    YC = .5 * (YpMAX + YpMIN)
    IF (XS / 4 > YS / 3) THEN
    SXMIN = XpMIN: SXMAX = XpMAX
    SYMIN = YC - .5 * XS * 3 / 4
    SYMAX = YC + .5 * XS * 3 / 4
    ELSE
    SXMIN = XC - .5 * YS * 4 / 3
    SXMAX = XC + .5 * YS * 4 / 3
    SYMIN = YpMIN: SYMAX = YpMAX
    END IF
    SCREEN 12: BORDER = 1
    WINDOW (BORDER * SXMIN, BORDER * SYMAX)-(BORDER * SXMAX, BORDER * SYMIN)
    P1(2) = YMIN
    FOR I = 0 TO NX
    P1(1) = XMIN
    FOR J = 0 TO NY
    P1(3) = F(P1(1), P1(2))
    PROYECTA P1(), Q1()
    IF (I <> NX) THEN
    P2(1) = P1(1): P2(2) = P1(2) + SY: P2(3) = F(P2(1), P2(2))
    PROYECTA P2(), Q2(): LINE (Q1(1), Q1(2))-(Q2(1), Q2(2))
    END IF
    IF (J <> NY) THEN
    P2(1) = P1(1) + SX: P2(2) = P1(2): P2(3) = F(P2(1), P2(2))
    PROYECTA P2(), Q2(): LINE (Q1(1), Q1(2))-(Q2(1), Q2(2))
    END IF
    P1(1) = P1(1) + SX
    NEXT J
    P1(2) = P1(2) + SY
    NEXT I
    FUNCTION F! (X!, Y!)
    F = SIN((X * X + Y * Y) / 5)
    END FUNCTION
    SUB PROYECTA (P(), Q())
    CONST C30 = .8660254037844387#
    CONST S30 = .5#
    Q(1) = (P(2) - P(1)) * C30
    Q(2) = -(P(1) + P(2)) * S30 + P(3)
    Q(3) = P(3)
    END SUB

Índice


© 1996-99, euitmt WWW team
Última modificación: 9 de Julio de 1999 - 13:38:26