// cutDownType values: ( PercentOfTrees, Volume, Area ) // trimType values: ( ByTallest, BySmallest, Systematic ) // value: (% de corta) public override void ApplyCutDown(Parcela oldPlot, Parcela newPlot, CutDownType cutDownType, TrimType trimType, float value) { newPlot.VAR_10 = value; newPlot.H_DOMINANTE = oldPlot.H_DOMINANTE.Value; double parA1, parA2, parB0, parB1, parB2, parB3, parC0, parC1, parC2, parC3, parD1, parD2, parA, parB, SEC_NORMAL, tpuBA; switch (trimType) { case TrimType.ByTallest: break; case TrimType.BySmallest: if (cutDownType == CutDownType.Area) { parC0 = 1.35; parC1 = 0.979; parC2 = 0.859; tpuBA = value / 100; newPlot.A_BASIMETRICA = oldPlot.A_BASIMETRICA.Value - tpuBA * oldPlot.A_BASIMETRICA.Value; newPlot.N_PIESHA = newPlot.A_BASIMETRICA * 40000 / Math.Pow(oldPlot.D_CUADRATICO.Value, 2) * Math.PI; newPlot.D_CUADRATICO = oldPlot.D_CUADRATICO.Value; newPlot.VCC = Math.Exp((double)1.69 + 0.0604 * newPlot.SI.Value - 48.8 / newPlot.EDAD.Value + 0.982 * Math.Log(newPlot.A_BASIMETRICA.Value)); } break; case TrimType.Systematic: if (cutDownType == CutDownType.Area) { parC0 = 1.35; parC1 = 0.979; parC2 = 0.859; tpuBA = value / 100; newPlot.A_BASIMETRICA = oldPlot.A_BASIMETRICA.Value - tpuBA * oldPlot.A_BASIMETRICA.Value; newPlot.N_PIESHA = newPlot.A_BASIMETRICA * 40000 / Math.Pow(oldPlot.D_CUADRATICO.Value, 2) * Math.PI; newPlot.D_CUADRATICO = oldPlot.D_CUADRATICO.Value; newPlot.VCC = Math.Exp((double)1.69 + 0.0604 * newPlot.SI.Value - 48.8 / newPlot.EDAD.Value + 0.982 * Math.Log(newPlot.A_BASIMETRICA.Value)); } break; } }
// cutDownType values: ( PercentOfTrees, Volume, Area ) // trimType values: ( ByTallest, BySmallest, Systematic ) // value: (% de corta) public override void ApplyCutDown(Parcela oldPlot, Parcela newPlot, CutDownType cutDownType, TrimType trimType, float value) { newPlot.VAR_9 = value; // % de corta... double parA0, parB0, parB1, parB2, parB3; parA0 = 4.9272; parB0 = 1.3324; parB1 = 0.0559; parB2 = -22.7815; parB3 = 1.0394; newPlot.SI = oldPlot.SI.Value; double parC0, parC1, parC2, SEC_NORMAL; switch (cutDownType) { case CutDownType.PercentOfTrees: parC0 = 0.531019; parC1 = 0.989792; parC2 = 0.517850; newPlot.N_PIESHA = (1 - value / 100) * oldPlot.N_PIESHA.Value; newPlot.D_CUADRATICO = parC0 + oldPlot.D_CUADRATICO.Value * (parC1 + parC2 * Math.Pow(value / 100, 2)); SEC_NORMAL = Math.PI * Math.Pow(newPlot.D_CUADRATICO.Value / 2, 2); newPlot.A_BASIMETRICA = SEC_NORMAL * newPlot.N_PIESHA.Value / 10000; newPlot.VCC = Math.Exp((double)parB0 + parB1 * newPlot.SI.Value + parB2 / newPlot.EDAD.Value + parB3 * Math.Log(newPlot.A_BASIMETRICA.Value)); break; case CutDownType.Volume: break; case CutDownType.Area: parC0 = 0.144915; parC1 = 0.969819; parC2 = 0.678010; newPlot.A_BASIMETRICA = (1 - value / 100) * oldPlot.A_BASIMETRICA.Value; newPlot.D_CUADRATICO = Math.Pow(parC0 + parC1 * Math.Pow(oldPlot.D_CUADRATICO.Value, 0.5) + parC2 * (value / 100), 2); SEC_NORMAL = Math.PI * Math.Pow(newPlot.D_CUADRATICO.Value / 200, 2); newPlot.N_PIESHA = newPlot.A_BASIMETRICA.Value / SEC_NORMAL; newPlot.VCC = Math.Exp((double)parB0 + parB1 * newPlot.SI.Value + parB2 / newPlot.EDAD.Value + parB3 * Math.Log(newPlot.A_BASIMETRICA.Value)); break; } }
// cutDownType values: ( PercentOfTrees, Volume, Area ) // trimType values: ( ByTallest, BySmallest, Systematic ) // value: (% de corta) public override void ApplyCutDown(Parcela oldPlot, Parcela newPlot, CutDownType cutDownType, TrimType trimType, float value) { newPlot.VAR_9 = value; //Indice de calidad double IC = oldPlot.SI.Value / 10; // H_DOMINANTE: double parA17, parB17, parC17, parA29, parB29, parC29; parA17 = 1.9962; parB17 = 0.2642; parC17 = 0.46; parA29 = 3.1827; parB29 = 0.3431; parC29 = 0.3536; double H0_17 = 10 * parA17 * Math.Pow(1 - Math.Exp((double)-1 * parB17 * newPlot.EDAD.Value / 10), 1 / parC17); double H0_29 = 10 * parA29 * Math.Pow(1 - Math.Exp((double)-1 * parB29 * newPlot.EDAD.Value / 10), 1 / parC29); newPlot.VAR_2 = H0_17; newPlot.VAR_3 = H0_29; newPlot.H_DOMINANTE = H0_17 + (H0_29 - H0_17) * (IC - 1.7) / 1.2; // parametros de volumen y área basimétrica double parA0, parB0, parB1, parB2, parB3; parA0 = 5.103222; parB0 = 1.42706; parB1 = 0.388317; parB2 = -30.691629; parB3 = 1.034549; // parametros de corta double parC0, parC1, parC2, SEC_NORMAL, tpuN, tpuBA; switch (cutDownType) { case CutDownType.PercentOfTrees: parC0 = 0.531019; parC1 = 0.989792; parC2 = 0.517850; tpuN = value / 100; newPlot.N_PIESHA = (1 - tpuN) * oldPlot.N_PIESHA.Value; newPlot.D_CUADRATICO = parC0 + parC1 * oldPlot.D_CUADRATICO + parC2 * oldPlot.D_CUADRATICO.Value * Math.Pow(tpuN, 2); SEC_NORMAL = Math.PI * Math.Pow(newPlot.D_CUADRATICO.Value / 2, 2); newPlot.A_BASIMETRICA = SEC_NORMAL * newPlot.N_PIESHA.Value / 10000; newPlot.VCC = Math.Exp((double)parB0 + parB1 * IC + parB2 / newPlot.EDAD.Value + parB3 * Math.Log(newPlot.A_BASIMETRICA.Value)); break; case CutDownType.Volume: break; case CutDownType.Area: parC0 = 0.144915; parC1 = 0.969819; parC2 = 0.678010; tpuBA = value / 100; newPlot.A_BASIMETRICA = (1 - tpuBA) * oldPlot.A_BASIMETRICA.Value; newPlot.D_CUADRATICO = Math.Pow(parC0 + parC1 * Math.Pow(oldPlot.D_CUADRATICO.Value, 0.5) + parC2 * (tpuBA), 2); SEC_NORMAL = Math.PI * Math.Pow(newPlot.D_CUADRATICO.Value / 200, 2); newPlot.N_PIESHA = newPlot.A_BASIMETRICA.Value / SEC_NORMAL; newPlot.VCC = Math.Exp((double)parB0 + parB1 * IC + parB2 / newPlot.EDAD.Value + parB3 * Math.Log(newPlot.A_BASIMETRICA.Value)); break; } }