Strabo.Core.TextDetection.TextString.TraceCharacters C# (CSharp) Метод

TraceCharacters() приватный Метод

private TraceCharacters ( List substring_list, int p1, int p3, int min_angle ) : void
substring_list List
p1 int
p3 int
min_angle int
Результат void
        private void TraceCharacters(List<int> substring_list, int p1, int p3, int min_angle)
        {
            if (_char_list[p3].neighbors.Count <= 0) return;

            double max_angle = -1;
            int max_angle_idx = 0;

            if (_debug) Console.WriteLine("*****Trace:Char " + p1 + " and " + p3);
            MyConnectedComponentsAnalysisFast.MyBlob char1 = _char_list[p3];
            for (int i = 0; i < char1.neighbors.Count; i++)
            {
                int idx = char1.neighbors[i];
                if (_char_list[idx].sizefilter_included)
                {
                    double angel = CosAngel(p1, idx, p3);
                    if (angel > max_angle) { max_angle = angel; max_angle_idx = idx; }
                }
            }
            if (max_angle_idx >= 0 && max_angle > min_angle)
            {
                substring_list.Add(max_angle_idx);
                _char_list[max_angle_idx].neighbors.Remove(p3);
                _char_list[p3].neighbors.Remove(max_angle_idx);
                if (_debug) Console.WriteLine("     Found: " + max_angle_idx + " Angle: " + max_angle + " Min Angle: " + min_angle);
                if (_char_list[p3].split_here || _char_list[max_angle_idx].split_here)
                    TraceCharacters(substring_list, p3, max_angle_idx, _larger_angle_threshold); // strict
                else TraceCharacters(substring_list, p3, max_angle_idx, _smaller_angle_threshold);

            }
            else
                if (_debug) Console.WriteLine("     Found none: " + max_angle_idx + " Angle: " + max_angle + " Min Angle: " + min_angle);
        }