annotate src/DLD-FUNCTIONS/__contourc__.cc @ 13294:7dce7e110511

make concatenation of class objects work * data.h: New file. * src/Makefile.am (octinclude_HEADERS): Add it to the list. * data.cc (attempt_type_conversion): New static function. (do_class_concat): New function. (do_cat): Use it if any elements of the list are objects. Check whether any elements of the list are objects or cells. Check whether all elements of the list are complex. Check whether the first element of the list is a struct. Maybe convert elements of the list to cells. New tests for horzcat and vertcat. * data.h (do_class_concat): Provide decl. * ov-class.h (octave_class::octave_class): Allow optional parent list. * ov.h, ov.h (octave_value::octave_value (const Octave_map&, const std::string&)): Likewise. * pt-mat.cc (do_class_concat): New static function. (tree_matrix::rvalue1): Use it to concatenate objects.
author John W. Eaton <jwe@octave.org>
date Fri, 07 Oct 2011 22:16:07 -0400
parents 3641167e5b75
children 72c96de7a403
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
1 /* Contour lines for function evaluated on a grid.
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
2
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 10154
diff changeset
3 Copyright (C) 2007-2011 Kai Habel
7017
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
4 Copyright (C) 2004, 2007 Shai Ayal
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
5
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
6 Adapted to an oct file from the stand alone contourl by Victro Munoz
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
7 Copyright (C) 2004 Victor Munoz
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
8
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
9 Based on contour plot routine (plcont.c) in PLPlot package
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
10 http://plplot.org/
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
11
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
12 Copyright (C) 1995, 2000, 2001 Maurice LeBrun
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
13 Copyright (C) 2000, 2002 Joao Cardoso
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
14 Copyright (C) 2000, 2001, 2002, 2004 Alan W. Irwin
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
15 Copyright (C) 2004 Andrew Ross
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
16
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
17 This file is part of Octave.
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
18
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
19 Octave is free software; you can redistribute it and/or modify it
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
20 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
21 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
22 option) any later version.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
23
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
24 Octave is distributed in the hope that it will be useful, but WITHOUT
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
25 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
26 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
27 for more details.
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
28
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
29 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
30 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6945
diff changeset
31 <http://www.gnu.org/licenses/>.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
32
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
33 */
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
34
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
35 #ifdef HAVE_CONFIG_H
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
36 #include <config.h>
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
37 #endif
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
38
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
39 #include <cfloat>
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
40
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
41 #include "quit.h"
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
42
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
43 #include "defun-dld.h"
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
44 #include "error.h"
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
45 #include "oct-obj.h"
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
46
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
47 static Matrix this_contour;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
48 static Matrix contourc;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
49 static int elem;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
50
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
51 // This is the quanta in which we increase this_contour.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
52 #define CONTOUR_QUANT 50
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
53
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
54 // Add a coordinate point (x,y) to this_contour.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
55
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
56 static void
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
57 add_point (double x, double y)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
58 {
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
59 if (elem % CONTOUR_QUANT == 0)
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
60 this_contour = this_contour.append (Matrix (2, CONTOUR_QUANT, 0));
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
61
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
62 this_contour (0, elem) = x;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
63 this_contour (1, elem) = y;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
64 elem++;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
65 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
66
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
67 // Add contents of current contour to contourc.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
68 // this_contour.cols () - 1;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
69
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
70 static void
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
71 end_contour (void)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
72 {
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
73 if (elem > 2)
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
74 {
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
75 this_contour (1, 0) = elem - 1;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
76 contourc = contourc.append (this_contour.extract_n (0, 0, 2, elem));
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
77 }
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
78
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
79 this_contour = Matrix ();
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
80 elem = 0;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
81 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
82
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
83 // Start a new contour, and add contents of current one to contourc.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
84
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
85 static void
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
86 start_contour (double lvl, double x, double y)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
87 {
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
88 end_contour ();
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
89 this_contour.resize (2, 0);
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
90 add_point (lvl, 0);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
91 add_point (x, y);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
92 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
93
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
94 static void
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
95 drawcn (const RowVector& X, const RowVector& Y, const Matrix& Z,
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
96 double lvl, int r, int c, double ct_x, double ct_y,
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
97 unsigned int start_edge, bool first, charMatrix& mark)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
98 {
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
99 double px[4], py[4], pz[4], tmp;
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
100 unsigned int stop_edge, next_edge, pt[2];
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
101 int next_r, next_c;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
102
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
103 //get x, y, and z - lvl for current facet
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
104 px[0] = px[3] = X(c);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
105 px[1] = px[2] = X(c+1);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
106
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
107 py[0] = py[1] = Y(r);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
108 py[2] = py[3] = Y(r+1);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
109
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
110 pz[3] = Z(r+1, c) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
111 pz[2] = Z(r+1, c + 1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
112 pz[1] = Z(r, c+1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
113 pz[0] = Z(r, c) - lvl;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
114
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
115 // Facet edge and point naming assignment.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
116 //
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
117 // 0-----1 .-0-.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
118 // | | | |
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
119 // | | 3 1
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
120 // | | | |
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
121 // 3-----2 .-2-.
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
122
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
123 // Get mark value of current facet.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
124 char id = static_cast<char> (mark(r, c));
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
125
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
126 // Check startedge s.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
127 if (start_edge == 255)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
128 {
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
129 // Find start edge.
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
130 for (unsigned int k = 0; k < 4; k++)
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
131 if (static_cast<char> (1 << k) & id)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
132 start_edge = k;
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
133 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
134
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
135 if (start_edge == 255)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
136 return;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
137
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
138 // Decrease mark value of current facet for start edge.
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
139 mark(r, c) -= static_cast<char> (1 << start_edge);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
140
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
141 // Next point (clockwise).
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
142 pt[0] = start_edge;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
143 pt[1] = (pt[0] + 1) % 4;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
144
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
145 // Calculate contour segment start if first of contour.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
146 if (first)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
147 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
148 tmp = fabs (pz[pt[1]]) / fabs (pz[pt[0]]);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
149
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
150 if (xisnan (tmp))
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
151 ct_x = ct_y = 0.5;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
152 else
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
153 {
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
154 ct_x = px[pt[0]] + (px[pt[1]] - px[pt[0]])/(1 + tmp);
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
155 ct_y = py[pt[0]] + (py[pt[1]] - py[pt[0]])/(1 + tmp);
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
156 }
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
157
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
158 start_contour (lvl, ct_x, ct_y);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
159 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
160
8333
9238637cb81c style fixes
John W. Eaton <jwe@octave.org>
parents: 7070
diff changeset
161 // Find stop edge.
9238637cb81c style fixes
John W. Eaton <jwe@octave.org>
parents: 7070
diff changeset
162 // FIXME -- perhaps this should use a while loop?
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
163 for (unsigned int k = 1; k <= 4; k++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
164 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
165 if (start_edge == 0 || start_edge == 2)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
166 stop_edge = (start_edge + k) % 4;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
167 else
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
168 stop_edge = (start_edge - k) % 4;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
169
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
170 if (static_cast<char> (1 << stop_edge) & id)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
171 break;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
172 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
173
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
174 pt[0] = stop_edge;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
175 pt[1] = (pt[0] + 1) % 4;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
176 tmp = fabs (pz[pt[1]]) / fabs (pz[pt[0]]);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
177
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
178 if (xisnan (tmp))
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
179 ct_x = ct_y = 0.5;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
180 else
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
181 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
182 ct_x = px[pt[0]] + (px[pt[1]] - px[pt[0]])/(1 + tmp);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
183 ct_y = py[pt[0]] + (py[pt[1]] - py[pt[0]])/(1 + tmp);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
184 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
185
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
186 // Add point to contour.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
187 add_point (ct_x, ct_y);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
188
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
189 // Decrease id value of current facet for start edge.
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
190 mark(r, c) -= static_cast<char> (1 << stop_edge);
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
191
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
192 // Find next facet.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
193 next_c = c;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
194 next_r = r;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
195
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
196 if (stop_edge == 0)
11586
12df7854fa7c strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 11523
diff changeset
197 next_r--;
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
198 else if (stop_edge == 1)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
199 next_c++;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
200 else if (stop_edge == 2)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
201 next_r++;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
202 else if (stop_edge == 3)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
203 next_c--;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
204
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
205 // Check if next facet is not done yet.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
206 // Go to next facet.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
207 if (next_r >= 0 && next_c >= 0 && next_r < mark.rows ()
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
208 && next_c < mark.cols () && mark(next_r, next_c) > 0)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
209 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
210 next_edge = (stop_edge + 2) % 4;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
211 drawcn (X, Y, Z, lvl, next_r, next_c, ct_x, ct_y, next_edge, false, mark);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
212 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
213 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
214
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
215 static void
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
216 mark_facets (const Matrix& Z, charMatrix& mark, double lvl)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
217 {
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
218 unsigned int nr = mark.rows ();
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
219 unsigned int nc = mark.cols ();
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
220
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
221 double f[4];
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
222
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
223 for (unsigned int c = 0; c < nc; c++)
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
224 for (unsigned int r = 0; r < nr; r++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
225 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
226 f[0] = Z(r, c) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
227 f[1] = Z(r, c+1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
228 f[3] = Z(r+1, c) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
229 f[2] = Z(r+1, c+1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
230
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
231 for (unsigned int i = 0; i < 4; i++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
232 if (fabs(f[i]) < DBL_EPSILON)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
233 f[i] = DBL_EPSILON;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
234
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
235 if (f[1] * f[2] < 0)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
236 mark(r, c) += 2;
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
237
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
238 if (f[0] * f[3] < 0)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
239 mark(r, c) += 8;
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
240 }
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
241
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
242 for (unsigned int r = 0; r < nr; r++)
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
243 for (unsigned int c = 0; c < nc; c++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
244 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
245 f[0] = Z(r, c) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
246 f[1] = Z(r, c+1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
247 f[3] = Z(r+1, c) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
248 f[2] = Z(r+1, c+1) - lvl;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
249
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
250 for (unsigned int i = 0; i < 4; i++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
251 if (fabs(f[i]) < DBL_EPSILON)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
252 f[i] = DBL_EPSILON;
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
253
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
254 if (f[0] * f[1] < 0)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
255 mark(r, c) += 1;
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
256
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
257 if (f[2] * f[3] < 0)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
258 mark(r, c) += 4;
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
259 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
260 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
261
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
262 static void
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
263 cntr (const RowVector& X, const RowVector& Y, const Matrix& Z, double lvl)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
264 {
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
265 unsigned int nr = Z.rows ();
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
266 unsigned int nc = Z.cols ();
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
267
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
268 charMatrix mark (nr - 1, nc - 1, 0);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
269
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
270 mark_facets (Z, mark, lvl);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
271
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
272 // Find contours that start at a domain edge.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
273
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
274 for (unsigned int c = 0; c < nc - 1; c++)
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
275 {
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
276 // Top.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
277 if (mark(0, c) & 1)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
278 drawcn (X, Y, Z, lvl, 0, c, 0.0, 0.0, 0, true, mark);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
279
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
280 // Bottom.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
281 if (mark(nr - 2, c) & 4)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
282 drawcn (X, Y, Z, lvl, nr - 2, c, 0.0, 0.0, 2, true, mark);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
283 }
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
284
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
285 for (unsigned int r = 0; r < nr - 1; r++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
286 {
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
287 // Left.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
288 if (mark(r, 0) & 8)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
289 drawcn (X, Y, Z, lvl, r, 0, 0.0, 0.0, 3, true, mark);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
290
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
291 // Right.
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
292 if (mark(r, nc - 2) & 2)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
293 drawcn (X, Y, Z, lvl, r, nc - 2, 0.0, 0.0, 1, true, mark);
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
294 }
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
295
7070
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
296 for (unsigned int r = 0; r < nr - 1; r++)
7593f8e83a2e [project @ 2007-10-25 20:41:16 by jwe]
jwe
parents: 7042
diff changeset
297 for (unsigned int c = 0; c < nc - 1; c++)
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
298 if (mark (r, c) > 0)
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
299 drawcn (X, Y, Z, lvl, r, c, 0.0, 0.0, 255, true, mark);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
300 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
301
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
302 DEFUN_DLD (__contourc__, args, ,
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
303 "-*- texinfo -*-\n\
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
304 @deftypefn {Loadable Function} {} __contourc__ (@var{x}, @var{y}, @var{z}, @var{levels})\n\
6945
6bbf56a9718a [project @ 2007-10-02 20:47:22 by jwe]
jwe
parents: 6257
diff changeset
305 Undocumented internal function.\n\
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
306 @end deftypefn")
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
307 {
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
308 octave_value retval;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
309
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
310 if (args.length () == 4)
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
311 {
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
312 RowVector X = args (0).row_vector_value ();
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
313 RowVector Y = args (1).row_vector_value ();
7042
e54cc03d53f6 [project @ 2007-10-19 20:43:32 by jwe]
jwe
parents: 7017
diff changeset
314 Matrix Z = args (2).matrix_value ();
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
315 RowVector L = args (3).row_vector_value ();
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
316
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
317 if (! error_state)
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
318 {
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
319 contourc.resize (2, 0);
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
320
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
321 for (int i = 0; i < L.length (); i++)
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
322 cntr (X, Y, Z, L (i));
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
323
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
324 end_contour ();
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
325
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
326 retval = contourc;
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
327 }
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
328 else
10154
40dfc0c99116 DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
329 error ("__contourc__: invalid argument values");
6257
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
330 }
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
331 else
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
332 print_usage ();
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
333
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
334 return retval;
44c91c5dfe1d [project @ 2007-01-30 19:16:52 by jwe]
jwe
parents:
diff changeset
335 }
12805
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
336
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
337 /*
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
338
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
339 ## No test needed for internal helper function.
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
340 %!assert (1)
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
341
3641167e5b75 codesprint: *.cc helper functions do not need tests
Rik <octave@nomad.inbox5.com>
parents: 11586
diff changeset
342 */