Exemple #1
0
    def test_order_1(self):
        # given
        A = Cannon.Matrix(1, [3])
        B = Cannon.Matrix(1, [4])

        # when
        C = matrix_multiply(A, B)

        # then
        assert_that(C, is_(Cannon.Matrix(1, [12])))
Exemple #2
0
    def test_horizontal_shift_2x2_by_blocks_1x1(self):
        # given
        M = Cannon.Matrix(2, [1, 2, 3, 4])

        # when
        actual = matrix_horizontal_shift(M, block_order=1)

        # then
        expected = Cannon.Matrix(2, [1, 2, 4, 3])

        assert_that(actual, is_(expected))
Exemple #3
0
 def __init__(self):
     self.cannon = Cannon()
     self.missiles = []
     self.missileVelocities = []
     self.missileAccelerations = []
     self.wasPressed = 0
     self.initialPress = time.time()
Exemple #4
0
def matrix_split(M, block_order):
    matriz_order = M.ncols
    fragments = (matriz_order / block_order) ** 2
    matriz_frag = None
    end = True
    fila_matriz = 0
    columna_matriz = 0    
    bloques = []

    while end:
        if columna_matriz == matriz_order:
			columna_matriz = 0
			fila_matriz += block_order

        if (columna_matriz % block_order) == 0:
            matriz_frag = Cannon.Matrix(block_order, [0] * (block_order ** 2))
            bloques.append(matriz_frag)
            frag_col = 0
		
        frag_fila = 0
		limit=fila_matriz + block_order
		i=fila_matriz
		        
        while i<limit:
            matriz_frag.data[block_order * frag_fila + frag_col] = M.data[matriz_order * i + columna_matriz]
            frag_fila += 1
			i+=1    
 def loadModel(self):
     self.prop = Cannon.Cannon(self.cr)
     self.prop.cannonPost = self.prop
     self.prop.shipId = self.shipId
     self.prop.doId = self.doId
     self.prop.reparentTo(self)
     self.prop.loadModel(None)
    def test_5x5_processors_200x200_operands(self):
        nprocs = 25

        # given
        P = [self.broker.add_servant(ProcessorI(), Cannon.ProcessorPrx) for i in range(nprocs)]
        loader = self.broker.add_servant(OperationsI(P), Cannon.OperationsPrx)

        A_last = 200 * 200
        A = Cannon.Matrix(200, range(1, 1 + A_last))
        B = Cannon.Matrix(200, range(1 + A_last, 1 + A_last * 2))

        # when
        C = loader.matrixMultiply(A, B)

        # then
        expected = matrix_multiply(A, B)
        assert_that(C, is_(expected))
Exemple #7
0
def matrix_add(A, B):
    order = A.ncols
    C = Cannon.Matrix(order, [])

    for pos in range(0, order**2):
            C.data.append(A.data[pos] + B.data[pos])

    return C
 def createProp(self):
     cannon = self.ship.cannons.get(self.cannonIndex, 0)
     if cannon:
         if cannon[0]:
             self.prop = cannon[0]
             self.ship.cannons[self.cannonIndex][1] = self
             return
     self.prop = Cannon.Cannon(self.cr, True)
     self.ship.cannons[self.cannonIndex] = [self.prop, self]
Exemple #9
0
    def __init__(self, order):
        self.blocks = []
        self.nblocks = 0
        self.g_order = order
        self.C = Cannon.Matrix(order, [])
        self.event = threading.Event()

        for i in range(order**2):
            self.blocks.append(None)
def matrix_multiply(A, B):
    order = A.ncols
    C = Cannon.Matrix(order, [])
	for r in range(order):
		for c in range(order):
			cell = 0
			for i in range(order):
				cell += A.data[(r * order) + i] * B.data[(i * order) + c]
			C.data.append(cell)
Exemple #11
0
def matrix_vertical_shift(M, block_order):
    order = M.ncols
    retval = Cannon.Matrix(order, [])

    for row in range(0, order):
        for col in range(0, order):
            step = block_order * int(col/block_order)
            retval.data.append(M.data[((row+step)%order)*order+col])
     
    return retval
Exemple #12
0
def matrix_horizontal_shift(M, block_order):
    order = M.ncols
    retval = Cannon.Matrix(order, [])

    for row in range(0, order):
        for col in range(0, order):
            step = block_order * int(row/block_order)
            retval.data.append(M.data[((col+step)%order)+row*order])   

    return retval
