def Farthest_Point_Sampling(mesh_name,n):
    """
    add the new farest point to set and print n out of all of mesh
    :param mesh_name:
    :param n:
    :return:
    """
    mesh = read(mesh_name + ".ply")
    v, f = (np.array(mesh.points), np.array(mesh.cells_dict['triangle'], dtype=np.int32))
    geodesics_dist = gdist.local_gdist_matrix(v.astype(np.float64), f.astype(np.int32))

    mesh = Mesh(v=v,f=f)
    mesh.render_pointcloud(scalar_function=mesh.gaussianCurvature())

    s=[]
    s.append(np.random.randint(0, len(v)))
    while (len(s)!=n):
        max_dist = 0
        selected_v = None
        for i,v_i in enumerate(v):
            min_by_s = np.inf
            for s_i in s: #get minimum ovver all s_i
                dist = geodesics_dist[s_i][v_i]
                if dist < min_by_s:
                    min_by_s = dist
            if min_by_s > max_dist:
                max_dist = min_by_s
                selected_v = v_i

        v = np.delete(v,selected_v) #dont iterate v over this node anymore
        s.append(selected_v)
    f_new=gen_f(s)
    mesh = Mesh(v=v[np.array(s)], f=f_new)
    mesh.render_pointcloud(scalar_function=mesh.gaussianCurvature())
예제 #2
0
  def __init__(self, engine, editorMode = False):
    self.engine         = engine
    self.boardWidth     = 4.0
    self.boardLength    = 12.0
    self.beatsPerBoard  = 5.0
    self.strings        = 5
    self.fretWeight     = [0.0] * self.strings
    self.fretActivity   = [0.0] * self.strings
    self.fretColors     = Theme.fretColors
    self.playedNotes    = []
    self.editorMode     = editorMode
    self.selectedString = 0
    self.time           = 0.0
    self.pickStartPos   = 0
    self.leftyMode      = False
    self.currentBpm     = 50.0
    self.currentPeriod  = 60000.0 / self.currentBpm
    self.targetBpm      = self.currentBpm
    self.lastBpmChange  = -1.0
    self.baseBeat       = 0.0
    self.setBPM(self.currentBpm)
    self.vertexCache    = numpy.empty((8 * 4096, 3), numpy.float32)
    self.colorCache     = numpy.empty((8 * 4096, 4), numpy.float32)

    engine.resource.load(self,  "noteMesh", lambda: Mesh(engine.resource.fileName("note.dae")))
    engine.resource.load(self,  "keyMesh",  lambda: Mesh(engine.resource.fileName("key.dae")))
    engine.loadSvgDrawing(self, "glowDrawing", "glow.png")
    engine.loadSvgDrawing(self, "neckDrawing", "neck.png")
    engine.loadSvgDrawing(self, "stringDrawing", "string.png")
    engine.loadSvgDrawing(self, "barDrawing", "bar.png")
    engine.loadSvgDrawing(self, "noteDrawing", "note.png")
예제 #3
0
파일: Dialogs.py 프로젝트: twcb/FoF
    def __init__(self,
                 engine,
                 prompt="",
                 selectedSong=None,
                 selectedLibrary=None):
        self.prompt = prompt
        self.engine = engine
        self.time = 0
        self.accepted = False
        self.selectedIndex = 0
        self.camera = Camera()
        self.cassetteHeight = .8
        self.cassetteWidth = 4.0
        self.libraryHeight = 1.2
        self.libraryWidth = 4.0
        self.itemAngles = None
        self.itemLabels = None
        self.selectedOffset = 0.0
        self.cameraOffset = 0.0
        self.selectedItem = None
        self.song = None
        self.songCountdown = 1024
        self.songLoader = None
        self.initialItem = selectedSong
        self.library = selectedLibrary
        self.searchText = ""

        # Use the default library if this one doesn't exist
        if not self.library or not os.path.isdir(
                self.engine.resource.fileName(self.library)):
            self.library = Song.DEFAULT_LIBRARY

        self.loadCollection()
        self.engine.resource.load(
            self,
            "cassette",
            lambda: Mesh(self.engine.resource.fileName("cassette.dae")),
            synch=True)
        self.engine.resource.load(
            self,
            "label",
            lambda: Mesh(self.engine.resource.fileName("label.dae")),
            synch=True)
        self.engine.resource.load(
            self,
            "libraryMesh",
            lambda: Mesh(self.engine.resource.fileName("library.dae")),
            synch=True)
        self.engine.resource.load(
            self,
            "libraryLabel",
            lambda: Mesh(self.engine.resource.fileName("library_label.dae")),
            synch=True)

        self.engine.loadSvgDrawing(self, "background", "cassette.svg")
