Test  Status  Code Input and Output 

1  Pass 
%% Edge case: no vertices
P = zeros(0,2);
P2 = zeros(0,2);
assert(isequal(simplify_polygon(P), P2));

2  Pass 
%% Edge case: one vertex
P = [1 1];
P2 = [1 1];
assert(isequal(simplify_polygon(P), P2));

3  Pass 
%% Edge case: three vertices (a single line segment)
P = [...
1 1
1 2
1 1 ];
P2 = [...
1 1
1 2
1 1];
assert(isequal(simplify_polygon(P), P2));
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]

4  Pass 
%% Single line segment with multiple vertices
P = [ ...
1 1
2 1
3 1
4 1
5 1
4 1
3 1
2 1
1 1];
P2 = [ ...
1 1
5 1
1 1];
assert(isequal(simplify_polygon(P), P2));
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]

5  Pass 
%% Single line segment, different spacing
P = [ ...
1 1
2 1
4 1
5 1
1 1];
P2 = [ ...
1 1
5 1
1 1];
assert(isequal(simplify_polygon(P), P2));
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]
[Warning: The results from INPOLYGON may not be reliable. The size of the polygon is approaching the
lower limit of what can be handled with reasonable accuracy.]
[> In inpolygon at 95
In simplify_polygon at 16
In verifyCode>evaluateCode at 227
In verifyCode at 40
In fevalJSON at 14]

6  Pass 
%% Rectangle
P = [ ...
1 1
2 1
3 1
4 1
4 2
4 3
3 3
2 3
1 3
1 2
1 1];
P2 = [ ...
1 1
4 1
4 3
1 3
1 1];
assert(isequal(simplify_polygon(P), P2));

7  Pass 
%% Two rectangles separated by line segment
P = [ ...
1 2
1 1
2 1
2 2
1 2
1 3
1 4
1 5
2 5
2 4
1 4
1 3
1 2];
P2 = [ ...
1 1
2 1
2 2
1 2
1 5
2 5
2 4
1 4
1 1];
assert(isequal(simplify_polygon(P), P2));

8  Pass 
%% Nonsimple polygon (figure eight)
P = [ ...
1 1
2 2
3 3
1 3
2 2
3 1
1 1];
P2 = [ ...
1 1
3 3
1 3
3 1
1 1];
assert(isequal(simplify_polygon(P), P2));

9  Pass 
%%
P = [ ...
1 1
2 2
3 3
4 4
5 5
5 4
6 3
8 1
7 1
1 1];
P2 = [ ...
1 1
5 5
5 4
8 1
1 1];
assert(isequal(simplify_polygon(P), P2));

10  Pass 
%% Circle; no points should be removed
theta = linspace(0,2*pi,200);
theta(end) = 0;
x = 20*cos(theta);
y = 20*sin(theta);
P = [x', y'];
P2 = P;
assert(isequal(simplify_polygon(P), P2));

11  Pass 
%% Starting vertex can be removed
P = [ ...
2 1
3 1
3 2
3 3
2 3
1 3
1 2
1 1
2 1];
P2 = [ ...
3 1
3 3
1 3
1 1
3 1];
assert(isequal(simplify_polygon(P), P2));

515 Solvers
790 Solvers
1278 Solvers
212 Solvers
Is this number Munchhausen Narcissistic?
134 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!