def vmethod_0(self, obstacle_0, returnList):
        obstacleAreaResult_0 = ObstacleAreaResult.Primary
        double_0 = None
        double_1 = self.mocma
        double_2 = double_1
        double_3 = None
        #         if (MathHelper.smethod_44(self.selectionArea, obstacle_0.Position, obstacle_0.tolerance)):
        #obstacleAreaResult_0 = self.primaryArea.imethod_1(obstacle_0.Position, obstacle_0.tolerance, double_1, out double_2, out double_0);
        if not MathHelper.pointInPolygon(self.primaryArea, obstacle_0.Position,
                                         obstacle_0.tolerance):
            double_0 = 0.0
            double_2 = 0.0
            #List<SecondaryObstacleArea>.Enumerator enumerator = self.secondaryAreas.GetEnumerator();
            for current in self.secondaryAreas:
                try:
                    num = None
                    num1 = None
                    resultList = []
                    obstacleAreaResult = current.imethod_1(
                        obstacle_0.Position, obstacle_0.tolerance, double_1,
                        resultList)
                    if obstacleAreaResult == ObstacleAreaResult.Outside or len(
                            resultList) < 2:
                        obstacleAreaResult_0 = ObstacleAreaResult.Outside
                        continue
                    num = resultList[0]
                    num1 = resultList[1]
                    if obstacleAreaResult == ObstacleAreaResult.Primary:
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num
                        double_0 = num1
                        break
                    elif obstacleAreaResult == ObstacleAreaResult.Secondary and (
                            num > double_2 or double_2 == 0.0):
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num
                        double_0 = num1
                        break
                except IndexError:
                    pass
        if obstacleAreaResult_0 != ObstacleAreaResult.Outside:
            obstacle_0.area = obstacleAreaResult_0
            point3d = MathHelper.distanceBearingPoint(obstacle_0.Position,
                                                      self.tr180,
                                                      obstacle_0.tolerance)
            double_3 = self.vmethod_3(point3d, False)
            if obstacleAreaResult_0 == ObstacleAreaResult.Primary:
                double_3 = double_3 + (double_1 - double_2)

            returnList.append(double_0)
            returnList.append(double_1)
            returnList.append(double_2)
            returnList.append(double_3)
            return True
        return False
    def vmethod_0(self, obstacle_0, returnList):
        point3d = MathHelper.distanceBearingPoint(obstacle_0.Position, self.tr,
                                                  obstacle_0.tolerance)
        obstacleAreaResult_0 = ObstacleAreaResult.Primary
        double_0 = None
        double_1 = self.getMOC(point3d)
        double_3 = None
        double_2 = double_1
        if not MathHelper.pointInPolygon(self.primaryArea, obstacle_0.Position,
                                         obstacle_0.tolerance):
            double_0 = 0.0
            double_2 = 0.0
            for current in self.secondaryAreas:
                try:
                    num = None
                    num1 = None
                    resultList = []
                    obstacleAreaResult = current.imethod_1(
                        obstacle_0.Position, obstacle_0.tolerance, double_1,
                        resultList)
                    if obstacleAreaResult == ObstacleAreaResult.Outside:
                        obstacleAreaResult_0 = ObstacleAreaResult.Outside
                        continue
                    num = resultList[0]
                    num1 = resultList[1]
                    if (obstacleAreaResult == ObstacleAreaResult.Primary):
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num
                        double_0 = num1
                        break
                    elif obstacleAreaResult == ObstacleAreaResult.Secondary and (
                            num > double_2 or double_2 == 0.0):
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num
                        double_0 = num1
                except IndexError:
                    pass
        if obstacleAreaResult_0 != ObstacleAreaResult.Outside:
            obstacle_0.area = obstacleAreaResult_0
            double_3 = self.vmethod_3(point3d, False)
            if obstacleAreaResult_0 == ObstacleAreaResult.Secondary:
                double_3 = double_3 + (double_1 - double_2)

            returnList.append(double_0)
            returnList.append(double_1)
            returnList.append(double_2)
            returnList.append(double_3)
            return True
        return False
    def vmethod_0(self, obstacle_0, returnList):
        double_0 = None
        double_3 = None
        point3d = MathHelper.getIntersectionPoint(
            self.ptTHR, self.ptEND, obstacle_0.Position,
            MathHelper.distanceBearingPoint(obstacle_0.Position, self.trm90,
                                            100))
        obstacleAreaResult_0 = ObstacleAreaResult.Primary
        num = MathHelper.calcDistance(self.ptTHR,
                                      point3d) - obstacle_0.tolerance
        if not MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90):
            num = self.xstart
        else:
            num = max([self.xstart, num])

        double_1 = self.mocma + (num - self.xstart) * self.tanslope
        double_2 = double_1
        if not MathHelper.pointInPolygon(self.primaryArea, obstacle_0.Position,
                                         obstacle_0.tolerance):
            double_0 = 0.0
            double_2 = 0.0
            for current in self.secondaryAreas:
                try:
                    num1 = None
                    num2 = None
                    resultList = []
                    obstacleAreaResult = current.imethod_1(
                        obstacle_0.Position, obstacle_0.tolerance, double_1,
                        resultList)
                    if obstacleAreaResult == ObstacleAreaResult.Outside:
                        obstacleAreaResult_0 = ObstacleAreaResult.Outside
                        continue
                    num1 = resultList[0]
                    num2 = resultList[1]

                    #                 obstacleAreaResult = current.imethod_1(obstacle_0.Position, obstacle_0.tolerance, double_1, out num1, out num2);
                    if obstacleAreaResult == ObstacleAreaResult.Primary:
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num1
                        double_0 = num2
                        break
                    elif obstacleAreaResult == ObstacleAreaResult.Secondary and (
                            num1 > double_2 or double_2 == 0.0):
                        obstacleAreaResult_0 = obstacleAreaResult
                        double_2 = num1
                        double_0 = num2
                except IndexError:
                    pass
        if obstacleAreaResult_0 != ObstacleAreaResult.Outside:
            obstacle_0.area = obstacleAreaResult_0
            point3d1 = MathHelper.distanceBearingPoint(obstacle_0.Position,
                                                       self.tr,
                                                       obstacle_0.tolerance)
            double_3 = self.vmethod_3(point3d1, False)
            if obstacleAreaResult_0 == ObstacleAreaResult.Primary:
                double_3 = double_3 + (double_1 - double_2)

            returnList.append(double_0)
            returnList.append(double_1)
            returnList.append(double_2)
            returnList.append(double_3)

            return True
        return False
 def method_0(self, oasSurface_0, obstacle_0, lstDouble3):
     double_0 = lstDouble3[0]
     double_1 = lstDouble3[1]
     double_2 = 0
     flag = False
     if define._units == QGis.Meters:
         position = obstacle_0.position
     else:
         position = obstacle_0.positionDegree
     if oasSurface_0 == OasSurface.OFZ:
         if (MathHelper.pointInPolygon(self.Ofz, position,
                                       obstacle_0.tolerance)):
             double_0 = max([double_0, self.E.x()])
             double_2 = 0
             flag = True
     elif oasSurface_0 == OasSurface.W:
         if (MathHelper.pointInPolygon(self.W, position,
                                       obstacle_0.tolerance)):
             if not self.HasWS or (self.cat != OasCategory.SBAS_APV1
                                   and self.cat != OasCategory.SBAS_APV2):
                 double_0 = max([double_0, self.C.x()])
             else:
                 double_0 = max([double_0, self.CCC.x()])
             double_2 = max([
                 0, OasObstacles.constants.WA * double_0 +
                 OasObstacles.constants.WC
             ])
             flag = True
     elif oasSurface_0 == OasSurface.WS:
         if (MathHelper.pointInPolygon(self.WS, position,
                                       obstacle_0.tolerance)):
             if (not self.HasWS or self.cat != OasCategory.ILS2AP):
                 double_0 = max([double_0, self.C.x()])
             else:
                 double_0 = max([double_0, self.CCC.x()])
             double_2 = max([
                 0, OasObstacles.constants.WSA * double_0 +
                 OasObstacles.constants.WSC
             ])
             flag = True
     elif oasSurface_0 == OasSurface.Z:
         if (MathHelper.pointInPolygon(self.Z, position,
                                       obstacle_0.tolerance)):
             double_0 = min(
                 [double_0 + 2 * obstacle_0.tolerance,
                  self.E.x()])
             double_2 = max([
                 0, OasObstacles.constants.ZA * double_0 +
                 OasObstacles.constants.ZC
             ])
             flag = True
     elif oasSurface_0 == OasSurface.X1:
         if (MathHelper.pointInPolygon(self.X1, position,
                                       obstacle_0.tolerance)):
             double_0 = max([double_0, self.D.x()])
             if ((OasObstacles.constants.YA * double_0 -
                  OasObstacles.constants.XA * double_0 +
                  OasObstacles.constants.YC - OasObstacles.constants.XC) /
                 (OasObstacles.constants.XB - OasObstacles.constants.YB) <
                     double_1):
                 double_0 = (
                     OasObstacles.constants.YB * double_1 -
                     OasObstacles.constants.XB * double_1 +
                     OasObstacles.constants.YC - OasObstacles.constants.XC
                 ) / (OasObstacles.constants.XA - OasObstacles.constants.YA)
             double_2 = OasObstacles.constants.XA * double_0 + OasObstacles.constants.XB * double_1 + OasObstacles.constants.XC
             if (self.HasWS and self.cat == OasCategory.ILS2AP):
                 if (double_0 <= self.CCC.x()):
                     double_2 = max([
                         double_2, OasObstacles.constants.WA * double_0 +
                         OasObstacles.constants.WC
                     ])
                 else:
                     double_2 = max([
                         double_2, OasObstacles.constants.WSA * double_0 +
                         OasObstacles.constants.WSC
                     ])
             elif not self.HasWS or (self.cat != OasCategory.SBAS_APV1
                                     and self.cat != OasCategory.SBAS_APV2):
                 double_2 = max([
                     double_2, OasObstacles.constants.WA * double_0 +
                     OasObstacles.constants.WC
                 ])
             elif (double_0 <= self.CCC.x()):
                 double_2 = max([
                     double_2, OasObstacles.constants.WSA * double_0 +
                     OasObstacles.constants.WSC
                 ])
             else:
                 double_2 = max([
                     double_2, OasObstacles.constants.WA * double_0 +
                     OasObstacles.constants.WC
                 ])
             double_2 = max([0, double_2])
             double_1 = -(
                 double_2 - OasObstacles.constants.XA * double_0 -
                 OasObstacles.constants.XC) / OasObstacles.constants.XB
             flag = True
     elif oasSurface_0 == OasSurface.X2:
         if (MathHelper.pointInPolygon(self.X2, position,
                                       obstacle_0.tolerance)):
             double_0 = max([double_0, self.D.x()])
             if ((OasObstacles.constants.YA * double_0 -
                  OasObstacles.constants.XA * double_0 +
                  OasObstacles.constants.YC - OasObstacles.constants.XC) /
                 (OasObstacles.constants.XB - OasObstacles.constants.YB) <
                     double_1):
                 double_0 = (
                     OasObstacles.constants.YB * double_1 -
                     OasObstacles.constants.XB * double_1 +
                     OasObstacles.constants.YC - OasObstacles.constants.XC
                 ) / (OasObstacles.constants.XA - OasObstacles.constants.YA)
             double_2 = OasObstacles.constants.XA * double_0 + OasObstacles.constants.XB * double_1 + OasObstacles.constants.XC
             if (self.HasWS and self.cat == OasCategory.ILS2AP):
                 if (double_0 <= self.CCC.x()):
                     double_2 = max([
                         double_2, OasObstacles.constants.WA * double_0 +
                         OasObstacles.constants.WC
                     ])
                 else:
                     double_2 = max([
                         double_2, OasObstacles.constants.WSA * double_0 +
                         OasObstacles.constants.WSC
                     ])
             elif not self.HasWS or (self.cat != OasCategory.SBAS_APV1
                                     and self.cat != OasCategory.SBAS_APV2):
                 double_2 = max([
                     double_2, OasObstacles.constants.WA * double_0 +
                     OasObstacles.constants.WC
                 ])
             elif (double_0 <= self.CCC.x()):
                 double_2 = max([
                     double_2, OasObstacles.constants.WSA * double_0 +
                     OasObstacles.constants.WSC
                 ])
             else:
                 double_2 = max([
                     double_2, OasObstacles.constants.WA * double_0 +
                     OasObstacles.constants.WC
                 ])
             double_2 = max([0, double_2])
             double_1 = (
                 double_2 - OasObstacles.constants.XA * double_0 -
                 OasObstacles.constants.XC) / OasObstacles.constants.XB
             flag = True
     elif oasSurface_0 == OasSurface.Y1:
         if MathHelper.pointInPolygon(self.Y1, position,
                                      obstacle_0.tolerance):
             double_0 = max([double_0, self.EE.x()])
             double_1 = max([
                 double_1,
                 (OasObstacles.constants.YA * double_0 -
                  OasObstacles.constants.XA * double_0 +
                  OasObstacles.constants.YC - OasObstacles.constants.XC) /
                 (OasObstacles.constants.XB - OasObstacles.constants.YB)
             ])
             double_2 = max([
                 OasObstacles.constants.YA * double_0 +
                 OasObstacles.constants.YB * double_1 +
                 OasObstacles.constants.YC,
                 OasObstacles.constants.ZA * double_0 +
                 OasObstacles.constants.ZC
             ])
             double_2 = max([0, double_2])
             double_1 = -(
                 double_2 - OasObstacles.constants.YA * double_0 -
                 OasObstacles.constants.YC) / OasObstacles.constants.YB
             flag = True
     elif oasSurface_0 == OasSurface.Y2:
         if MathHelper.pointInPolygon(self.Y2, position,
                                      obstacle_0.tolerance):
             double_0 = max([double_0, self.EE.x()])
             double_1 = max([
                 double_1,
                 (OasObstacles.constants.YA * double_0 -
                  OasObstacles.constants.XA * double_0 +
                  OasObstacles.constants.YC - OasObstacles.constants.XC) /
                 (OasObstacles.constants.XB - OasObstacles.constants.YB)
             ])
             double_2 = max([
                 OasObstacles.constants.YA * double_0 +
                 OasObstacles.constants.YB * double_1 +
                 OasObstacles.constants.YC,
                 OasObstacles.constants.ZA * double_0 +
                 OasObstacles.constants.ZC
             ])
             double_2 = max([0, double_2])
             double_1 = (
                 double_2 - OasObstacles.constants.YA * double_0 -
                 OasObstacles.constants.YC) / OasObstacles.constants.YB
             flag = True
     if flag:
         lstDouble3[0] = double_0
         lstDouble3[1] = double_1
         lstDouble3[2] = double_2
         return True
     else:
         return False