def deflectomotery(objectName, imgDir):

    Img = Image(imgDir, objectName)

    Gradient_V = setGrad(Img.imgVSet, 3.8)
    Gradient_H = setGrad(Img.imgHSet, 3.8)

    #cv2.imwrite(os.path.join(imgDir, 'GradV.png'), np.array(Gradient_V * 255, dtype=np.uint8))
    #cv2.imwrite(os.path.join(imgDir, 'GradH.png'), np.array(Gradient_H * 255, dtype=np.uint8))

    N = np.zeros((Img.height, Img.width, 3), dtype=Img.PRECISION_IMG)
    N[..., 0] = -Gradient_V / np.sqrt(np.square(Gradient_V) + np.square(Gradient_H) + 1)
    N[..., 1] = -Gradient_H / np.sqrt(np.square(Gradient_V) + np.square(Gradient_H) + 1)
    N[..., 2] = 1 / np.sqrt(np.square(Gradient_V) + np.square(Gradient_H) + 1)

    # crop valid region
    Ncrop = N[Img.mask[0]:Img.mask[2], Img.mask[1]:Img.mask[3]]
    A = Img.A[Img.mask[0]:Img.mask[2], Img.mask[1]:Img.mask[3]]

    [newHeight, newWidth, _] = A.shape

    Nfname = os.path.join(imgDir, 'normal.png')
    # xyz to zyx because of OPENCV BGR order
    cv2.imwrite(Nfname, cv2.cvtColor(np.array((Ncrop + 1) / 2.0 * 255, dtype=np.uint8), cv2.COLOR_RGB2BGR))

    mesh = Mesh(objectName, newHeight, newWidth, Img.mask)
    mesh.setNormal(N)
    mesh.setDepth()
    mesh.setTexture(A)
    mesh.exportOBJ(imgDir, True)
예제 #5
0
파일: Det.py 프로젝트: olesmith/Poopys
 def Calc_Num_Dets(self):
     self.Dets_Num = Mesh(self.N, "Det", "Num")
     for n in range(self.N):
         self.Dets_Num[n] = None
         det = self.Calc_Num_Det(self.ts[n])
         if (det.__class__.__name__ == "float"):
             self.Dets_Num[n] = Vector([self.ts[n], det])
예제 #6
0
파일: Det.py 프로젝트: olesmith/Poopys
 def Calc_Ana_Dets(self):
     self.Dets_Ana = Mesh(self.N, "Det", "Ana")
     for n in range(self.N):
         self.Dets_Ana[n] = None
         det = self.Det(self.ts[n])
         if (det != None):
             self.Dets_Ana[n] = Vector([self.ts[n], det])
예제 #7
0
    def Calc_Ana_Function(self,function):
        attr=function
        if (not self.Curve_Type_Has_Analytical(function)):
            print "No analytical method:",attr
            return None

        if (not hasattr(self,attr)):
            print "No class attribute:",attr
            return None

        method=getattr(self,attr)
        mesh=Mesh(self.N,function,"Ana")
        
        errors=0
        for n in range( self.N ):
            mesh[n]=None

            value=None
            try:
                value=method( self.ts[n] )
            except:
                errors+=1
                
            if (value!=None):
                mesh[n]=Vector([  self.ts[n],value  ])
            
        return mesh
