- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 
                        foreach (clsPoint Point in ArrPoint) {
                if (!f1 && (P1.DistanceToPoint (p) > Point.DistanceToPoint (p) || P1.DistanceToPoint (p) < 1)
                    && (P2 == null || p.isInToLine (Point, P2) && Point.DistanceToPoint (P2) > 1) &&
                    (fc || Point1.Classify (P2.GetConnectBeem (this)[0].Point1, P2) ==
                                 Point.Classify (P2.GetConnectBeem (this)[0].Point1, P2))) {
                    P1 = Point;
                    continue;
                }
                if (!f2 && (P2.DistanceToPoint (p) > Point.DistanceToPoint (p) || P2.DistanceToPoint (p) < 1)
                    && (P1 == null || p.isInToLine (Point, P1) && Point.DistanceToPoint (P1) > 1) &&
                    (fc || Point2.Classify (P1.GetConnectBeem (this)[0].Point2, P1) ==
                                 Point.Classify (P1.GetConnectBeem (this)[0].Point2, P1))) {
                    P2 = Point;
                    continue;
                }
            }
                                 
        
хер чо поймеш!
бля условия хуячат через оператор!
внатуре или говнокод, или это наговнокодил инопланетный гость
Говнокод тут в основном в отсутствии описания условий выбора.
Ищется точка, удовлетворяющая заданным условиям, вроде бы которая ближе и того же типа. f1, f2 - какие то селекторы. Итого - сложная многофакторная выборка.
Кстати, похоже выполнится неправильно, т.к. && имеет больший приоритет чем ||.