14 * |
14 * |
15 * You should have received a copy of the GNU General Public License |
15 * You should have received a copy of the GNU General Public License |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 */ |
17 */ |
18 |
18 |
|
19 #include <QObject> |
|
20 #include <QStringList> |
19 #include <assert.h> |
21 #include <assert.h> |
20 #include "common.h" |
22 #include "common.h" |
21 #include "types.h" |
23 #include "types.h" |
22 #include "misc.h" |
24 #include "misc.h" |
23 |
25 |
|
26 str DoFormat (vector<StringFormatArg> args) { |
|
27 assert (args.size () >= 1); |
|
28 str text = args[0].value (); |
|
29 |
|
30 for (uchar i = 1; i < args.size (); ++i) |
|
31 text = text.arg (args[i].value ()); |
|
32 |
|
33 return text; |
|
34 } |
|
35 |
24 vertex::vertex (double x, double y, double z) { |
36 vertex::vertex (double x, double y, double z) { |
25 m_coords[X] = x; |
37 m_coords[X] = x; |
26 m_coords[Y] = y; |
38 m_coords[Y] = y; |
27 m_coords[Z] = z; |
39 m_coords[Z] = z; |
28 } |
40 } |
43 return mid; |
55 return mid; |
44 } |
56 } |
45 |
57 |
46 // ============================================================================= |
58 // ============================================================================= |
47 str vertex::stringRep (bool mangled) const { |
59 str vertex::stringRep (bool mangled) const { |
48 return fmt (mangled ? "(%s, %s, %s)" : "%s %s %s", |
60 if (mangled) |
49 ftoa (coord (X)).chars(), |
61 return (str ("(") + |
50 ftoa (coord (Y)).chars(), |
62 ftoa (coord (X)) + ", " + |
51 ftoa (coord (Z)).chars()); |
63 ftoa (coord (Y)) + ", " + |
|
64 ftoa (coord (Z)) + ")"); |
|
65 |
|
66 return QStringList ({ftoa (coord (X)), ftoa (coord (Y)), |
|
67 ftoa (coord (Z))}).join (" "); |
52 } |
68 } |
53 |
69 |
54 // ============================================================================= |
70 // ============================================================================= |
55 void vertex::transform (matrix matr, vertex pos) { |
71 void vertex::transform (matrix matr, vertex pos) { |
56 double x2 = (matr[0] * x ()) + (matr[1] * y ()) + (matr[2] * z ()) + pos[X]; |
72 double x2 = (matr[0] * x ()) + (matr[1] * y ()) + (matr[2] * z ()) + pos[X]; |
203 (val (2) * val (3) * val (7)) - |
219 (val (2) * val (3) * val (7)) - |
204 (val (2) * val (4) * val (6)) - |
220 (val (2) * val (4) * val (6)) - |
205 (val (1) * val (3) * val (8)) - |
221 (val (1) * val (3) * val (8)) - |
206 (val (0) * val (5) * val (7)); |
222 (val (0) * val (5) * val (7)); |
207 } |
223 } |
|
224 |
|
225 // ============================================================================= |
|
226 StringFormatArg::StringFormatArg (const str& v) { |
|
227 m_val = v; |
|
228 } |
|
229 |
|
230 StringFormatArg::StringFormatArg (const char& v) { |
|
231 m_val = v; |
|
232 } |
|
233 |
|
234 StringFormatArg::StringFormatArg (const uchar& v) { |
|
235 m_val = v; |
|
236 } |
|
237 |
|
238 StringFormatArg::StringFormatArg (const qchar& v) { |
|
239 m_val = v; |
|
240 } |
|
241 |
|
242 StringFormatArg::StringFormatArg (const float& v) { |
|
243 m_val = ftoa (v); |
|
244 } |
|
245 |
|
246 StringFormatArg::StringFormatArg (const double& v) { |
|
247 m_val = ftoa (v); |
|
248 } |
|
249 |
|
250 StringFormatArg::StringFormatArg (const vertex& v) { |
|
251 m_val = v.stringRep (false); |
|
252 } |
|
253 |
|
254 StringFormatArg::StringFormatArg (const matrix& v) { |
|
255 m_val = v.stringRep (); |
|
256 } |
|
257 |
|
258 StringFormatArg::StringFormatArg (const char* v) { |
|
259 m_val = v; |
|
260 } |
|
261 |
|
262 StringFormatArg::StringFormatArg (const strconfig& v) { |
|
263 m_val = v.value; |
|
264 } |
|
265 |
|
266 StringFormatArg::StringFormatArg (const intconfig& v) { |
|
267 m_val.number (v.value); |
|
268 } |
|
269 |
|
270 StringFormatArg::StringFormatArg (const floatconfig& v) { |
|
271 m_val.number (v.value); |
|
272 } |