예제 #8
0
파일: Builder.py 프로젝트: zxx4477/pyFEM
    def BuildSpace(self):
        #   Generating the Mesh
        Params = {'Nelems': self.Nelems, 'a': self.a, 'b': self.b}
        mesh = Mesh(**Params)
        #   Retreiving the mesh ends up with a tuple with the Grid and its iterator
        (self.Grid, Grid_itr) = mesh.get_Mesh()
        print self.Grid
        i = 0
        #   Generate the elements over the Grid
        NodesPerElem = len(self.Shape_Funct.getSF_Names())
        for k in Grid_itr:
            Segment_Props = {'k': i, 'Interval': self.Grid[k:k + NodesPerElem]}
            self.FE.insert(i, Finite_Element(**Segment_Props))
            i = i + 1

        #   Calculate functionals
        for Element in self.FE:
            for funct in self.Shape_Funct.getSF_Names():
                Element.Functional(self.Shape_Funct.getFunctional(funct))(
                    Element.interval)

        #   For each element assign p(x), q(x) and f(x)
        for Element in self.FE:
            Element.p_x = self.p_x
            Element.q_x = self.q_x
            Element.f_x = self.f_x

        #   Creating the local symbolic Matrices and evaluating the numerical integrals over the interval
        for Element in self.FE:
            Element.create_stiff_local_Sym()
            Element.create_nodal_forces_local_Sym()
            Element.solve_stiff_local()
            Element.solve_forces_local()
예제 #9
0
def Render(mesh=Mesh(), textureImg=None, textureHandle=None, angle=0.0):
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()

    glPushMatrix()
    #    gluLookAt(0.0, 0.0, mesh.radius,
    #          0.0, 0.0, 0.0,
    #          0.0, mesh.radius, 0.0)
    #    gluLookAt(0.0, 0.0, 100,
    #          0.0, 0.0, 0.0,
    #          0.0, 100, 0.0)
    #    glPushMatrix()
    glRotatef(-180, 1.0, 0.0, 0.0)
    glRotatef(angle, 0.0, 1.0, 0.0)
    glTranslatef(-mesh.center[0], -mesh.center[1], -mesh.center[2])
    #

    #    glPopMatrix()
    #    textureImg.
    #    glColor3f(1.0, 0.0, 0.5)
    glBindTexture(GL_TEXTURE_2D, textureHandle)
    #    DrawPlane()
    #DrawTriangle()
    DrawMesh(mesh)
    glPopMatrix()
예제 #10
0
 def Calc_Num_v2s(self):
     self.v2s_Num = Mesh(self.N, "v2", "Num")
     for n in range(self.N):
         self.v2s_Num[n] = None
         v2 = self.Calc_Num_v2(self.ts[n])
         if (v2.__class__.__name__ == "float"):
             self.v2s_Num[n] = Vector([self.ts[n], v2])
예제 #11
0
 def Calc_Ana_v2s(self):
     self.v2s_Ana = Mesh(self.N, "v2", "Ana")
     for n in range(self.N):
         self.v2s_Ana[n] = None
         v2 = self.v2(self.ts[n])
         if (v2.__class__.__name__ == "float"):
             self.v2s_Ana[n] = Vector([self.ts[n], v2])
예제 #12
0
 def _gen_space_btn_clicked(self):
     width = int(self._width.text())
     height = int(self._height.text())
     if self._canvas:
         self._canvas.close()
     self._mesh = Mesh(width, height, PROB)
     self._canvas = Canvas(self.get_canvas__geometry(), self._mesh)
     self._canvas.show()
예제 #13
0
 def Calc_Ana_Ss(self):
     self.S1 = self.S(self.t1)
     self.Ss_Ana = Mesh(self.N, "S", "Ana")
     for n in range(self.N):
         self.Ss_Ana[n] = None
         s = self.S(self.ts[n]) - self.S1
         if (s.__class__.__name__ == "float"):
             self.Ss_Ana[n] = Vector([self.ts[n], s])
