Exemplo n.º 1
0
        public float GetDefinedFactor()
        {
            List <CTreePoint> topTreePoints = TreePoints;

            if (topTreePoints.Count == 0)
            {
                return(0);
            }
            if (TreePoints.Count < CTreeManager.MIN_BRANCH_POINT_COUNT)
            {
                int allTreePointsCount = tree.GetAllPoints().Count;
                if (allTreePointsCount < CTreeManager.MIN_TREE_POINT_COUNT)
                {
                    return(0);
                }
            }

            float height           = tree.GetTreeHeight();
            float distLowestToPeak = Vector3.Distance(TreePoints.Last().Center, tree.peak.Center);

            float lowestPointRatio = (distLowestToPeak + GetMinDefinedHeightOffset(height)) / height;

            int       treePointCount    = TreePoints.Count;
            const int minPointsPerMeter = 3;
            //float pointCountRatio = treePointCount / (height * minPointsPerMeter);
            float pointCountRatio = treePointCount / (distLowestToPeak * minPointsPerMeter);

            pointCountRatio = Math.Min(pointCountRatio, 1);

            float factor = (lowestPointRatio + pointCountRatio) / 2;

            return(factor);
        }
Exemplo n.º 2
0
 private Vector3 GetLastPoint()
 {
     return(TreePoints.Count == 0 ? tree.peak.Center : TreePoints.Last().Center);
 }