Старинный, но математически правильный алгоритм
SCREEN 12
CONST Pi = 3.141592653589793#
DrawSphere 320, 240, 200
Pause
END
SUB DrawSphere (wx, wy, r)
' Color
c = 7
' Углы поворота
A = 40
b = 10
FOR u = 0 TO 360 STEP 20
FOR n = 0 TO 360 STEP .5
x = r * COS(Pi / 180 * n)
y = r * SIN(Pi / 180 * n)
z = 0
x1 = x * COS(Pi / 180 * u)
y1 = y
z1 = x * SIN(Pi / 180 * u)
' Вращение вокруг оси абсцисс
x2 = x1
y2 = y1 * COS(Pi / 180 * A) - z1 * SIN(Pi / 180 * A)
z2 = y1 * SIN(Pi / 180 * A) + z1 * COS(Pi / 180 * A)
' Вращение вокруг оси ординат
y3 = y2
x3 = x2 * COS(Pi / 180 * b) + z2 * SIN(Pi / 180 * b)
z3 = z2 * COS(Pi / 180 * b) - x2 * SIN(Pi / 180 * b)
PSET (wx + x3, wy - y3), c
NEXT
NEXT
FOR n = 0 TO 360 STEP 15
x = r * COS(Pi / 180 * n)
y = r * SIN(Pi / 180 * n)
z = 0
FOR u = 0 TO 360 STEP .5
x1 = x * COS(Pi / 180 * u)
y1 = y
z1 = x * SIN(Pi / 180 * u)
' Вращение вокруг оси абсцисс
x2 = x1
y2 = y1 * COS(Pi / 180 * A) - z1 * SIN(Pi / 180 * A)
z2 = y1 * SIN(Pi / 180 * A) + z1 * COS(Pi / 180 * A)
' Вращение вокруг оси ординат
y3 = y2
x3 = x2 * COS(Pi / 180 * b) + z2 * SIN(Pi / 180 * b)
z3 = z2 * COS(Pi / 180 * b) - x2 * SIN(Pi / 180 * b)
PSET (wx + x3, wy - y3), c
NEXT
NEXT
END SUB
Справочник алгоритмов v0.05 © 2007-2025 Igor Salnikov aka SunDoctor