예제 #14
0
파일: dPhi.py 프로젝트: olesmith/Poopys
 def Calc_Num_dPhis(self):
     self.dPhis_Num = Mesh(self.N, "dPhi", "Num")
     for n in range(self.N):
         dphi = self.Calc_Num_dPhi(self.ts[n])
         v = None
         if (dphi):
             v = Vector([self.ts[n], dphi])
         self.dPhis_Num[n] = v
예제 #15
0
파일: Kappa.py 프로젝트: olesmith/Poopys
 def Calc_Num_Kappas(self):
     self.Kappas_Num = Mesh(self.N, "Kappa", "Num")
     for n in range(self.N):
         kappa = self.Calc_Num_Kappa(self.ts[n])
         v = None
         if (kappa):
             v = Vector([self.ts[n], kappa])
         self.Kappas_Num[n] = v
예제 #16
0
 def Calc_Num_dRhos(self):
     self.dRhos_Num = Mesh(self.N, "dRho", "Num")
     for n in range(self.N):
         drho = self.Calc_Num_dRho(self.ts[n])
         v = None
         if (drho):
             v = Vector([self.ts[n], drho])
         self.dRhos_Num[n] = v
예제 #17
0
파일: Phi.py 프로젝트: olesmith/Poopys
    def Calc_Ana_Phis(self):
        self.Phis_Ana = Mesh(self.N, "Phi", "Ana")
        for n in range(self.N):
            phi = self.Phi(self.ts[n])
            v = None
            if (phi):
                v = Vector([self.ts[n], phi])

            self.Phis_Ana[n] = v
예제 #18
0
파일: Kappa.py 프로젝트: olesmith/Poopys
    def Calc_Ana_Kappas(self):
        self.Kappas_Ana = Mesh(self.N, "Kappa", "Ana")
        for n in range(self.N):
            kappa = self.Kappa(self.ts[n])
            v = None
            if (kappa):
                v = Vector([self.ts[n], kappa])

            self.Kappas_Ana[n] = v
예제 #19
0
파일: Rho.py 프로젝트: olesmith/Poopys
    def Calc_Ana_Rhos(self):
        self.Rhos_Ana = Mesh(self.N, "Rho", "Ana")
        for n in range(self.N):
            v = None
            rho = self.Rho(self.ts[n])
            if (rho):
                v = Vector([self.ts[n], rho])

            self.Rhos_Ana[n] = v
예제 #20
0
    def Calc_Num_Psis(self):
        self.Psis_Num = Mesh(self.N, "Psi", "Num")
        for n in range(self.N):
            p = None
            psi = self.Calc_Num_Psi(self.ts[n])
            if (psi):
                p = Vector([self.ts[n], psi])

            self.Psis_Num[n] = p
예제 #21
0
    def Calc_Ana_Psis(self):
        self.Psis_Ana = Mesh(self.N, "Psi", "Ana")
        for n in range(self.N):
            psi = self.Psi(self.ts[n])
            v = None
            if (psi):
                v = Vector([self.ts[n], psi])

            self.Psis_Ana[n] = v
예제 #22
0
 def clear_btn_clicked(self):
     width = int(self._width.text())
     height = int(self._height.text())
     prob_rule4 = int(self._prob_rule4.text())
     self._mesh = Mesh(width, height, prob_rule4)
     self._canvas.close()
     self._canvas = Canvas(self.get_canvas__geometry(), self._mesh)
     self._canvas.show()
     self._canvas.repaint()
예제 #23
0
파일: Rho.py 프로젝트: olesmith/Poopys
    def Calc_Num_Rhos(self):
        self.Rhos_Num = Mesh(self.N, "Rho", "Num")
        for n in range(self.N):
            v = None
            rho = self.Calc_Num_Rho(self.ts[n])
            if (rho.__class__.__name__ == "float"):
                v = Vector([self.ts[n], rho])

            self.Rhos_Num[n] = v