Exemple #13
0
def matrix_multiply(A, B):
    order = A.ncols
    C = Cannon.Matrix(order, [])

    for i, j in itertools.product(xrange(order), repeat=2):
        C.data.append(
            sum(A.data[i * order + k] * B.data[k * order + j] for k in xrange(order))
        )

    return C
    def injectFirst(self, A, step, current=None):
        if self.C == None:
            self.C = Cannon.Matrix(A.ncols, [])
            for i in range(A.ncols**2):
                self.C.data.append(0)

        self.p_A[step] = A

        if self.p_B[step] != None:
            self.Sum(A, self.p_B[step], step)
Exemple #15
0
def matrix_add(A, B):
    filsA = len(A.data) / A.ncols
    colsA = A.ncols    
    filsB = len(B.data) / B.ncols   
    colsB = B.ncols
    C = Cannon.Matrix(colsA, [0] * colsA * filsA)
    i=0
    
    for i in range(colsA * filsA):
        C.data[i] = A.data[i] + B.data[i]
		i+=1
Exemple #16
0
def matrix_multiply(A, B):
    order = A.ncols
    C = Cannon.Matrix(order, [])

    for row in range(0, order):
        for col in range(0, order):
            result = 0
            for i in range(0, order):
                result += A.data[row*order+i] * B.data[i*order+col]
            C.data.append(result)

    return C
Exemple #17
0
def matrix_join(*blocks):
    nblocks = len(blocks)
    block_order = blocks[0].ncols
    order = int(math.sqrt(nblocks)) * block_order
    retval = Cannon.Matrix(order, [])

    for row in range(0, order):
        for col in range(0, order):
            n_block = int(row/block_order) * int(order/block_order) + int(col/block_order)
            block_pos = row%block_order * block_order + col%block_order         
            retval.data.append(blocks[n_block].data[block_pos])

    return retval
Exemple #18
0
class cliente(Ice.Application):
	def run(self, argv):
		prxFrontend = self.communicator().stringToProxy(argv[1])
		frontend = Cannon.FrontendPrx.checkedCast(prxFrontend)
		
        if not frontend:
                raise RuntimeError("Invalid proxy frontend")                
                
		A_last = 400 * 400
        A400 = Cannon.Matrix(400, range(1, 1 + A_last))
        B400 = Cannon.Matrix(400, range(1 + A_last, 1 + A_last * 2))

		res400=frontend.multiply(A400,B400)
		res400dir=matrix_multiply(A400,B400)

		if(res400 == res400dir):
			print("Ok en matrix 400x400")
			print_matrix(res400)
		else:
			print("Error en matrix 400x400")

		
		A_last = 600 * 600
Exemple #19
0
def load_matrix_from_file(filename):
    with file(filename) as f:
        rows = f.readlines()

    order = len(rows[0].split())
    retval = Cannon.Matrix(order, [])

    for row in rows:
        rowdata = row.split()
        assert len(rowdata) == order
        for n in rowdata:
            retval.data.append(float(n))

    assert len(retval.data) == order ** 2
    return retval
Exemple #20
0
    def test_vertical_shift_6x6_blocks_3x3(self):
        # given
        original = M6(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
                      17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
                      31, 32, 33, 34, 35, 36)

        # when
        actual = matrix_vertical_shift(original, block_order=3)

        # then
        expected = M6(1, 2, 3, 22, 23, 24, 7, 8, 9, 28, 29, 30, 13, 14, 15, 34,
                      35, 36, 19, 20, 21, 4, 5, 6, 25, 26, 27, 10, 11, 12, 31,
                      32, 33, 16, 17, 18)

        assert_that(actual, is_(Cannon.Matrix(6, expected)))
Exemple #21
0
def matrix_split(M, block_order):
    blocks = []

    order = M.ncols
    blocks_row = int(order / block_order)
    nblocks = blocks_row ** 2
    
    for n_block in range(0, nblocks):
        blocks.insert(n_block, Cannon.Matrix(block_order, []))

    for row in range(0, order):
        for col in range(0, order):
            n_block = int(row/block_order) * int(blocks_row) + int(col/block_order)
            blocks[n_block].data.append(M.data[row*order+col])

    return blocks
