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
# (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'
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)