Beispiel #1
0
 def compute_elements(self, key):
     if key in self.data:
         sv = self.data[key]
         if 'rvec' in sv and 'vvec' in sv:
             elts = self.pbody.compute_3d_elements(sv['rvec'], sv['vvec'])
             sv.update(elts)
         vvec = sv.get('vvec')
         lat = sv.get('lat')
         lon = sv.get('lon')
         if None not in (vvec, lat, lon):
             # compute obtHeading
             iM = matrix.RotationMatrix(1, lat) * matrix.RotationMatrix(
                 2, -lon)
             lv = iM * vvec.hat
             oh = math.atan2(lv.y, lv.z)
             sv['oh'] = oh
Beispiel #2
0
 def draw(self):
     self.cw.clear()
     pit = self.get('pit')
     hdg = self.get('hdg')
     rll = self.get('rll')
     if None in (pit, hdg, rll):
         return
     m_rll = matrix.RotationMatrix(0, math.radians(rll))
     m_pit = matrix.RotationMatrix(1, -math.radians(pit))
     m_hdg = matrix.RotationMatrix(2, -math.radians(hdg))
     final = m_rll * m_pit * m_hdg
     self.cw.addch(self.center[1], self.center[0], '.')
     for k, v in self.cardinals.items():
         p = final * v
         if p.data[0] >= -0.05:
             x = p.data[1] * self.half_size + self.center[0]
             y = p.data[2] * self.half_size / 2 + self.center[1]
             self.cw.addch(int(y), int(x), k)
Beispiel #3
0
def main():
    sys.path.append(".")
    import DEBUG
    global Cam
    global Light

    #t = threading.Thread(target = ui)
    #t.start()

    sol = []

    Step = 2
    Size = 30
    for i in range(-Size, Size, Step):
        for j in range(-Size, Size, Step):
            sq1 = matrix.mat3x3([[i, j, 3], [i, j + Step, 3], [i + Step, j,
                                                               3]])
            """
            sq2 = matrix.mat3x3([
                [i,j+Step,1],
                [i+Step,j+Step,1],
                [i+Step,j,1]
            ])"""

            sol.append(sq1)
            #sol.append(sq2)

    MatGraph.MultiplyMeshAndMatrix(sol,
                                   matrix.RotationMatrix("X", math.pi / 2))

    global TranslationMatrix

    DEBUG.init()
    Graphics.initDisplayHandler(DEBUG.window, DEBUG.ScreenSize, 100,
                                15 * math.pi / 180)
    DEBUG.HandleWindowEvents()
    theta = 0
    phi = 0
    vtheta = 0
    #for p in sys.path:

    #Test2 = Load3DElement("GPlaneur/Tests/Graphipsa3D/MeshFiles/GAMIIIING.obj")

    #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("Y",theta))
    #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("X",math.pi/6))
    #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("Z",math.pi/6))

    #Test2 = Load3DElement("Tests/Graphipsa3D/MeshFiles/teapot.obj")

    Cam = vector([0, 0, 0])
    vUp = vector([0, 1, 0])
    vLookDir = vector([0, 0, 1])
    vTarget = vector([0, 0, 1])

    #print(pygame.display.Info())
    Step = 2
    Size = 60
    offset = 0
    LastCamPos = 0
    miniOffset = 0
    while DEBUG.ISRUNNING:

        #thetaa += math.pi/512

        #Cam.v[2] -= DEBUG.JoystickAxis[3]/16

        phi += DEBUG.JoystickAxis[1] / 32

        vForward = vector([(-vLookDir.v[0]) * DEBUG.JoystickAxis[3] / 1,
                           (-vLookDir.v[1]) * DEBUG.JoystickAxis[3] / 1,
                           (-vLookDir.v[2]) * DEBUG.JoystickAxis[3] / 1])

        Cam += vForward

        #print(Cam)
        #vTarget = ([0,0,1])
        vLookDir = vector([0, math.sin(phi), math.cos(phi)])
        #vLookDir = vector([-math.sin(theta),0,math.cos(theta)])
        #vLookDir = vector([1,0,0])

        vTarget = Cam + vLookDir

        subMat = PointAt(Cam, vTarget, vUp)

        mtView = LookAtMatrix(subMat)

        #print(vTarget)
        sol = []

        #print(offset)

        if Cam.v[2] > Size + offset - 60:

            offset = int(Cam.v[2])
            miniOffset = Cam.v[2] - offset

        for i in range(-30, 30, Step):
            for j in range(offset, Size + offset, Step):

                sq1 = matrix.mat3x3([[i, 6, j - miniOffset],
                                     [i + Step, 6, j - miniOffset],
                                     [i, 6, j + Step - miniOffset]])

                sol.append(sq1)

        #Tst2 = sol.copy()
        #MatGraph.MultiplyMeshAndMatrix(Tst2,matrix.RotationMatrix("X",math.pi/2))
        #MatGraph.AddMeshAndMatrix(Tst2,matrix.mat3x3([[0,3,0],[0,3,0],[0,3,0]]))
        #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("Y",-thetaa))
        #MatGraph.AddMeshAndMatrix(Test,TranslationMatrix)
        #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("X",thetaa))

        #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("X",math.pi/6))
        #MatGraph.MultiplyMeshAndMatrix(Test,matrix.RotationMatrix("Z",math.pi/6))

        #FillMesh(Test,(255,255,255),Cam,Light,matView)
        #FillMesh(Tst2,(0,255,0),Cam,Light,matView)

        FillMesh(sol, (255, 255, 255), Cam, Light, mtView)

        #DrawMesh(Test,(255,255,255))

        DEBUG.HandleWindowEvents()

    DEBUG.quit()