def matrix_horizontal_shift(M, block_order):
    order = M.ncols
    retval = Cannon.Matrix(order, [])

    for i in range(order ** 2):
    	retval.data.append(0)

    for row in range(block_order):
    	for col in range(order):
    		retval.data[row*order + col] = M.data[row*order + col]

    for row in range(block_order, order):
    	salto = int(row/block_order)
    	for col in range(order):
    		mov = ((col + order - salto * block_order) % order)
    		retval.data[row * order + mov] = M.data[row * order + col]

    return retval
def matrix_join(blocks):

    nbl = int(math.sqrt(len(blocks)))
    block_order = blocks[0].ncols
    order = nbl * block_order
    
    M = Cannon.Matrix(order, [])
    
    for nveces in range(nbl):
    	for ind_y in range(block_order):
    		pos = ind_y * block_order 
    		block = nveces * nbl
    		for ind_x in range(nbl):
    			for inc in range(block_order):
    				M.data.append(blocks[block].data[pos + inc])
    			block = block + 1
    
    return M
Exemple #24
0
def matrix_join(*blocks):
    tamano = 0
    fila = 0
    col = 0
	
    matriz_order = int(math.sqrt(len(blocks) *(blocks[0].ncols ** 2)))
    matrix_joined = Cannon.Matrix(matriz_order, [0] * (matriz_order ** 2))
    subMatrixOrder = blocks[0].ncols
    block_order=matriz_order / subMatrixOrder

    while tamano != matriz_order ** 2:
        if block_order == col:
            col = 0
            fila += 1
            
		col_aux = col * subMatrixOrder
        fila_aux = fila * subMatrixOrder        

        for matrix_fila in range(subMatrixOrder):        
            for matrix_column in range(subMatrixOrder):
                matrix_joined.data[(fila_aux + matrix_fila) * matriz_order + col_aux + matrix_column] = blocks[
                block_order * fila + col].data[matrix_fila * subMatrixOrder + matrix_column]
                tamano += 1        
        col += 1
Exemple #25
0
    def try_multiply(self):
        current_A = self.A_blocks[self.current_step]
        current_B = self.B_blocks[self.current_step]

        if current_A is None or current_B is None:
            return

        if self.current_step == 0:
            self.result_parcial = Cannon.Matrix(current_A.ncols,
                                                [0] * (current_A.ncols**2))

        product = matrix_multiply(current_A, current_B)
        self.result_parcial = matrix_add(self.result_parcial, product)
        self.current_step += 1

        if self.current_step == self.order:
            self.target.injectSubmatrix(self.result_parcial, self.row,
                                        self.col)
            return

        self.left.injectFirst(current_A, self.current_step)
        self.above.injectSecond(current_B, self.current_step)

        self.try_multiply()
Exemple #26
0
interface = Interface(640,695,100,600,"F.I.R.E. -MAIN_AUTO(0.1) TEST-",100)
interface.build()
pygame.init()
############################
GPIO.setmode(GPIO.BOARD)   # BOARD!!!
############################
# Initialize the devices   #
motorController = MotorController(12,29,31,33,35,26,100) #ENA,IN1,IN2,IN3,IN4,ENB,Velocity(from 0 to 100) 
ultrasoundSensorL = UltrasoundSensor(5,3) #TRIGG,ECHO
ultrasoundSensorF = UltrasoundSensor(11,7) #TRIGG,ECHO
ultrasoundSensorR = UltrasoundSensor(15,13) #TRIGG,ECHO
view = View(23,21) #LRServo,UDServo     [servoLR = ServoMotor(23)YELLOW, servoUD = ServoMotor(21)YELLOW]   
tempHumL = TempHumSensor(8) #DATA
tempHumR = TempHumSensor(10) #DATA
irSensor = IRSensor(19) #DATA
cannon = Cannon(37)
webcam = WebCam()
############################

#-#-#    MAIN  LOOP    #-#-#
textMov = 'MOVING: STOP'
textView = 'VIEW: CENTER'
textCannon = 'CANNON: STOPPED'
textTempL = '_'
textTempR = '_'
textDistL = '_'
textDistF = '_'
textDistR = '_'
run = True
motorController.initialize()
ultrasoundSensorL.initialize()
def matrix_split(M, block_order):
	order = M.ncols

    blocks = []

    nbl = order / block_order
    m = []
    
    for ind_by in range(nbl):
    	for ind_bx in range(nbl):
    		pos = (ind_bx * block_order) + (ind_by * (block_order * order))
    		for ind_c in range(block_order):
    			for inc in range(block_order):
    				m.append(M.data[pos + (ind_c * order) + inc])
    		blocks.append(Cannon.Matrix(block_order, m))
    		m = []
    
    return blocks
    
