回 帖 发 新 帖 刷新版面

主题:可不可以解释一下三维动画的原理

请高手结合简单例子说明一下三维动画的原理

回复列表 (共3个回复)

沙发

我也想知道,估计是一种算法吧[em12]

板凳

'运行结果简陋了点.应该能说明问题了吧...
SCREEN 12
TYPE pests
     x AS INTEGER
     y AS INTEGER
     z AS INTEGER
END TYPE
TYPE pests1
     x AS INTEGER
     y AS INTEGER
END TYPE
DIM p(8) AS pests
DIM pp(8) AS pests1
CONST f& = 110
M = 2500
DO
M = M - 10: IF M <= 1000 THEN M = 2500
stepz = 400: stepx = 900: stepy = 550
x = 500: y = 500: z = 150
GOSUB 1000
stepz = 150: stepx = 900: stepy = 500
x = 500: y = 225: z = 250
GOSUB 1000
LOOP WHILE INKEY$ <> CHR$(27)
SCREEN 0, 0, 0
END
1000
X1 = x + 320: y1 = y + 240: z1 = z + M
X2 = x + stepx
y2 = y + stepy
z2 = z + stepz + M
p(1).x = X1: p(1).y = y1: p(1).z = z1
p(2).x = X2: p(2).y = y1: p(2).z = z1
p(3).x = X1: p(3).y = y2: p(3).z = z1
p(4).x = X2: p(4).y = y2: p(4).z = z1
p(5).x = X1: p(5).y = y1: p(5).z = z2
p(6).x = X2: p(6).y = y1: p(6).z = z2
p(7).x = X1: p(7).y = y2: p(7).z = z2
p(8).x = X2: p(8).y = y2: p(8).z = z2
FOR i = 1 TO 8
pp(i).y = INT(f * (240 + p(i).y) / p(i).z)
pp(i).x = INT(f * p(i).x / p(i).z)
pp(i).x = pp(i).x + 320
pp(i).y = pp(i).y + 240
NEXT
'boxscreen
col1 = 12
FOR i = 1 TO 4
LINE (pp(i).x, pp(i).y)-(pp(i + 4).x, pp(i + 4).y), col1
NEXT
FOR i = 1 TO 2
LINE (pp(i).x, pp(i).y)-(pp(i + 2).x, pp(i + 2).y), col1
LINE (pp(i + 4).x, pp(i + 4).y)-(pp(i + 6).x, pp(i + 6).y), col1
NEXT
FOR i = 1 TO 8 STEP 2
LINE (pp(i).x, pp(i).y)-(pp(i + 1).x, pp(i + 1).y), col1
NEXT
FOR i = 1 TO 9000
NEXT
col1 = 0
FOR i = 1 TO 4
LINE (pp(i).x, pp(i).y)-(pp(i + 4).x, pp(i + 4).y), col1
NEXT
FOR i = 1 TO 2
LINE (pp(i).x, pp(i).y)-(pp(i + 2).x, pp(i + 2).y), col1
LINE (pp(i + 4).x, pp(i + 4).y)-(pp(i + 6).x, pp(i + 6).y), col1
NEXT
FOR i = 1 TO 8 STEP 2
LINE (pp(i).x, pp(i).y)-(pp(i + 1).x, pp(i + 1).y), col1
NEXT
RETURN

3 楼

有时间我一定要好好研究

恭喜你还活着
要不要摆两桌庆祝庆祝?

我来回复

您尚未登录,请登录后再回复。点此登录或注册