ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/XmlTools2/trunk/multidimvar.cpp
Revision: 906
Committed: Sat Feb 1 14:27:58 2014 UTC (11 years, 8 months ago) by s10k
Content type: text/x-c++src
File size: 2101 byte(s)
Log Message:

File Contents

# Content
1 #include "multidimvar.h"
2
3 // Receives a string with a value with multiple dimensions separated by space
4 // Example of input "5 4 6". Variable with dim1=5, dim2=4, dim3=6.
5 MultiDimVar::MultiDimVar(QString multiDimValue)
6 {
7 this->multiDimValue=Util::qListDoubleFromSpacedString(multiDimValue);
8 }
9
10 // Inicializes a new MultiDimVar with the dimensions specified with all zero values
11 MultiDimVar::MultiDimVar(int dim){
12
13 for(int i=0; i<dim; i++){
14 this->multiDimValue.append(0);
15 }
16
17 }
18
19 // Sums 2 MultiDimVar values
20 MultiDimVar MultiDimVar::sum(const MultiDimVar &val1, const MultiDimVar &val2){
21 MultiDimVar result(val1.multiDimValue.size());
22
23 if(val1.multiDimValue.size()!=val2.multiDimValue.size()){
24 UtilXmlTools::displayErrorMessage("MultiDimVar sum","Error summing MultiDimVar, variables don't have the same dimensions.");
25 }
26
27 for(int i=0; i<result.multiDimValue.size(); i++){
28 result.multiDimValue[i]=val1.multiDimValue[i]+val2.multiDimValue[i];
29 }
30
31 return result;
32 }
33
34 // Subtract 2 MultiDimVar values
35 MultiDimVar MultiDimVar::sub(const MultiDimVar &val1, const MultiDimVar &val2){
36 MultiDimVar result(val1.multiDimValue.size());
37
38 if(val1.multiDimValue.size()!=val2.multiDimValue.size()){
39 UtilXmlTools::displayErrorMessage("MultiDimVar subtraction","Error subtracting MultiDimVar, variables don't have the same dimensions.");
40 }
41
42 for(int i=0; i<result.multiDimValue.size(); i++){
43 result.multiDimValue[i]=val1.multiDimValue[i]-val2.multiDimValue[i];
44 }
45
46 return result;
47 }
48
49 // Returns a string representation of this multidimensional value as string.
50 // Each dimension is separated by a space.
51 QString MultiDimVar::toString(){
52
53 QString result;
54
55 for(int i=0; i<this->multiDimValue.size()-1; i++){
56 result += QString::number(this->multiDimValue[i],'G',9) + " "; // G is the option used by onisplit
57 }
58
59 result += QString::number(this->multiDimValue.size()-1,'G',9); // last one does not have a space at the end
60
61 return result;
62
63 }