Beispiel #4
0
 def point(self, pit, hdg):
     # pointing vector in local co-ordinates
     pvec = matrix.Vector3((math.sin(pit), math.sin(hdg) * math.cos(pit),
                            math.cos(hdg) * math.cos(pit)))
     self.pvec = matrix.RotationMatrix(2, self.lon) * matrix.RotationMatrix(
         1, -self.lat) * pvec
Beispiel #5
0
        theta += math.pi/512



    for i in range(len(cube2[0].v)):


    
        #Calcul effectué : ((translationMatrix2 + cube2[0].v[i]) * RotationMatrix("X",theta)) + translationMatrix
        
        cube2[0].v[i] = matrix.ConvertMatrixToVertex(matrix.AddMatrix(TranslationMatrix2,matrix.ConvertVertexToMatrix(cube2[0].v[i])))
        
        cube2[0].v[i] = matrix.ConvertMatrixToVertex(
            matrix.MultiplyMatrix(
                matrix.ConvertVertexToMatrix(cube2[0].v[i]),
                matrix.RotationMatrix("X",theta)))
        cube2[0].v[i] = matrix.ConvertMatrixToVertex(
            matrix.MultiplyMatrix(
                matrix.ConvertVertexToMatrix(cube2[0].v[i]),
                matrix.RotationMatrix("Y",theta)))
        cube2[0].v[i] = matrix.ConvertMatrixToVertex(
            matrix.MultiplyMatrix(
                matrix.ConvertVertexToMatrix(cube2[0].v[i]),
                matrix.RotationMatrix("Z",theta)))
        
        cube2[0].v[i] = matrix.ConvertMatrixToVertex(matrix.AddMatrix(TranslationMatrix,matrix.ConvertVertexToMatrix(cube2[0].v[i])))

    Normal = []
    
    NonSortedZ = []
    SortedZ = []
Beispiel #6
0
def oxform(ape, inc, lan):
    lanx = matrix.RotationMatrix(2, lan)
    incx = matrix.RotationMatrix(0, inc)
    apex = matrix.RotationMatrix(2, ape)
    return lanx * incx * apex