예제 #24
0
파일: Phi.py 프로젝트: olesmith/Poopys
    def Calc_Num_Phis(self):
        self.Phis_Num = Mesh(self.N, "Phi", "Num")
        for n in range(self.N):
            p = None
            phi = self.Calc_Num_Phi(self.ts[n])
            if (phi):
                p = Vector([self.ts[n], phi])

            self.Phis_Num[n] = p
예제 #25
0
    def Calc_Mesh_Type_Num(self,mtype):
        mesh=Mesh(self.N,mtype,"Num")

        method=getattr(self,"Calc_Num_"+mtype)
        
        for n in range( self.N ):
            mesh[n]=method(  self.ts[n]  )

        mesh.__Canvas__=self.__Canvas__
        return mesh
예제 #26
0
파일: Function.py 프로젝트: olesmith/Poopys
    def Mesh(self, t1, t2, N, n=0):
        dt = (t2 - t1) / (1.0 * (N - 1))
        mesh = Mesh(N)

        t = t1
        for i in range(N):
            mesh[i] = Vector([t, self.df(t, n)])
            t += dt

        return mesh
예제 #27
0
    def __init__(self, file_name):
        global active_camera
        self.models = None
        self.cameras = None
        self.lights = None
        self.active_camera = active_camera

        # shared resources
        self.textures = {}  # name -> tex lookup
        self.shaders = {}  # name -> tex lookup
        self.meshes = {}  # name -> tex lookup

        with open(file_name, "r") as fp:
            data = json.load(fp)

        # models
        self.models = {name: Model(m) for (name, m) in data["models"].items()}
        for model in self.models.values():
            vert_file = model.io['shader']['vert']
            frag_file = model.io['shader']['frag']
            shader_name = vert_file.split('.')[0]
            shader = ResourceManager.get_shader(shader_name)
            if not shader:
                shader = Shader(vert_file, frag_file)
                ResourceManager.add_shader(shader_name, shader)
            model.shader = shader

            mesh_name = model.io['mesh']  # contains relative path string
            mesh = ResourceManager.get_mesh(mesh_name)
            if not mesh:
                mesh = Mesh(mesh_name)
                ResourceManager.add_mesh(mesh_name, mesh)
            model.mesh = mesh

            tex_files = model.io['textures']
            for (layer, tex_file) in tex_files.items():
                tex = ResourceManager.get_texture(tex_file)
                if not tex:
                    tex = Texture(tex_file)
                    ResourceManager.add_texture(tex_file, tex)
                model.textures[layer] = tex

        # cameras, set first camera to active
        self.cameras = {
            name: Camera(c)
            for (name, c) in data["cameras"].items()
        }
        if len(self.cameras) > 0:
            # get first items value
            active_camera = next(iter(self.cameras.items()))[1]
        logging.warn('camera needs to set shader uniforms')

        # lights
        self.lights = {name: Light(l) for (name, l) in data["lights"].items()}
        logging.warn('light needs to set shader uniforms')
예제 #28
0
def load_mesh(path):
    with open(path, 'r') as f:
        width, height = f.readline().split(' ')
        mesh = Mesh(int(width), int(height))
        points = mesh.get_points()
        for line in f.read().splitlines():
            x, y, phase, id = line.split(' ')
            points[int(x)][int(y)].id = int(id)
            points[int(x)][int(y)].phase = int(phase)

        return mesh
예제 #29
0
    def getMesh(self):

        mesh = Mesh()

        self.readPoints(mesh)

        self.readElems(mesh)

        self.readSides(mesh)

        return mesh
예제 #30
0
파일: R.py 프로젝트: olesmith/Poopys
    def Calc_Rs(self):
        self.Rs = Mesh(self.N, "R", "")

        err = 0
        for n in range(self.N):
            try:
                self.Rs[n] = self.R(self.ts[n])
            except ValueError:
                err = 1

        return err