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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// =============================================================================
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 2015 - Scilab Enterprises - Calixte Denizet Charlotte Hecquet
//
// This file is distributed under the same license as the Scilab package.
// =============================================================================
// 4 triangles
m = [6 5 4; ...
6 2 5; ...
6 4 1; ...
5 2 3];
nodes = [55 20; ...
85 5; ...
100 10; ...
75 30; ...
80 20; ...
70 15];
z = [-1 -1 0.0001 0.0001 1 1];
// contours
xc_ref = [-0.5, 64.999, 58.75, -0.5, 81.25, 83.75, 92.49925, 0, 74.998, 62.5, 0, 77.5, 82.5, 99.9985, ...
0.5, 77.49975, 72.50025, 66.25, 0.5, 73.75, 81.25, 90.001];
yc_ref = [2, 24.9995, 18.75, 3, 7.5, 8.75, 7.49975, 2, 29.999, 17.5, 3, 10, 12.5, 9.9995, ...
3, 25.0005, 22.50075, 16.25, 3, 12.5, 16.25, 14.9995];
[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z, [-0.5, 0, 0.5]);
assert_checkalmostequal(xc, xc_ref);
assert_checkalmostequal(yc, yc_ref);
[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z, 3);
assert_checkalmostequal(xc, xc_ref);
assert_checkalmostequal(yc, yc_ref);
// 2 quadrangles
m = [1 2 3 4; 4 3 6 5];
nodes = [10 20; ...
40 20; ...
50 40; ...
5 40; ...
20 80; ...
40 80];
z = [-1 -1 0 0 1 1];
// contours
[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z, [-0.5, -0.25, 0, 0.25, 0.5]);
xc_ref = [-0.5,45,30,7.5,-0.25,47.5,40,6.25,0,50,5,0.25,47.5,13.75,8.75,0.5,45,22.5,12.5];
yc_ref = [3,30,30,30,3,35,35,35,2,40,40,3,50,50,50,3,60,60,60];
assert_checkequal(xc, xc_ref);
assert_checkequal(yc, yc_ref);
[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z, [-0.6 -0.2 0.2 0.6]);
xc_ref = [-0.6,44,26,8,-0.2,48,42,6,0.2,48,12,8,0.6,44,26,14];
yc_ref = [3,28,28,28,3,36,36,36,3,48,48,48,3,64,64,64];
assert_checkequal(xc, xc_ref);
assert_checkequal(yc, yc_ref);
[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))', m, (1:size(m, 1))'], z, 4);
assert_checkalmostequal(xc, xc_ref);
assert_checkalmostequal(yc, yc_ref);
// Error messages
// Number of arguments
err = msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "contour2dm", 5);
assert_checkerror("[xc,yc] = contour2dm()", err);
assert_checkerror("[xc,yc] = contour2dm(""A"", nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5], ""arg6"")", err);
err = msprintf(_("%s: Wrong number of output argument(s): %d expected.\n"), "contour2dm", 2);
assert_checkerror("contour2dm(""A"", nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
assert_checkerror("[xc,yc,zc] = contour2dm(""A"", nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
// Type of arguments
err = msprintf(_("%s: Wrong type for argument #%d: A real expected.\n"), "contour2dm", 1);
assert_checkerror("[xc,yc] = contour2dm(""A"", nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
err = msprintf(_("%s: Wrong type for argument #%d: A real expected.\n"), "contour2dm", 2);
assert_checkerror("[xc,yc] = contour2dm(nodes(:,1), ""A"", [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
err = msprintf(_("%s: Wrong type for argument #%d: A real expected.\n"), "contour2dm", 3);
assert_checkerror("[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), ""A"", z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
err = msprintf(_("%s: Wrong type for argument #%d: A real expected.\n"), "contour2dm", 4);
assert_checkerror("[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], ""A"", [-0.5, -0.25, 0, 0.25, 0.5])", err);
err = msprintf(_("%s: Wrong type for argument #%d: A real expected.\n"), "contour2dm", 5);
assert_checkerror("[xc, yc] = contour2dm(nodes(:,1), nodes(:,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, ""A"")", err);
// Size of arguments
err = msprintf(_("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "contour2dm", 2, 6, 1);
assert_checkerror("[xc,yc] = contour2dm(nodes(:,1), nodes(1,2), [(1:size(m, 1))'', m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
err = msprintf(_("%s: Wrong size for input argument #%d: %d-by-%d matrix expected.\n"), "contour2dm", 2, 1, 1);
assert_checkerror("[xc, yc] = contour2dm(nodes(1,1), nodes(:,2), [m, (1:size(m, 1))''], z, [-0.5, -0.25, 0, 0.25, 0.5])", err);
|