Ejemplo n.º 1
0
def DistanceTest():
    c = basetypes.TCoord(3, 8, 1)
    c1 = basetypes.TCoord(4, 5, 2)
    d = geomutils.Distance(c, c1)
    print(d)

    print('')
    ca = []
    ca1 = []
    c = basetypes.TCoord(5, 1, 1)
    ca.append(c)
    c = basetypes.TCoord(4, 6, 8)
    ca.append(c)
    c = basetypes.TCoord(1, 2, 1)
    ca.append(c)
    c = basetypes.TCoord(4, 3, 5)
    ca1.append(c)
    c = basetypes.TCoord(2, 0, 6)
    ca1.append(c)
    c = basetypes.TCoord(7, 3, 6)
    ca1.append(c)
    da = geomutils.Distance(ca, ca1)
    for f in range(len(da)):
        print(da[f])

    print('')
    q1 = geomutils.TQuaternion(4, 2, 1, 3)
    q2 = geomutils.TQuaternion(2, 2, 3, 1)
    d = geomutils.Distance(q1, q2)
    print(d)
Ejemplo n.º 2
0
def IsSame(Cix1, Mix1, Cix2, Mix2, DockRun):
    Result = geomutils.Distance(DockRun.ConstraintSets[Cix1].DockModels[Mix1].Rotation,
                                DockRun.ConstraintSets[Cix2].DockModels[Mix2].Rotation) <= 1e-12
    if Result:
        Result = geomutils.Distance(DockRun.ConstraintSets[Cix1].DockModels[Mix1].TransVec,
                                    DockRun.ConstraintSets[Cix2].DockModels[Mix2].TransVec) <= 1e-12
    # Return Boolean
    return Result
Ejemplo n.º 3
0
def FarthestPoint(Points, Subset, LastPoint=-1):
    if LastPoint < 0:
        LastPoint = len(Subset) - 1
    Result = -1
    best = -1
    for f in range(len(Points)):
        tmp = geomutils.Distance(Points[f], Subset[0])
        for g in range(1, LastPoint):
            d = geomutils.Distance(Points[f], Subset[g])
            if d < tmp:
                tmp = d
            if tmp > best:
                best = tmp
                Result = f
    # Return Integer
    return Result
Ejemplo n.º 4
0
def SRSurface(Points, Radii, SpherePoints, MinHashCell=0):
    Result = []
    if Points is None:
        # Return TFloats
        return Result
    else:
        hashcell = LargestRadius(Radii) * 2
        if hashcell < MinHashCell:
            hashcell = MinHashCell
        ghash = geomhash.TGeomHasher(Points, hashcell)
        for f in range(len(Points)):
            ixs = ghash.ListNeighbours(Points[f])
            countouts = 0
            for g in range(len(SpherePoints)):
                sphere = geomutils.Add(
                    geomutils.Scaled(SpherePoints[g], Radii[f]), Points[f])
                intersect = False
                for h in range(len(ixs)):
                    if (ixs[h] is not f) and (geomutils.Distance(
                            sphere, Points[ixs[h]]) < Radii[ixs[h]]):
                        intersect = True
                        break
                if not intersect:
                    countouts = countouts + 1
            Result.append(4 * geomutils.PI * (Radii[f])**2 /
                          len(SpherePoints) * countouts)
        # Return TFloats
        return Result
Ejemplo n.º 5
0
def AtomsInContact(Atoms1, Atoms2, Dist):
    Result = False
    for f in range(len(Atoms1)):
        for g in range(len(Atoms2)):
            if geomutils.Distance(Atoms1[f].Coords, Atoms2[f].Coords) <= Dist:
                # Return Boolean
                return True
    # Return Boolean
    return False
Ejemplo n.º 6
0
 def IsRendundant(self, Points, MinDist):
     Result = False
     for f in range(len(self.FRotationPoints)):
         Result = True
         for g in range(len(Points)):
             if geomutils.Distance(Points[g],
                                   self.FRotationPoints[f][g]) > MinDist:
                 Result = False
                 break
         if Result:
             break
     # Return Boolean
     return Result
Ejemplo n.º 7
0
 def IsInnerPoint(self, C):
     tmpc = geomutils.Multiply(geomutils.Add(C, self.FShiftToGrid),
                               self.FInvGridStep)
     Result = False
     x1, x2 = self.GridBounds(tmpc[0], self.FHighX)
     y1, y2 = self.GridBounds(tmpc[1], self.FHighY)
     z1, z2 = self.GridBounds(tmpc[2], self.FHighZ)
     for x in range(x1, x2 + 1):
         for y in range(y1, y2 + 1):
             for z in range(z1, z2 + 1):
                 for f in range(len(self.FHashGrid[x][y][z])):
                     ix = self.FHashGrid[x][y][z][f]
                     if geomutils.Distance(
                             C, self.FPoints[ix]) < self.FRads[ix]:
                         Result = True
                         break
                 if Result:
                     break
             if Result:
                 break
         if Result:
             break
     # Return Boolean
     return Result