def list_split (M, block_order):
	order = len(M)
	
	blocks = []
	
	nbl = order / block_order
	m = []
	
	for ind_bx in range(nbl):
		for inc in range(block_order):
			m.append(M[(ind_bx * block_order) + inc])
Exemple #28
0
    timeslice = 0.05  # How many seconds should elapse per iteration?
    iterations = 288  # How many iterations should the simulation run for?
    # (notice that the full journey takes 14.416 seconds, so 145 iterations will
    # cover the whole thing when timeslice = 0.10)
    noiselevel = 30  # How much noise should we add to the noisy measurements?

    # These are arrays to store the data points we want to plot at the end.
    x = []
    y = []
    nx = []
    ny = []
    vx = []
    vy = []

    # Let's make a cannon simulation.
    c = Cannon(timeslice, noiselevel)

    for i in range(iterations):
        x.append(c.GetX())
        y.append(c.GetY())
        newestX = c.GetXWithNoise()
        newestY = c.GetYWithNoise()
        nx.append(newestX)
        ny.append(newestY)
        # Iterate the cannon simulation to the next timeslice.
        c.Step()
        vx.append(c.GetXVelocity())
        vy.append(c.GetYVelocity())

    # Plot all the results we got.
    pylab.plot(x, y, '-', nx, ny, ':')
Exemple #29
0
class FiringManager:

    def __init__(self):
        self.cannon = Cannon()
        self.missiles = []
        self.missileVelocities = []
        self.missileAccelerations = []
        self.wasPressed = 0
        self.initialPress = time.time()

    def displayFiringObjects(self,screen):

        self.cannon.draw(screen)


        for tMissile in self.missiles:
            tMissile.draw(screen)


    def update(self, dt):
        if pygame.mouse.get_pressed()[0] == 1:
            self.buttonPressed()

        if pygame.mouse.get_pressed()[0] == 0:
            self.buttonUnpressed()

        self.doPhysics(dt)

    def buttonPressed(self):

        if not self.wasPressed == 1:
            self.initialPress = time.time()
            self.wasPressed = 1

    def buttonUnpressed(self):
        if self.wasPressed == 1:

            timePressed = time.time() - self.initialPress

            #300 N per second pressed
            forceVector = self.cannon.getUnitVector() * (timePressed * 600)


            tMissile = Missile()
            tMissile.pos = (80, 360)

            self.missiles.append(tMissile)

            #2.5 kg Missiles
            self.missileAccelerations.append(forceVector/2.5)

            self.missileVelocities.append(Vec2d(0,0))

            self.wasPressed = 0

    def doPhysics(self, dt):

        toRemove = []

        i = 0

        for tMissile in self.missiles:

            tVelocity = self.missileVelocities[i]
            tAcc = self.missileAccelerations[i]

            tVelocity = tVelocity + (dt * tAcc)

            self.missileVelocities[i] = tVelocity


            tMissile.pos = (tMissile.pos[0]+(tVelocity.x * dt), tMissile.pos[1]-(tVelocity.y * dt) )
            tMissile.rect.x = tMissile.pos[0]
            tMissile.rect.y = tMissile.pos[1]


            if not self.cannon.rect.colliderect(tMissile.rect):
                #gravity
                self.missileAccelerations[i] = Vec2d(0,-50)

            if tMissile.pos[1] > 500:
                toRemove.append((tMissile, tVelocity, tAcc))

            i = i +1

        for x in toRemove:
            self.missiles.remove(x[0])
            self.missileAccelerations.remove(x[2])
            self.missileVelocities.remove(x[1])
def matrix_add(A, B):
    order = A.ncols
    C = Cannon.Matrix(order, [])

	for i in range(order ** 2):
		C.data.append(A.data[i] + B.data[i])
def matrix_vertical_shift(M, block_order):
	order = M.ncols
	retval = Cannon.Matrix(order, [])
def gen_matrix(ini, order):
    return Cannon.Matrix(order, xrange(ini, ini + order ** 2))