def rotate_nanop(nanop, tetha, p2):

    pcx, pcy, pcz = nanop.get_center()
    A, B, H = nanop.get_dimensions()
    p1 = point.point(pcx, pcy, pcz)

    nanoparticle.POINTINSURFACESTEP = 1.0

    newnanop = nanoparticle.nanotio2(pcx, pcy, pcz, A, B, H)
    newnanop.rotate_nanoparticle(p1, p2, tetha)

    nanoparticle.POINTINSURFACESTEP = float('inf')

    return newnanop
Example #2
0
#   (boty >= topy):
#  print "Error Invalid BOX"
#  exit()

for i in range(len(scx)):
    cx = scx[i]
    cy = scy[i]
    cz = scz[i]
    H = 28.99
    B = 23.56
    A = 14.44

    # ruota la nanoparticella random
    p1 = point.point(cx, cy, cz)

    p2x = random.uniform(botx, topx)
    p2y = random.uniform(boty, topy)
    p2z = random.uniform(botz, topz)

    tetha = random.uniform(0.0, 2.0 * math.pi)

    n = nanoparticle.nanotio2(cx, cy, cz, A, B, H)

    print >> sys.stderr, "Ratio: ", (H / 2.0) / B
    print >> sys.stderr, "Sphere volume: ", spheres[i].get_volume(), \
        "Nanoparticle: ", n.get_volume(), " [", \
            math.fabs(spheres[i].get_volume() - n.get_volume()), "] "

    print cx, cy, cz, A, B, H, p2x, \
        p2y, p2z, tetha
    print "Doing ", selectedid + 1, " of ", len(nanoparticles)

    nanop_selected = nanoparticles[selectedid]

    if (not nanop_selected.get_fixed()):
        pcx, pcy, pcz = nanop_selected.get_center()
        A, B, H = nanop_selected.get_dimensions()
        dm = max(B, A, H) / 2.0

        # devo generare per questa nanoparticella punti in superficie e dentro
        nanoparticle.POINTINSURFACESTEP = 1.0

        p1, p2, tetha = nanop_selected.get_rotation_info()

        nanop = nanoparticle.nanotio2(pcx, pcy, pcz, A, B, H)
        # non ruoto altrimenti perdo il riferimento visto che ogni volta voglio
        # ripartire dalla sfera dritta
        #nanop.rotate_nanoparticle(p1, p2, tetha)

        nanoparticle.POINTINSURFACESTEP = float('inf')

        nearnanop, neardst = nanoparticle.get_near_nanoparticle_set_fixed ( \
            nanoparticles, pcx, pcy, pcz, (2.0 * nanop.get_max_sphere()))

        print "Selected ", len(neardst), " nanoparticles "

        maxdiff = 1.0

        # anche 2 vale la pena provare fino a 1000 ho  visto casi in
        # cui si arriva ad una diff di 2 e poco piu'
Example #4
0
     mapper = vtk.vtkPolyDataMapper()
     if vtk.VTK_MAJOR_VERSION <= 5:
       mapper.SetInput(source.GetOutput())
     else:
       mapper.SetInputConnection(source.GetOutputPort())
                 
     actor = vtk.vtkActor()
     actor.SetMapper(mapper)
     actor.GetProperty().SetColor(get_color(atomname)); #(R,G,B)
     actors.append(actor)


filep.close()

nanop = nanoparticle.nanotio2(numpy.mean(xlist), \
    numpy.mean(ylist), numpy.mean(zlist), \
    14.44, 23.56, 28.99)

sphere = vtk.vtkSphereSource()
sphere.SetCenter(numpy.mean(xlist), \
        numpy.mean(ylist), numpy.mean(zlist))
sphere.SetRadius(float(28.99/2.12393441488750937510))

mapper = vtk.vtkPolyDataMapper()
if vtk.VTK_MAJOR_VERSION <= 5:
  mapper.SetInput(sphere.GetOutput())
else:
  mapper.SetInputConnection(sphere.GetOutputPort())
 
actor = vtk.vtkActor()
actor.SetMapper(mapper)