NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

directionalScanIntersectUtil.py (1006B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\scannerFiles\directionalScanIntersectUtil.py
      2 import math
      3 import geo2
      4 
      5 def IsWithinSphere(pos, range):
      6     rad = geo2.Vec3Length(pos)
      7     return rad <= range
      8 
      9 
     10 def IsWithinHalfSphere(pos, range, direction):
     11     if geo2.Vec3Dot(direction, pos) < 0:
     12         return False
     13     return IsWithinSphere(pos, range)
     14 
     15 
     16 def IsWithinCone(pos, angle, range, direction):
     17     dird0 = geo2.Vec3Dot(direction, pos)
     18     c2 = math.cos(angle / 2) ** 2
     19     d0d0 = geo2.Vec3Dot(pos, pos)
     20     return dird0 >= 0.0 and dird0 ** 2 >= c2 * d0d0 and d0d0 <= range ** 2
     21 
     22 
     23 def IsWithinScanShape(pos, egoPos, angle, range, direction):
     24     if not egoPos:
     25         return
     26     pos = geo2.Vec3Subtract(egoPos, pos)
     27     if angle <= math.pi:
     28         return IsWithinCone(pos, angle, range, direction)
     29     elif angle < 2 * math.pi:
     30         return IsWithinHalfSphere(pos, range, direction)
     31     else:
     32         return IsWithinSphere(pos, range)