Harvest.GetPartialSelectionCurve C# (CSharp) Method

GetPartialSelectionCurve() public static method

Gets the partial selection curve.
This method replicates the math in partial_selection_curve in tree_harvesting.rb.
public static GetPartialSelectionCurve ( float qRatio, float basalArea ) : float[]
qRatio float /// Q ratio. ///
basalArea float /// Basal area. ///
return float[]
	public static float[] GetPartialSelectionCurve(float qRatio, float basalArea)
	{
		int x = ResourceTile.treeSizeClassCount;
		float[] targetDistribution = new float[x];
		float[] normalizedTargetDiameterDistribution = new float[x];
		float[] products = new float[x];
		float sizeClassCenterOffset = 0.5f*ResourceTile.treeSizeClassInterval;
		for (int i=0; i<x; ++i) {
			float individualBasalArea = Mathf.Pow(
				(i+1)*ResourceTile.treeSizeClassInterval-sizeClassCenterOffset, 2f
			) * 0.005454154f; // NOTE: conversion of inches diameter to square feet area
			normalizedTargetDiameterDistribution[i] = Mathf.Pow(qRatio, x-i-1);
			products[i] = normalizedTargetDiameterDistribution[i] * individualBasalArea;
		}
		float normalizedTargetDiameterDistributionBasalAreaSum = 0f;
		for (int i=0; i<x; ++i) {
			normalizedTargetDiameterDistributionBasalAreaSum += products[i];
		}
		float sumOverBasalArea = normalizedTargetDiameterDistributionBasalAreaSum / ((basalArea==0)?1:basalArea);
		for (int i=0; i<x; ++i) {
			targetDistribution[i] = normalizedTargetDiameterDistribution[i] * sumOverBasalArea;
		}
		return targetDistribution;
	}