DECLARE SUB PROYECTA (P!(), Q!())
DECLARE FUNCTION X! (u!, v!)
DECLARE FUNCTION Y! (u!, v!)
DECLARE FUNCTION Z! (u!, v!)
DIM P1(3), Q1(3), P2(3), Q2(3)
CONST PI = 3.141592653589793#
XMIN = -5: XMAX = 5: YMIN = -5: YMAX = 5: ZMIN = -5: ZMAX = 5
uMin = -PI: uMAX = PI: vMin = -PI / 2: vMAX = PI / 2
Nu = 20: Nv = 20
Su = (uMAX - uMin) / Nu
Sv = (vMAX - vMin) / Nv
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)
v = vMin
FOR I = 0 TO Nu
u = uMin
FOR J = 0 TO Nv
P1(1) = X(u, v): P1(2) = Y(u, v): P1(3) = Z(u, v)
PROYECTA P1(), Q1()
IF (I <> Nu) THEN
P2(1) = X(u, v + Sv): P2(2) = Y(u, v + Sv): P2(3) = Z(u, v + Sv)
PROYECTA P2(), Q2(): LINE (Q1(1), Q1(2))-(Q2(1), Q2(2))
END IF
IF (J <> Nv) THEN
P2(1) = X(u + Su, v): P2(2) = Y(u + Su, v): P2(3) = Z(u + Su, v)
PROYECTA P2(), Q2(): LINE (Q1(1), Q1(2))-(Q2(1), Q2(2))
END IF
u = u + Su
NEXT J
v = v + Sv
NEXT I
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
FUNCTION X! (u!, v!)
X = 5 * COS(v) * COS(u)
END FUNCTION
FUNCTION Y! (u!, v!)
Y = 5 * COS(v) * SIN(u)
END FUNCTION
FUNCTION Z! (u!, v!)
Z = 5 * SIN(v)
END FUNCTION
Índice
© 1996-99, euitmt WWW team
Última modificación: 9 de Julio de 1999 - 13:38:29