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));

Remove any row in which a NaN appears
6826 Solvers
Get the area codes from a list of phone numbers
532 Solvers
894 Solvers
Back to basics 9  Indexed References
392 Solvers
Is this triangle rightangled?
2874 Solvers
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!