-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.lua
68 lines (57 loc) · 3.27 KB
/
test.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
a = {
{ 1, {158, 141, 125, 99, 155, 72, 165, 55, 99, -28, -31, 59, 1, 215, 110, 219, 246, 239, 158, 141, 158, 141, 158, 141, 158, 141, }},
{ 3, {80, 135, 71, 139, 62, 143, 53, 148, -13, 68, 29, 113, 80, 135, 80, 135, 80, 135, 80, 135, }},
{ 1, {178, 145, 186, 140, 198, 134, 204, 126, 212, 128, 219, 141, 226, 146, 226, 146, 216, 161, 178, 145, 178, 145, 178, 145, 178, 145, }},
{ 1, {235, 144, 240, 143, 250, 141, 251, 138, 248, 133, 231, 137, 235, 144, 235, 144, 235, 144, 235, 144, }},
{ 1, {287, 104, 287, 105, 288, 105, 289, 107, 288, 108, 287, 108, 285, 109, 285, 108, 284, 108, 284, 107, 285, 106, 286, 105, 287, 104, 287, 100, 285, 103, 283, 106, 281, 109, 282, 109, 283, 109, 283, 108, 283, 109, 284, 109, 284, 109, 277, 118, 262, 123, 259, 129, 265, 141, 287, 118, 291, 109, 290, 107, 288, 105, 287, 103, 288, 102, 288, 101, 287, 100, 287, 100, 287, 100, 287, 100, }},
{ 3, {178, 139, 244, 158, 269, 131, 297, 99, 285, 134, 239, 160, 193, 149, 188, 146, 183, 142, 178, 139, }},
{ 2, {272, 124, 270, 126, 268, 124, 269, 122, 271, 120, 273, 122, 272, 124, }},
{ 2, {277, 120, 276, 122, 273, 121, 274, 119, 275, 117, 278, 117, 277, 120, }},
{ 2, {267, 129, 265, 130, 263, 127, 265, 126, 267, 125, 268, 127, 267, 129, }},
{ 2, {262, 132, 260, 134, 258, 131, 259, 130, 261, 128, 263, 130, 262, 132, }},
{ 3, {222, 199, 170, 212, 127, 168, 133, 158, 159, 198, 218, 173, 248, 188, 239, 192, 231, 196, 222, 199, }},
{ 1, {227, 190, 239, 186, 253, 192, 264, 185, 257, 168, 208, 185, 227, 190, 227, 190, 227, 190, 227, 190, }},
{ 2, {119, 1, -11, 1, -32, 94, 0, 210, 0, 210, 0, 210, 0, 210, 36, 211, 54, 171, 88, 159, 140, 232, 283, 265, 319, 137, 294, 165, 184, 242, 129, 163, 129, 148, 165, 186, 181, 179, 164, 163, 138, 153, 180, 160, 275, 172, 314, 131, 320, 74, 255, 176, 196, 167, 110, 108, 80, 145, -13, 186, 9, 97, 19, 101, 83, 97, 115, 82, -9, 13, 179, 20, 169, 71, 168, 79, 175, 79, 180, 78, 200, 65, 203, 2, 119, 1, 119, 1, 119, 1, 119, 1, }},
{ 2, {228, 190, 226, 191, 224, 188, 225, 187, 228, 184, 231, 187, 228, 190, 228, 190, 228, 190, 228, 190, }},
{ 2, {234, 189, 227, 188, 233, 182, 235, 185, 236, 187, 236, 189, 234, 189, 234, 189, 234, 189, 234, 189, }},
{ 2, {247, 188, 245, 188, 244, 185, 246, 184, 250, 182, 250, 188, 247, 188, }},
{ 2, {241, 189, 237, 189, 239, 183, 241, 184, 243, 185, 243, 189, 241, 189, }},
{ 1, {65, 139, 66, 139, 66, 139, 67, 140, }},
}
for shape = 1,#a do
c = a[shape][1]
p = a[shape][2]
O = 0
base = 1
Ax = 2 * p[base + 0]
Ay = 400 - 2 * p[base + 1]
for base = 1,#p-6,6 do
Bx = 2 * p[base + 2]
By = 400 - 2 * p[base + 3]
Cx = 2 * p[base + 4]
Cy = 400 - 2 * p[base + 5]
Dx = 2 * p[base + 6]
Dy = 400 - 2 * p[base + 7]
Yx = 3 * (Bx - Ax)
Yy = 3 * (By - Ay)
Xx = 3 * (Cx + Ax) - 6 * Bx
Xy = 3 * (Cy + Ay) - 6 * By
Wx = Dx - 3 * Cx + 3 * Bx - Ax
Wy = Dy - 3 * Cy + 3 * By - Ay
Zx = Ax
Zy = Ay
print(c, Zx + O, Zy + O, Wx + O, Wy + O, Xx + O, Xy + O, Yx + O, Yy + O)
for T = 0,240 do
t = T / 240
-- x = Ax * (1 - t)^3 + 3 * Bx * (1 - t) ^ 2 * t + 3 * Cx * (1 - t) * t ^ 2 + Dx * t ^ 3
-- y = Ay * (1 - t)^3 + 3 * By * (1 - t) ^ 2 * t + 3 * Cy * (1 - t) * t ^ 2 + Dy * t ^ 3
x = Zx + t * (Yx + t * (Xx + t * Wx))
y = Zy + t * (Yy + t * (Xy + t * Wy))
putpicturepixel(x, y, c)
end
Ax = x
Ay = y
updatescreen()
waitinput(0.5)
end
end