@@ -25,85 +25,93 @@ def tessellate(np.ndarray[DTYPE_t, ndim=2] A,
25
25
cdef int idx = 0
26
26
cdef np.ndarray item
27
27
cdef np.ndarray facets = np.zeros([4 * m * n, 12 ], dtype = np.float64)
28
- # cdef np.ndarray mask = np.zeros([m, n], dtype=DTYPE)
28
+ cdef np.ndarray mask = np.zeros([m, n], dtype = DTYPE)
29
29
30
- # cdef np.ndarray edge_mask = np.sum([roll2d(mask, (i, k))
31
- # for i, k in product([-1, 0, 1],
32
- # repeat=2)], axis=0)
33
30
cdef double zmin, zthickness, minval, xsize, ysize, zsize
34
31
cdef np.ndarray X, Y
35
32
cdef int facet_cut = 1
36
33
37
34
for i in xrange (m - 1 ):
38
35
for k in xrange (n - 1 ):
39
36
if A[i, k] > mask_val and A[i, k + 1 ] > mask_val and A[i + 1 , k ] > mask_val:
40
- facets[idx, 3 ] = i - m / 2.
41
- facets[idx, 4 ] = k + 1 - n / 2.
37
+ facets[idx, 3 ] = i
38
+ facets[idx, 4 ] = k + 1
42
39
facets[idx, 5 ] = A[i, k + 1 ]
43
40
44
- facets[idx, 6 ] = i - m / 2.
45
- facets[idx, 7 ] = k - n / 2.
41
+ facets[idx, 6 ] = i
42
+ facets[idx, 7 ] = k
46
43
facets[idx, 8 ] = A[i, k]
47
44
48
- facets[idx, 9 ] = i + 1 - m / 2.
49
- facets[idx, 10 ] = k + 1 - n / 2.
45
+ facets[idx, 9 ] = i + 1
46
+ facets[idx, 10 ] = k + 1
50
47
facets[idx, 11 ] = A[i + 1 , k + 1 ]
51
48
52
- # mask[i, k] = 1
53
- # mask[i, k + 1 ] = 1
54
- # mask[i + 1, k] = 1
49
+ mask[i, k + 1 ] = 1
50
+ mask[i, k] = 1
51
+ mask[i + 1 , k] = 1
55
52
56
53
idx += 1
57
54
58
55
if A[i + 1 , k + 1 ] > mask_val and A[i, k] > mask_val and A[i + 1 , k] > mask_val:
59
- facets[idx, 3 ] = i - m / 2.
60
- facets[idx, 4 ] = k - n / 2.
56
+ facets[idx, 3 ] = i
57
+ facets[idx, 4 ] = k
61
58
facets[idx, 5 ] = A[i, k]
62
59
63
- facets[idx, 6 ] = i + 1 - m / 2.
64
- facets[idx, 7 ] = k - n / 2.
60
+ facets[idx, 6 ] = i + 1
61
+ facets[idx, 7 ] = k
65
62
facets[idx, 8 ] = A[i + 1 , k]
66
63
67
- facets[idx, 9 ] = i + 1 - m / 2.
68
- facets[idx, 10 ] = k + 1 - n / 2.
64
+ facets[idx, 9 ] = i + 1
65
+ facets[idx, 10 ] = k + 1
69
66
facets[idx, 11 ] = A[i + 1 , k + 1 ]
70
67
71
- # mask[i, k] = 1
72
- # mask[i + 1, k + 1] = 1
73
- # mask[i + 1, k] = 1
68
+ mask[i, k] = 1
69
+ mask[i + 1 , k + 1 ] = 1
70
+ mask[i + 1 , k] = 1
74
71
75
72
idx += 1
76
73
77
- # if solid:
78
- # facet_cut = 2
79
- # edge_mask[np.where(edge_mask == 9.)] = 0.
80
- # edge_mask[np.where(edge_mask != 0.)] = 1.
81
- # edge_mask[0::m - 1, :] = 1.
82
- # edge_mask[:, 0::n - 1] = 1.
83
- # X, Y = np.where(edge_mask == 1.)
84
- # locs = np.array(zip(X - m / 2., Y - n / 2.))
74
+ cdef np.ndarray edge_mask = np.sum([roll2d(mask, (i, k))
75
+ for i, k in product([- 1 , 0 , 1 ],
76
+ repeat = 2 )], axis = 0 )
85
77
86
- # zvals = facets[:, 5::3]
87
- # zmin, zthickness = zvals.min(), zvals.ptp()
78
+ if solid:
79
+ facet_cut = 2
80
+ edge_mask[np.where(edge_mask == 9. )] = 0.
81
+ edge_mask[np.where(edge_mask != 0. )] = 1.
82
+ edge_mask[0 ::m - 1 , :] = 1.
83
+ edge_mask[:, 0 ::n - 1 ] = 1.
88
84
89
- # minval = zmin - min_thickness_percent * zthickness
85
+ # X, Y = np.where(edge_mask == 1.)
86
+ # locs = np.array(zip(X - m / 2., Y - n / 2.))
90
87
91
- # for i in xrange(idx):
88
+ zvals = facets[:, 5 ::3 ]
89
+ zmin, zthickness = zvals.min(), zvals.ptp()
92
90
91
+ minval = zmin - min_thickness_percent * zthickness
93
92
94
- # facets[idx+i, 3] = i_ - m / 2.
95
- # facets[idx+i, 4] = k_ - n / 2.
96
- # facets[idx+i, 5] = minval
93
+ for i in xrange (idx):
97
94
98
- # facets[idx+i, 6] = i_ + 1 - m / 2.
99
- # facets[idx+i, 7] = k_ - n / 2.
100
- # facets[idx+i, 8] = minval
95
+ # if (facet[3], facet[4]) in locs:
96
+ # facets[i][5] = minval
97
+ # if (facet[6], facet[7]) in locs:
98
+ # facets[i][8] = minval
99
+ # if (facet[9], facet[10]) in locs:
100
+ # facets[i][11] = minval
101
101
102
- # facets[idx+i, 9 ] = i_ + 1 - m / 2.
103
- # facets[idx+i, 10 ] = k_ + 1 - n / 2.
104
- # facets[idx+i, 11 ] = minval
102
+ facets[idx+ i, 3 ] = facets[i, 6 ]
103
+ facets[idx+ i, 4 ] = facets[i, 7 ]
104
+ facets[idx+ i, 5 ] = minval
105
105
106
- return facets[:idx]
106
+ facets[idx+ i, 6 ] = facets[i, 3 ]
107
+ facets[idx+ i, 7 ] = facets[i, 4 ]
108
+ facets[idx+ i, 8 ] = minval
109
+
110
+ facets[idx+ i, 9 ] = facets[i, 9 ]
111
+ facets[idx+ i, 10 ] = facets[i, 10 ]
112
+ facets[idx+ i, 11 ] = minval
113
+
114
+ return facets[:facet_cut* idx]
107
115
108
116
109
117
@ cython.boundscheck (False )
0 commit comments