1
#include "TParameters.h"
3
//---------------------------------------------------------------------------
6
Based "The Creation and Rendering of Realistic Trees" article by Jason Weber and Joseph Penn
7
Based on a port of Delphi code from TReal project by Ton van den Heuvel
8
For further information go see:
9
http://members.chello.nl/~l.vandenheuvel2/TReal/
10
Copyright (c) 2002-2003, Ton van den Heuvel
11
Copyright (c) 2004, Nicolas Chauvin
13
==================================
14
Tree generation classes for Ogre3D
15
==================================
22
//===========================================================================
24
//===========================================================================
26
TParameters::TParameters(uchar u8Levels)
31
// The array length of the Stem parameters is equal to u8Levels. So, the total
32
// length of the stem parameter arrays is u8Levels - 1, because the last level
33
// of recursion is reserved for the leaves.
35
mafNDownAngle = new Real[u8Levels];
36
mafNDownAngleV = new Real[u8Levels];
37
mafNRotate = new Real[u8Levels];
38
mafNRotateV = new Real[u8Levels];
39
mafNLength = new Real[u8Levels];
40
mafNLengthV = new Real[u8Levels];
41
mafNTaper = new Real[u8Levels];
42
maiNBranches = new int[u8Levels];
43
mafNSegSplits = new Real[u8Levels];
44
mafNSplitAngle = new Real[u8Levels];
45
mafNSplitAngleV = new Real[u8Levels];
46
maiNCurveRes = new int[u8Levels];
47
mafNCurve = new Real[u8Levels];
48
mafNCurveBack = new Real[u8Levels];
49
mafNCurveV = new Real[u8Levels];
50
maiNVertices = new int[u8Levels];
55
//---------------------------------------------------------------------------
57
TParameters::~TParameters()
59
delete []mafNDownAngle;
60
delete []mafNDownAngleV;
66
delete []maiNBranches;
67
delete []mafNSegSplits;
68
delete []mafNSplitAngle;
69
delete []mafNSplitAngleV;
70
delete []maiNCurveRes;
72
delete []mafNCurveBack;
74
delete []maiNVertices;
77
//---------------------------------------------------------------------------
79
void TParameters::Set(TreeType eType)
103
SetAttractionUp(0.0);
110
SetnSegSplits(0, 0.0);
111
SetnSplitAngle(0, 0.0);
112
SetnSplitAngleV(0, 0.0);
117
SetnCurveBack(0, 0.0);
124
SetnDownAngle(1, 45.0);
125
SetnDownAngleV(1, 0.0);
128
SetnSegSplits(1, 0.0);
129
SetnSplitAngle(1, 0.0);
130
SetnSplitAngleV(1, 0.0);
134
SetnCurveBack(1, 0.0);
141
SetnDownAngle(2, 20.0);
142
SetnDownAngleV(2, 0.0);
143
SetnRotate(2, 120.0);
145
SetnSegSplits(2, 0.0);
146
SetnSplitAngle(2, 0.0);
147
SetnSplitAngleV(2, 0.0);
151
SetnCurveBack(2, 0.0);
171
SetLeafQuality(1.25);
172
SetAttractionUp(0.5);
179
SetnSegSplits(0, 0.0);
180
SetnSplitAngle(0, 0.0);
181
SetnSplitAngleV(0, 0.0);
186
SetnCurveBack(0, 0.0);
191
SetnLengthV(1, 0.05);
193
SetnDownAngle(1, 60.0);
194
SetnDownAngleV(1, -40.0);
195
SetnRotate(1, 140.0);
197
SetnSegSplits(1, 0.0);
198
SetnSplitAngle(1, 0.0);
199
SetnSplitAngleV(1, 0.0);
203
SetnCurveBack(1, 0.0);
210
SetnDownAngle(2, 30.0);
211
SetnDownAngleV(2, 10.0);
212
SetnRotate(2, 140.0);
214
SetnSegSplits(2, 0.0);
215
SetnSplitAngle(2, 0.0);
216
SetnSplitAngleV(2, 0.0);
219
SetnCurveV(2, 150.0);
220
SetnCurveBack(2, 0.0);
227
SetnDownAngle(3, 45.0);
228
SetnDownAngleV(3, 10.0);
229
SetnRotate(3, 140.0);
231
SetnSegSplits(3, 0.0);
232
SetnSplitAngle(3, 0.0);
233
SetnSplitAngleV(3, 0.0);
237
SetnCurveBack(3, 0.0);
258
SetAttractionUp(-2.0);
265
SetnSegSplits(0, 0.1);
266
SetnSplitAngle(0, 3.0);
267
SetnSplitAngleV(0, 0.0);
271
SetnCurveV(0, 120.0);
272
SetnCurveBack(0, 20.0);
279
SetnDownAngle(1, 20.0);
280
SetnDownAngleV(1, 10.0);
281
SetnRotate(1, -120.0);
282
SetnRotateV(1, 30.0);
283
SetnSegSplits(1, 0.2);
284
SetnSplitAngle(1, 30.0);
285
SetnSplitAngleV(1, 10.0);
289
SetnCurveBack(1, 80.0);
296
SetnDownAngle(2, 30.0);
297
SetnDownAngleV(2, 10.0);
298
SetnRotate(2, -120.0);
299
SetnRotateV(2, 30.0);
300
SetnSegSplits(2, 0.2);
301
SetnSplitAngle(2, 45.0);
302
SetnSplitAngleV(2, 20.0);
306
SetnCurveBack(2, 0.0);
308
SetnBranches(3, 100);
313
SetnDownAngle(3, 20.0);
314
SetnDownAngleV(3, 10.0);
315
SetnRotate(3, 140.0);
317
SetnSegSplits(3, 0.0);
318
SetnSplitAngle(3, 0.0);
319
SetnSplitAngleV(3, 0.0);
323
SetnCurveBack(3, 0.0);
326
case Lombardy_Poplar:
344
SetAttractionUp(0.5);
351
SetnSegSplits(0, 0.0);
352
SetnSplitAngle(0, 0.0);
353
SetnSplitAngleV(0, 0.0);
358
SetnCurveBack(0, 0.0);
365
SetnDownAngle(1, 30.0);
366
SetnDownAngleV(1, 0.0);
369
SetnSegSplits(1, 0.0);
370
SetnSplitAngle(1, 0.0);
371
SetnSplitAngleV(1, 0.0);
375
SetnCurveBack(1, 0.0);
382
SetnDownAngle(2, 30.0);
383
SetnDownAngleV(2, 10.0);
386
SetnSegSplits(2, 0.0);
387
SetnSplitAngle(2, 0.0);
388
SetnSplitAngleV(2, 0.0);
392
SetnCurveBack(2, 0.0);
413
SetAttractionUp(0.0);
420
SetnSegSplits(0, 0.0);
421
SetnSplitAngle(0, 0.0);
422
SetnSplitAngleV(0, 0.0);
427
SetnCurveBack(0, -5.0);
432
SetnLengthV(1, 0.05);
434
SetnDownAngle(1, 70.0);
435
SetnDownAngleV(1, -80.0);
436
SetnRotate(1, 120.0);
437
SetnRotateV(1, 60.0);
438
SetnSegSplits(1, 0.0);
439
SetnSplitAngle(1, 0.0);
440
SetnSplitAngleV(1, 0.0);
444
SetnCurveBack(1, 0.0);
462
SetLeafScale(0.15 /*0.03*/);
465
SetAttractionUp(-2.0);
472
SetnSegSplits(0, 0.0);
473
SetnSplitAngle(0, 0.0);
474
SetnSplitAngleV(0, 0.0);
479
SetnCurveBack(0, 0.0);
484
SetnLengthV(1, 0.15);
486
SetnDownAngle(1, 60.0);
487
SetnDownAngleV(1, -50.0);
489
SetnRotateV(1, 30.0);
490
SetnSegSplits(1, 0.0);
491
SetnSplitAngle(1, 0.0);
492
SetnSplitAngleV(1, 0.0);
495
SetnCurveV(1, 120.0);
496
SetnCurveBack(1, /*-100.0*/ -20.0);
503
SetnDownAngle(2, 70.0);
504
SetnDownAngleV(2, 30.0);
506
SetnRotateV(2, 30.0);
507
SetnSegSplits(2, 0.15);
508
SetnSplitAngle(2, 40.0);
509
SetnSplitAngleV(2, 10.0);
538
SetnSplitAngle(0, 0);
539
SetnSplitAngleV(0, 0);
547
SetnDownAngle(1, 60);
548
SetnDownAngleV(1, -50);
555
SetnSplitAngle(1, 0);
556
SetnSplitAngleV(1, 0);
564
SetnDownAngle(2, 45);
565
SetnDownAngleV(2, 10);
572
SetnSplitAngle(2, 0);
573
SetnSplitAngleV(2, 0);
581
// SetLeafShape(0); // not implemented yet
584
SetAttractionUp(0.5);
586
// SetPruneWidth(0.5); // not implemented yet
587
// SetPruneWidthPeak(0.5); // not implemented yet
588
// SetPrunePowerLow(0.5); // not implemented yet
589
// SetPrunePowerHigh(0.5); // not implemented yet
608
SetLeafScale(0.03 /*0.03*/);
611
SetAttractionUp(0.5);
613
SetPrunePowerLow(0.5); // not implemented yet
614
SetPrunePowerHigh(0.5); // not implemented yet
615
SetPruneWidth(0.5); // not used yet !!!!
616
SetPruneWidthPeak(0.5); // not used yet !!!!
622
SetnDownAngleV(0, 0);
631
SetnSplitAngle(0, 0);
632
SetnSplitAngleV(0, 0);
638
SetnDownAngle(1, 70);
639
SetnDownAngleV(1, -20);
648
SetnSplitAngle(1, 0);
649
SetnSplitAngleV(1, 0);
655
SetnDownAngle(2, 70);
656
SetnDownAngleV(2, 20);
664
SetnSegSplits(2, 0.1);
665
SetnSplitAngle(2, 70);
666
SetnSplitAngleV(2, 20);
672
SetnDownAngle(3, 45);
673
SetnDownAngleV(3, 40);
680
//---------------------------------------------------------------------------
682
TParameters::TreeType TParameters::GetTreeType(void)
686
//---------------------------------------------------------------------------
688
String TParameters::GetTreeTypeString(void)
694
sTreeName = "Simple";
697
sTreeName = "Quaking Aspen";
700
sTreeName = "Black Tupelo";
703
sTreeName = "Weeping Willow";
705
case Lombardy_Poplar:
706
sTreeName = "Lombardy Poplar";
712
sTreeName = "European Larch";
721
//---------------------------------------------------------------------------
723
uchar TParameters::GetShape(void)
728
//---------------------------------------------------------------------------
730
Real TParameters::GetBaseSize(void)
735
//---------------------------------------------------------------------------
737
uchar TParameters::GetBaseSplits(void)
739
return mu8BaseSplits;
742
//---------------------------------------------------------------------------
744
Real TParameters::GetScale(void)
749
//---------------------------------------------------------------------------
751
Real TParameters::GetScaleV(void)
756
//---------------------------------------------------------------------------
758
Real TParameters::GetZScale(void)
763
//---------------------------------------------------------------------------
765
Real TParameters::GetZScaleV(void)
770
//---------------------------------------------------------------------------
772
Real TParameters::GetRatio(void)
777
//---------------------------------------------------------------------------
779
Real TParameters::GetRatioPower(void)
784
//---------------------------------------------------------------------------
786
uchar TParameters::GetLobes(void)
791
//---------------------------------------------------------------------------
793
Real TParameters::GetLobeDepth(void)
798
//---------------------------------------------------------------------------
800
Real TParameters::GetFlare(void)
805
//---------------------------------------------------------------------------
807
int TParameters::GetLeaves(void)
812
//---------------------------------------------------------------------------
814
TLeafShape TParameters::GetLeafShape(void)
819
//---------------------------------------------------------------------------
821
Real TParameters::GetLeafScale(void)
826
//---------------------------------------------------------------------------
828
Real TParameters::GetLeafScaleX(void)
833
//---------------------------------------------------------------------------
835
Real TParameters::GetLeafQuality(void)
837
return mfLeafQuality;
840
//---------------------------------------------------------------------------
842
uint TParameters::GetLeafColor(void)
844
return mu16LeafColor;
847
//---------------------------------------------------------------------------
849
bool TParameters::GetLeafColorVariation(void)
851
return mbLeafColorVariation;
854
//---------------------------------------------------------------------------
856
uchar TParameters::GetLeafAlpha(void)
860
//---------------------------------------------------------------------------
862
Real TParameters::GetAttractionUp(void)
864
return mfAttractionUp;
867
//---------------------------------------------------------------------------
869
Real TParameters::GetPruneRatio(void)
874
//---------------------------------------------------------------------------
876
Real TParameters::GetPruneWidth(void)
881
//---------------------------------------------------------------------------
883
Real TParameters::GetPruneWidthPeak(void)
885
return mfPruneWidthPeak;
888
//---------------------------------------------------------------------------
890
Real TParameters::GetPrunePowerLow(void)
892
return mfPrunePowerLow;
895
//---------------------------------------------------------------------------
897
Real TParameters::GetPrunePowerHigh(void)
899
return mfPrunePowerHigh;
902
//---------------------------------------------------------------------------
904
Real TParameters::GetScale0(void)
909
//---------------------------------------------------------------------------
911
Real TParameters::GetScaleV0(void)
916
//---------------------------------------------------------------------------
919
Real TParameters::GetnDownAngle(uchar u8Index)
921
return mafNDownAngle[u8Index];
924
//---------------------------------------------------------------------------
926
Real TParameters::GetnDownAngleV(uchar u8Index)
928
return mafNDownAngleV[u8Index];
931
//---------------------------------------------------------------------------
933
Real TParameters::GetnRotate(uchar u8Index)
935
return mafNRotate[u8Index];
938
//---------------------------------------------------------------------------
940
Real TParameters::GetnRotateV(uchar u8Index)
942
return mafNRotateV[u8Index];
945
//---------------------------------------------------------------------------
947
Real TParameters::GetnLength(uchar u8Index)
949
return mafNLength[u8Index];
952
//---------------------------------------------------------------------------
954
Real TParameters::GetnLengthV(uchar u8Index)
956
return mafNLengthV[u8Index];
959
//---------------------------------------------------------------------------
961
Real TParameters::GetnTaper(uchar u8Index)
963
return mafNTaper[u8Index];
966
//---------------------------------------------------------------------------
968
int TParameters::GetnBranches(uchar u8Index)
970
return maiNBranches[u8Index];
973
//---------------------------------------------------------------------------
975
Real TParameters::GetnSegSplits(uchar u8Index)
977
return mafNSegSplits[u8Index];
980
//---------------------------------------------------------------------------
982
Real TParameters::GetnSplitAngle(uchar u8Index)
984
return mafNSplitAngle[u8Index];
987
//---------------------------------------------------------------------------
989
Real TParameters::GetnSplitAngleV(uchar u8Index)
991
return mafNSplitAngleV[u8Index];
994
//---------------------------------------------------------------------------
996
int TParameters::GetnCurveRes(uchar u8Index)
998
return maiNCurveRes[u8Index];
1001
//---------------------------------------------------------------------------
1003
Real TParameters::GetnCurve(uchar u8Index)
1005
return mafNCurve[u8Index];
1008
//---------------------------------------------------------------------------
1010
Real TParameters::GetnCurveV(uchar u8Index)
1012
return mafNCurveV[u8Index];
1015
//---------------------------------------------------------------------------
1017
Real TParameters::GetnCurveBack(uchar u8Index)
1019
return mafNCurveBack[u8Index];
1022
//---------------------------------------------------------------------------
1024
int TParameters::GetnVertices(uchar u8Index)
1026
return maiNVertices[u8Index];
1029
//---------------------------------------------------------------------------
1031
void TParameters::SetLevels(uchar u8Value)
1033
if (u8Value == mu8Levels)
1038
Real* afTempNDownAngle = mafNDownAngle;
1039
Real* afTempNDownAngleV = mafNDownAngleV;
1040
Real* afTempNRotate = mafNRotate;
1041
Real* afTempNRotateV = mafNRotateV;
1042
Real* afTempNLength = mafNLength;
1043
Real* afTempNLengthV = mafNLengthV;
1044
Real* afTempNTaper = mafNTaper;
1045
int* aiTempNBranches = maiNBranches;
1046
Real* afTempNSegSplits = mafNSegSplits;
1047
Real* afTempNSplitAngle = mafNSplitAngle;
1048
Real* afTempNSplitAngleV = mafNSplitAngleV;
1049
int* aiTempNCurveRes = maiNCurveRes;
1050
Real* afTempNCurve = mafNCurve;
1051
Real* afTempNCurveBack = mafNCurveBack;
1052
Real* afTempNCurveV = mafNCurveV;
1053
int* aiTempNVertices = maiNVertices;
1055
mafNDownAngle = new Real[u8Value];
1056
mafNDownAngleV = new Real[u8Value];
1057
mafNRotate = new Real[u8Value];
1058
mafNRotateV = new Real[u8Value];
1059
mafNLength = new Real[u8Value];
1060
mafNLengthV = new Real[u8Value];
1061
mafNTaper = new Real[u8Value];
1062
maiNBranches = new int[u8Value];
1063
mafNSegSplits = new Real[u8Value];
1064
mafNSplitAngle = new Real[u8Value];
1065
mafNSplitAngleV = new Real[u8Value];
1066
maiNCurveRes = new int[u8Value];
1067
mafNCurve = new Real[u8Value];
1068
mafNCurveBack = new Real[u8Value];
1069
mafNCurveV = new Real[u8Value];
1070
maiNVertices = new int[u8Value];
1072
if (u8Value > mu8Levels)
1074
for (i=0; i<mu8Levels; i++)
1076
mafNDownAngle[i] = afTempNDownAngle[i];
1077
mafNDownAngleV[i] = afTempNDownAngleV[i];
1078
mafNRotate[i] = afTempNRotate[i];
1079
mafNRotateV[i] = afTempNRotateV[i];
1080
mafNLength[i] = afTempNLength[i];
1081
mafNLengthV[i] = afTempNLengthV[i];
1082
mafNTaper[i] = afTempNTaper[i];
1083
maiNBranches[i] = aiTempNBranches[i];
1084
mafNSegSplits[i] = afTempNSegSplits[i];
1085
mafNSplitAngle[i] = afTempNSplitAngle[i];
1086
mafNSplitAngleV[i] = afTempNSplitAngleV[i];
1087
maiNCurveRes[i] = aiTempNCurveRes[i];
1088
mafNCurve[i] = afTempNCurve[i];
1089
mafNCurveBack[i] = afTempNCurveBack[i];
1090
mafNCurveV[i] = afTempNCurveV[i];
1091
maiNVertices[i] = aiTempNVertices[i];
1093
for (i=mu8Levels; i<u8Value; i++)
1095
mafNDownAngle[i] = 0.0;
1096
mafNDownAngleV[i] = 0.0;
1097
mafNRotate[i] = 0.0;
1098
mafNRotateV[i] = 0.0;
1099
mafNLength[i] = 0.0;
1100
mafNLengthV[i] = 0.0;
1102
maiNBranches[i] = 0;
1103
mafNSegSplits[i] = 0.0;
1104
mafNSplitAngle[i] = 0.0;
1105
mafNSplitAngleV[i] = 0.0;
1106
maiNCurveRes[i] = 0;
1108
mafNCurveBack[i] = 0.0;
1109
mafNCurveV[i] = 0.0;
1110
maiNVertices[i] = 0;
1115
for (i=0; i<u8Value; i++)
1117
mafNDownAngle[i] = afTempNDownAngle[i];
1118
mafNDownAngleV[i] = afTempNDownAngleV[i];
1119
mafNRotate[i] = afTempNRotate[i];
1120
mafNRotateV[i] = afTempNRotateV[i];
1121
mafNLength[i] = afTempNLength[i];
1122
mafNLengthV[i] = afTempNLengthV[i];
1123
mafNTaper[i] = afTempNTaper[i];
1124
maiNBranches[i] = aiTempNBranches[i];
1125
mafNSegSplits[i] = afTempNSegSplits[i];
1126
mafNSplitAngle[i] = afTempNSplitAngle[i];
1127
mafNSplitAngleV[i] = afTempNSplitAngleV[i];
1128
maiNCurveRes[i] = aiTempNCurveRes[i];
1129
mafNCurve[i] = afTempNCurve[i];
1130
mafNCurveBack[i] = afTempNCurveBack[i];
1131
mafNCurveV[i] = afTempNCurveV[i];
1132
maiNVertices[i] = aiTempNVertices[i];
1136
mu8Levels = u8Value;
1138
delete[] afTempNDownAngle;
1139
delete[] afTempNDownAngleV;
1140
delete[] afTempNRotate;
1141
delete[] afTempNRotateV;
1142
delete[] afTempNLength;
1143
delete[] afTempNLengthV;
1144
delete[] afTempNTaper;
1145
delete[] aiTempNBranches;
1146
delete[] afTempNSegSplits;
1147
delete[] afTempNSplitAngle;
1148
delete[] afTempNSplitAngleV;
1149
delete[] aiTempNCurveRes;
1150
delete[] afTempNCurve;
1151
delete[] afTempNCurveBack;
1152
delete[] afTempNCurveV;
1153
delete[] aiTempNVertices;
1156
//---------------------------------------------------------------------------
1158
void TParameters::SetShape(uchar u8Value)
1163
//---------------------------------------------------------------------------
1165
void TParameters::SetBaseSize(Real fValue)
1167
mfBaseSize = fValue;
1170
//---------------------------------------------------------------------------
1172
void TParameters::SetBaseSplits(uchar u8Value)
1174
mu8BaseSplits = u8Value;
1177
//---------------------------------------------------------------------------
1179
void TParameters::SetScale(Real fValue)
1184
//---------------------------------------------------------------------------
1186
void TParameters::SetScaleV(Real fValue)
1191
//---------------------------------------------------------------------------
1193
void TParameters::SetZScale(Real fValue)
1198
//---------------------------------------------------------------------------
1200
void TParameters::SetZScaleV(Real fValue)
1205
//---------------------------------------------------------------------------
1207
void TParameters::SetRatio(Real fValue)
1212
//---------------------------------------------------------------------------
1214
void TParameters::SetRatioPower(Real fValue)
1216
mfRatioPower = fValue;
1219
//---------------------------------------------------------------------------
1221
void TParameters::SetLobes(uchar u8Value)
1226
//---------------------------------------------------------------------------
1228
void TParameters::SetLobeDepth(Real fValue)
1230
mfLobeDepth = fValue;
1233
//---------------------------------------------------------------------------
1235
void TParameters::SetFlare(Real fValue)
1240
//---------------------------------------------------------------------------
1242
void TParameters::SetLeaves(int iValue)
1247
//---------------------------------------------------------------------------
1249
void TParameters::SetLeafShape(TLeafShape u8Value)
1251
mu8LeafShape = u8Value;
1254
//---------------------------------------------------------------------------
1256
void TParameters::SetLeafScale(Real fValue)
1258
mfLeafScale = fValue;
1261
//---------------------------------------------------------------------------
1263
void TParameters::SetLeafScaleX(Real fValue)
1265
mfLeafScaleX = fValue;
1268
//---------------------------------------------------------------------------
1270
void TParameters::SetLeafQuality(Real fValue)
1272
mfLeafQuality = fValue;
1275
//---------------------------------------------------------------------------
1277
void TParameters::SetLeafColor(uint u16Value)
1279
mu16LeafColor = u16Value;
1282
//---------------------------------------------------------------------------
1284
void TParameters::SetLeafColorVariation(bool bValue)
1286
mbLeafColorVariation = bValue;
1289
//---------------------------------------------------------------------------
1291
void TParameters::SetLeafAlpha(uchar u8Value)
1293
mu8LeafAlpha = u8Value;
1296
//---------------------------------------------------------------------------
1298
void TParameters::SetAttractionUp(Real fValue)
1300
mfAttractionUp = fValue;
1303
//---------------------------------------------------------------------------
1305
void TParameters::SetPruneRatio(Real fValue)
1307
mfPruneRatio = fValue;
1310
//---------------------------------------------------------------------------
1312
void TParameters::SetPruneWidth(Real fValue)
1314
mfPruneWidth = fValue;
1317
//---------------------------------------------------------------------------
1319
void TParameters::SetPruneWidthPeak(Real fValue)
1321
mfPruneWidthPeak = fValue;
1324
//---------------------------------------------------------------------------
1326
void TParameters::SetPrunePowerLow(Real fValue)
1328
mfPrunePowerLow = fValue;
1331
//---------------------------------------------------------------------------
1333
void TParameters::SetPrunePowerHigh(Real fValue)
1335
mfPrunePowerHigh = fValue;
1338
//---------------------------------------------------------------------------
1341
void TParameters::SetScale0(Real fValue)
1346
//---------------------------------------------------------------------------
1348
void TParameters::SetScaleV0(Real fValue)
1353
//---------------------------------------------------------------------------
1356
void TParameters::SetnDownAngle(uchar u8Index, Real fValue)
1358
mafNDownAngle[u8Index] = fValue;
1361
//---------------------------------------------------------------------------
1363
void TParameters::SetnDownAngleV(uchar u8Index, Real fValue)
1365
mafNDownAngleV[u8Index] = fValue;
1368
//---------------------------------------------------------------------------
1370
void TParameters::SetnRotate(uchar u8Index, Real fValue)
1372
mafNRotate[u8Index] = fValue;
1375
//---------------------------------------------------------------------------
1377
void TParameters::SetnRotateV(uchar u8Index, Real fValue)
1379
mafNRotateV[u8Index] = fValue;
1382
//---------------------------------------------------------------------------
1384
void TParameters::SetnLength(uchar u8Index, Real fValue)
1386
mafNLength[u8Index] = fValue;
1389
//---------------------------------------------------------------------------
1391
void TParameters::SetnLengthV(uchar u8Index, Real fValue)
1393
mafNLengthV[u8Index] = fValue;
1396
//---------------------------------------------------------------------------
1398
void TParameters::SetnTaper(uchar u8Index, Real fValue)
1400
mafNTaper[u8Index] = fValue;
1403
//---------------------------------------------------------------------------
1405
void TParameters::SetnBranches(uchar u8Index, int iValue)
1407
maiNBranches[u8Index] = iValue;
1410
//---------------------------------------------------------------------------
1412
void TParameters::SetnSegSplits(uchar u8Index, Real fValue)
1414
mafNSegSplits[u8Index] = fValue;
1417
//---------------------------------------------------------------------------
1419
void TParameters::SetnSplitAngle(uchar u8Index, Real fValue)
1421
mafNSplitAngle[u8Index] = fValue;
1424
//---------------------------------------------------------------------------
1426
void TParameters::SetnSplitAngleV(uchar u8Index, Real fValue)
1428
mafNSplitAngleV[u8Index] = fValue;
1431
//---------------------------------------------------------------------------
1433
void TParameters::SetnCurveRes(uchar u8Index, int iValue)
1435
maiNCurveRes[u8Index] = iValue;
1438
//---------------------------------------------------------------------------
1440
void TParameters::SetnCurve(uchar u8Index, Real fValue)
1442
mafNCurve[u8Index] = fValue;
1445
//---------------------------------------------------------------------------
1447
void TParameters::SetnCurveV(uchar u8Index, Real fValue)
1449
mafNCurveV[u8Index] = fValue;
1452
//---------------------------------------------------------------------------
1454
void TParameters::SetnCurveBack(uchar u8Index, Real fValue)
1456
mafNCurveBack[u8Index] = fValue;
1459
//---------------------------------------------------------------------------
1461
void TParameters::SetnVertices(uchar u8Index, int iValue)
1463
maiNVertices[u8Index] = iValue;
1466
//---------------------------------------------------------------------------
1468
TParameters* TParameters::Clone(void)
1471
TParameters *pClonedParameters = new TParameters(mu8Levels);
1473
pClonedParameters->mTreeType = mTreeType;
1474
pClonedParameters->mu8Shape = mu8Shape;
1475
pClonedParameters->mfBaseSize = mfBaseSize;
1476
pClonedParameters->mu8BaseSplits = mu8BaseSplits;
1477
pClonedParameters->mfScale = mfScale;
1478
pClonedParameters->mfScaleV = mfScaleV;
1479
pClonedParameters->mfZScale = mfZScale;
1480
pClonedParameters->mfZScaleV = mfZScaleV;
1481
pClonedParameters->mfRatio = mfRatio;
1482
pClonedParameters->mfRatioPower = mfRatioPower;
1483
pClonedParameters->mu8Lobes = mu8Lobes;
1484
pClonedParameters->mfLobeDepth = mfLobeDepth;
1485
pClonedParameters->mfFlare = mfFlare;
1486
pClonedParameters->miLeaves = miLeaves;
1487
pClonedParameters->mu8LeafShape = mu8LeafShape;
1488
pClonedParameters->mfLeafScale = mfLeafScale;
1489
pClonedParameters->mfLeafScaleX = mfLeafScaleX;
1490
pClonedParameters->mfLeafQuality = mfLeafQuality;
1491
pClonedParameters->mu16LeafColor = mu16LeafColor;
1492
pClonedParameters->mbLeafColorVariation = mbLeafColorVariation;
1493
pClonedParameters->mu8LeafAlpha = mu8LeafAlpha;
1494
pClonedParameters->mfAttractionUp = mfAttractionUp;
1495
pClonedParameters->mfPruneRatio = mfPruneRatio;
1496
pClonedParameters->mfPruneWidth = mfPruneWidth;
1497
pClonedParameters->mfPruneWidthPeak = mfPruneWidthPeak;
1498
pClonedParameters->mfPrunePowerLow = mfPrunePowerLow;
1499
pClonedParameters->mfPrunePowerHigh = mfPrunePowerHigh;
1500
pClonedParameters->mfScale0 = mfScale0;
1501
pClonedParameters->mfScaleV0 = mfScaleV0;
1503
for (i=0; i<mu8Levels; i++)
1505
pClonedParameters->mafNDownAngle[i] = mafNDownAngle[i];
1506
pClonedParameters->mafNDownAngleV[i] = mafNDownAngleV[i];
1507
pClonedParameters->mafNRotate[i] = mafNRotate[i];
1508
pClonedParameters->mafNRotateV[i] = mafNRotateV[i];
1509
pClonedParameters->mafNLength[i] = mafNLength[i];
1510
pClonedParameters->mafNLengthV[i] = mafNLengthV[i];
1511
pClonedParameters->mafNTaper[i] = mafNTaper[i];
1512
pClonedParameters->maiNBranches[i] = maiNBranches[i];
1513
pClonedParameters->mafNSegSplits[i] = mafNSegSplits[i];
1514
pClonedParameters->mafNSplitAngle[i] = mafNSplitAngle[i];
1515
pClonedParameters->mafNSplitAngleV[i] = mafNSplitAngleV[i];
1516
pClonedParameters->maiNCurveRes[i] = maiNCurveRes[i];
1517
pClonedParameters->mafNCurve[i] = mafNCurve[i];
1518
pClonedParameters->mafNCurveBack[i] = mafNCurveBack[i];
1519
pClonedParameters->mafNCurveV[i] = mafNCurveV[i];
1520
pClonedParameters->maiNVertices[i] = maiNVertices[i];
1523
return pClonedParameters;
1526
//---------------------------------------------------------------------------