Problem Set 1 - Given Files
mesh.txt:
162 260
1 0 0 1
2 1 0 1
3 1 1 1
4 0 1 1
5 0.9501 0.5828 0
6 0.2311 0.4235 0
7 0.6068 0.5155 0
8 0.486 0.334 0
9 0.8913 0.4329 0
10 0.7621 0.2259 0
11 0.4565 0.5798 0
12 0.0185 0.7604 0
13 0.8214 0.5298 0
14 0.4447 0.6405 0
15 0.6154 0.2091 0
16 0.7919 0.3798 0
17 0.9218 0.7833 0
18 0.7382 0.6808 0
19 0.1763 0.4611 0
20 0.4057 0.5678 0
21 0.9355 0.7942 0
22 0.9169 0.0592 0
23 0.4103 0.6029 0
24 0.8936 0.0503 0
25 0.0579 0.4154 0
26 0.3529 0.305 0
27 0.8132 0.8744 0
28 0.0099 0.015 0
29 0.1389 0.768 0
30 0.2028 0.9708 0
31 0.1987 0.9901 0
32 0.6038 0.7889 0
33 0.2722 0.4387 0
34 0.1988 0.4983 0
35 0.0153 0.214 0
36 0.7468 0.6435 0
37 0.4451 0.32 0
38 0.9318 0.9601 0
39 0.466 0.7266 0
40 0.4186 0.412 0
41 0.8462 0.7446 0
42 0.5252 0.2679 0
43 0.2026 0.4399 0
44 0.6721 0.9334 0
45 0.8381 0.6833 0
46 0.0196 0.2126 0
47 0.6813 0.8392 0
48 0.3795 0.6288 0
49 0.8318 0.1338 0
50 0.5028 0.2071 0
51 0.7095 0.6072 0
52 0.4289 0.6299 0
53 0.3046 0.3705 0
54 0.1897 0.5751 0
55 0.1934 0.4514 0
56 0.6822 0.0439 0
57 0.3028 0.0272 0
58 0.5417 0.3127 0
59 0.1509 0.0129 0
60 0.6979 0.384 0
61 0.3784 0.6831 0
62 0.86 0.0928 0
63 0.8537 0.0353 0
64 0.5936 0.6124 0
65 0.4966 0.6085 0
66 0.8998 0.0158 0
67 0.8216 0.0164 0
68 0.6449 0.1901 0
69 0.818 0.5869 0
70 0.6602 0.0576 0
71 0.342 0.3676 0
72 0.2897 0.6315 0
73 0.3412 0.7176 0
74 0.5341 0.6927 0
75 0.7271 0.0841 0
76 0.3093 0.4544 0
77 0.8385 0.4418 0
78 0.5681 0.3533 0
79 0.3704 0.1536 0
80 0.7027 0.6756 0
81 0.5466 0.6992 0
82 0.4449 0.7275 0
83 0.6946 0.4784 0
84 0.6213 0.5548 0
85 0.7948 0.121 0
86 0.9568 0.4508 0
87 0.5226 0.7159 0
88 0.8801 0.8928 0
89 0.173 0.2731 0
90 0.9797 0.2548 0
91 0.2714 0.8656 0
92 0.2523 0.2324 0
93 0.8757 0.8049 0
94 0.7373 0.9084 0
95 0.1365 0.2319 0
96 0.0118 0.2393 0
97 0.8939 0.0498 0
98 0.1991 0.0784 0
99 0.2987 0.6408 0
100 0.6614 0.1909 0
101 0.2844 0.8439 0
102 0.4692 0.1739 0
103 0.0648 0.1708 0
104 0.9883 0.9943 0
105 0.5 0 1
106 1 0.5 1
107 0.5 1 1
108 0 0.5 1
109 0.75 0 1
110 0.25 0 1
111 1 0.25 1
112 0.75 1 1
113 0 0.75 1
114 0.625 0 1
115 0.125 0 1
116 1 0.125 1
117 0.875 1 1
118 0.0625 0 1
119 1 0.75 1
120 0.25 1 1
121 0 0.25 1
122 0.875 0 1
123 0.375 0 1
124 1 0.375 1
125 0.625 1 1
126 0 0.875 1
127 0.6875 0 1
128 0.1875 0 1
129 1 0.625 1
130 0.9375 1 1
131 0.03125 0 1
132 1 0.875 1
133 0 0.375 1
134 0.8125 0 1
135 1 0.3125 1
136 0.125 1 1
137 0 0.125 1
138 0.9375 0 1
139 0.3125 0 1
140 1 0.4375 1
141 0 0.8125 1
142 0.15625 0 1
143 1 0.5625 1
144 0.96875 1 1
145 1 0.9375 1
146 0 0.4375 1
147 0.84375 0 1
148 0 0.1875 1
149 0.1875 1 1
150 0 0.0625 1
151 0.90625 0 1
152 0 0.78125 1
153 0.984375 1 1
154 1 0.96875 1
155 0 0.21875 1
156 0.21875 1 1
157 0 0.03125 1
158 0.992188 1 1
159 1 0.984375 1
160 0 0.234375 1
161 0.203125 1 1
162 0 0.015625 1
1 150 118 103
2 115 103 118
3 103 46 148
4 148 46 35
5 103 59 98
6 103 137 150
7 128 98 59
8 46 103 95
9 138 2 22
10 95 103 98
11 95 89 133
12 160 155 96
13 96 35 46
14 108 25 19
15 89 43 25
16 92 89 95
17 43 6 33
18 6 43 89
19 6 89 53
20 25 133 89
21 46 95 96
22 25 43 19
23 92 95 98
24 162 1 28
25 98 79 92
26 79 98 57
27 123 79 57
28 26 92 79
29 37 102 50
30 50 102 15
31 42 50 15
32 79 102 26
33 79 123 102
34 50 42 37
35 76 33 53
36 33 6 53
37 71 53 26
38 71 76 53
39 37 40 71
40 37 26 102
41 11 40 7
42 8 40 37
43 37 42 8
44 37 71 26
45 53 92 26
46 76 71 40
47 78 40 8
48 53 89 92
49 98 110 57
50 43 33 34
51 54 19 34
52 55 19 43
53 34 19 55
54 113 54 12
55 34 76 72
56 99 72 48
57 54 72 29
58 34 72 54
59 34 55 43
60 29 72 99
61 30 136 29
62 108 54 113
63 29 12 54
64 136 126 29
65 91 101 107
66 91 30 29
67 91 107 120
68 149 30 31
69 82 107 101
70 91 29 101
71 101 29 73
72 136 4 126
73 29 99 73
74 108 19 54
75 20 48 72
76 76 40 20
77 48 20 23
78 61 99 48
79 52 23 11
80 11 23 20
81 20 40 11
82 48 23 52
83 11 7 65
84 65 14 11
85 61 73 99
86 61 48 52
87 61 52 14
88 73 61 82
89 39 74 87
90 14 74 39
91 39 107 82
92 39 82 14
93 107 39 32
94 14 82 61
95 52 11 14
96 73 82 101
97 74 14 65
98 72 76 20
99 33 76 34
100 87 32 39
101 58 8 42
102 102 123 105
103 68 70 100
104 70 68 15
105 100 70 75
106 68 100 15
107 75 67 85
108 75 56 109
109 100 75 10
110 56 75 70
111 105 70 102
112 10 75 85
113 58 15 78
114 58 42 15
115 78 15 60
116 7 40 78
117 10 16 60
118 90 16 10
119 83 60 16
120 78 60 7
121 16 77 83
122 60 15 100
123 100 10 60
124 7 60 83
125 10 85 49
126 15 102 70
127 63 97 24
128 67 147 63
129 63 24 62
130 67 63 62
131 22 97 66
132 66 97 63
133 147 122 63
134 24 97 22
135 56 127 109
136 22 66 138
137 135 16 90
138 49 85 62
139 49 62 116
140 10 49 90
141 9 77 16
142 116 111 90
143 77 9 13
144 135 9 16
145 135 124 9
146 62 22 116
147 62 24 22
148 83 77 13
149 3 104 159
150 85 67 62
151 114 70 105
152 86 5 9
153 64 7 84
154 64 74 65
155 7 83 84
156 64 84 51
157 80 51 36
158 51 80 64
159 36 51 69
160 80 36 18
161 51 84 83
162 64 80 81
163 81 32 87
164 74 64 81
165 81 80 32
166 44 107 32
167 94 47 27
168 47 32 80
169 112 94 27
170 94 44 47
171 41 47 18
172 47 44 32
173 47 80 18
174 87 74 81
175 18 36 45
176 65 7 64
177 45 69 5
178 13 69 51
179 5 69 13
180 45 41 18
181 45 17 41
182 5 129 45
183 119 17 45
184 41 17 93
185 13 9 5
186 47 41 27
187 27 93 88
188 93 27 41
189 88 93 21
190 117 88 38
191 132 38 88
192 132 88 21
193 107 44 125
194 21 119 132
195 119 45 129
196 144 38 154
197 93 17 21
198 27 88 117
199 86 106 5
200 45 36 69
201 83 13 51
202 112 44 94
203 91 120 30
204 78 8 58
205 96 133 121
206 140 106 86
207 109 67 75
208 128 110 98
209 49 116 90
210 27 117 112
211 12 152 113
212 70 114 56
213 115 59 103
214 22 2 116
215 130 117 38
216 28 131 118
217 119 21 17
218 120 156 30
219 96 95 133
220 122 66 63
221 57 139 123
222 124 86 9
223 44 112 125
224 126 141 29
225 56 114 127
226 59 142 128
227 5 143 129
228 144 130 38
229 28 1 131
230 145 38 132
231 25 146 133
232 67 109 134
233 90 111 135
234 149 136 30
235 137 103 148
236 66 151 138
237 57 110 139
238 86 124 140
239 29 141 12
240 59 115 142
241 5 106 143
242 104 153 144
243 145 154 38
244 25 108 146
245 67 134 147
246 35 155 148
247 31 161 149
248 118 150 28
249 66 122 151
250 12 141 152
251 104 158 153
252 154 104 144
253 96 155 35
254 30 156 31
255 28 150 157
256 104 3 158
257 104 154 159
258 96 121 160
259 31 156 161
260 28 157 162
smooth.m:
function coords = smooth(tris, coords, boundary, badtris)
for i=1:length(tris) % for each triangle
if (find(i == badtris)) % if this is a bad triangle
verts = tris(i,:); % obtain its vertices
list1 = mod(find(tris == verts(1)),length(tris));
% find all triangles containing vertex 1.
list1(find(list1 == 0)) = length(tris);
list2 = mod(find(tris == verts(2)),length(tris));
% find all triangles containing vertex 2.
list2(find(list2 == 0)) = length(tris);
list3 = mod(find(tris == verts(3)),length(tris));
% find all triangles containing vertex 3.
list3(find(list3 == 0)) = length(tris);
neighbor1 = tris(list1(:),:); % Get vertices of these triangles.
neighbor2 = tris(list2(:),:);
neighbor3 = tris(list3(:),:);
neighbor1 = neighbor1(find(neighbor1 ~= verts(1)));
% Remove vertex 1 from list of neighbors.
neighbor2 = neighbor2(find(neighbor2 ~= verts(2)));
neighbor3 = neighbor3(find(neighbor3 ~= verts(3)));
if (boundary(verts(1)) == 0) % if this vertex is an interior node.
% Move this vertex to the average of its neighbors.
coords(verts(1),1) = sum(coords(neighbor1,1))/length(neighbor1);
coords(verts(1),2) = sum(coords(neighbor1,2))/length(neighbor1);
end;
if (boundary(verts(2)) == 0) % if this vertex is an interior node.
% Move this vertex to the average of its neighbors.
coords(verts(2),1) = sum(coords(neighbor2,1))/length(neighbor2);
coords(verts(2),2) = sum(coords(neighbor2,2))/length(neighbor2);
end;
if (boundary(verts(3)) == 0) % if this vertex is an interior node.
% Move this vertex to the average of its neighbors.
coords(verts(3),1) = sum(coords(neighbor3,1))/length(neighbor3);
coords(verts(3),2) = sum(coords(neighbor3,2))/length(neighbor3);
end;
end;
end;