-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathupdate_edge_divisions.m
More file actions
39 lines (32 loc) · 1.06 KB
/
update_edge_divisions.m
File metadata and controls
39 lines (32 loc) · 1.06 KB
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
function edges = update_edge_divisions(edge, P)
E0 = edge(1,:);
E1 = edge(end,:);
edges = zeros(P+2,2);
edges(1,:) = E0;
edges(end,:) = E1;
nPoints = size(edge,1);
divided_edge_length = compute_divided_edge_length(edge);
segment_length = divided_edge_length / (P + 1);
current_segment_length = segment_length;
eps = 1e-6;
c = 2;
for i = 2:1:nPoints
old_segment_length = norm(edge(i,:) - edge(i-1,:));
while ((old_segment_length - current_segment_length) > eps)
percent_position = current_segment_length / old_segment_length;
edges(c, :) = edge(i-1,:) + percent_position*(edge(i,:) - edge(i-1,:));
c = c + 1;
old_segment_length = old_segment_length - current_segment_length;
current_segment_length = segment_length;
fprintf('ratio = %f\n', percent_position);
end
current_segment_length = current_segment_length - old_segment_length;
end
end
function len = compute_divided_edge_length(edge)
nPoints = size(edge,1);
len = 0;
for j = 2:nPoints
len = len + norm(edge(j,:) - edge(j-1,:));
end
end