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
69
70
71
72
73
74
75
76
77
|
#!/usr/bin/env python3
import random
import math
import sys
from PIL import Image
#we're going to make triangles. lots of triangles.
#since the heightmap is in a square pattern
#we're going to have a point that is the average
#of between the 4 around it.
#subpixel[x,y] = pixel[x,y] pixel[x+1,y] pixel[x,y+1] pixel[x+1,y+1]
#we can do this first.
#then we draw 4 triangles that go around subpixel[x,y]
#triangle pixel[x,y] pixel[x+1,y] subpixel[x,y]
#triagnle pixel[x+1,y] pixel[x+1,y+1] subpixel[x,y]
#triagnle pixel[x+1,y+1] pixel[x,y+1] subpixel[x,y]
#triagnle pixel[x,y+1] pixel[x,y] subpixel[x,y]
width=32
height=16
im=Image.open(sys.argv[1]).convert('L').resize((width,height)) #load image as greyscale
#im=Image.open(sys.argv[1]).convert('L') #load image as greyscale
width=im.width
height=im.height
pixel_derp=im.load()
#print(dir(im))
#print(dir(im.getdata().getpixel(0,0)))
#quit()
#width=6
#height=6
def trianglize(x1,y1,x2,y2,xs,ys):
x1%=width
y1%=height
x2%=width
y2%=height
xs%=width
ys%=height
yscale= 32 / height
tx1=math.sin(x1 / (width / (2 * math.pi)) ) * (pixel[x1][y1] / (127 / math.pi))
tz1=math.cos(x1 / (width / (2 * math.pi)) ) * (pixel[x1][y1] / (127 / math.pi))
ty1=-((y1 * yscale) / 5) + 15
tx2=math.sin(x2 / (width / (2 * math.pi)) ) * (pixel[x2][y2] / (127 / math.pi))
tz2=math.cos(x2 / (width / (2 * math.pi)) ) * (pixel[x2][y2] / (127 / math.pi))
ty2=-((y2 * yscale) / 5) + 15
# xs=(xs * 2) + 1
tx3=math.sin(xs / (width / (2 * math.pi)) ) * (subpixel[xs][ys] / (127 / math.pi))
tz3=math.cos(xs / (width / (2 * math.pi)) ) * (subpixel[xs][ys] / (127 / math.pi))
ty3=-(((ys * yscale) + 1) / 5) + 15
print("test addshape 3 3 {} {} {} {} {} {} {} {} {}".format(tx1,ty1,tz1,tx2,ty2,tz2,tx3,ty3,tz3))
#width=16
#height=16
pixel=[[0]*height for i in range(width)]
subpixel=[[0]*height for i in range(width)]
## initialize for testing:
for y in range(0,height):
for x in range(0,width):
# pixel[x][y]=random.randint(1,255)
# pixel[x][y]=im.tobytes()[y * width + x]
pixel[x][y]=pixel_derp[x,y]
# pixel[x][y]=y * 20
#subpixel=pixel
#im.show()
for y in range(0,height-1):
for x in range(0,width):
subpixel[x][y] = ( pixel[x][y] + pixel[(x+1)%width][y] + pixel[x][(y+1)%height] + pixel[(x+1)%width][(y+1)%height] ) / 4
trianglize(x,y, x+1,y, x,y)
trianglize(x+1,y, x+1,y+1, x,y)
trianglize(x+1,y+1, x,y+1, x,y)
trianglize(x,y+1, x,y, x,y)
|