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)
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
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
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
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
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
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