Esempio n. 1
0
class SFTaxiShader(sf.Drawable):
	def __init__(self, P):
		sf.Drawable.__init__(self)
		self.quad=		Quad()
		self.shader=	Shader(P)
		self.states=	sf.RenderStates(shader=self.shader)

	def draw(self, target,states):
		self.shader.set_parameter("iResolution", target.size )
		self.quad.align(target)
		target.draw(self.quad,self.states)

	def corners(self): return self.quad.corners()
Esempio n. 2
0
class SFTaxiShader(sf.Drawable):
    def __init__(self, P):
        sf.Drawable.__init__(self)
        self.quad = Quad()
        self.shader = Shader(P)
        self.states = sf.RenderStates(shader=self.shader)

    def draw(self, target, states):
        self.shader.set_parameter("iResolution", target.size)
        self.quad.align(target)
        target.draw(self.quad, self.states)

    def corners(self):
        return self.quad.corners()
Esempio n. 3
0
class Background(sf.Drawable):
	def __init__(self):
		sf.Drawable.__init__(self)
		self.quad=		Quad()
		self.shader=	sf.Shader.from_file(fragment='portal.frag')
		self.states=	sf.RenderStates(shader=self.shader)

	def draw(self, target,states=None):
		self.quad.align(target)
		target.draw(self.quad,self.states)
		self.shader.set_parameter("iResolution", target.view.size )
		self.shader.set_parameter("view_center", target.view.center )

	def corners(self):
		return self.quad.corners()
Esempio n. 4
0
def main():
    print('Welcome to PyQuad. Please enter the coefficients of your equation.')
    print(u'f(x)=ax\u00b2+bx+c')
    a = raw_input('Input a: ')
    b = raw_input('Input b: ')
    c = raw_input('Input c: ')
    q = Quad.Quadratic(a, b, c)
    while True:
        choice = raw_input(
            'Do you want info(I), graph(G) or evaluation(E) ?\n> ')
        while True:
            if choice.lower() == 'i':
                info(q)
                break
            elif choice.lower() == 'g':
                graph(q)
                break
            elif choice.lower() == 'e':
                evaluation(q)
                break
            else:
                print('Input i, g or e')
                break
        choice = raw_input('Quit or Main Menu (Q, M)?\n> ')
        if choice.lower() == 'q':
            break
Esempio n. 5
0
def main():
    pygame.init()
    pygame.display.set_caption("Quad Tree Visualisation - Bit-Sahil04")
    width, height = RESOLUTION
    clock = pygame.time.Clock()
    win.fill(BG_COLOR)
    quad_tree = Quad.Quad((0, 0, width, height), 1)
    points = set()
    lmb = False
    rmb = False
    spawn_point_count = 4

    while True:
        win.fill(BG_COLOR)

        for e in pygame.event.get():
            if e.type == pygame.QUIT:
                exit()
            if pygame.mouse.get_pressed(3)[0] and not lmb:
                lmb = True
                rp = pygame.mouse.get_pos()
                # generate random velocity of point except 0
                for i in range(spawn_point_count):
                    p = Point(3, rp, (random.randint(-1, 2) or 1, random.randint(-1, 2) or 1))
                    p.quadrant = quad_tree.insert_point(p)
                    points.add(p)
            else:
                lmb = False
            if pygame.mouse.get_pressed(3)[2]:
                rmb = True
                for i in points:
                    mx, my = pygame.mouse.get_pos()
                    dx = 0 + ((mx - i.pos[0]) / abs(mx - i.pos[0] or 1))
                    dy = 0 + ((my - i.pos[1]) / abs(mx - i.pos[0] or 1))
                    i.dv = (dx, dy)
            else:
                rmb = False

        for num, i in enumerate(points):
            i.update(quad_tree)
            pygame.draw.circle(win, POINT_COLOR, i.pos, i.radius)

        show_text(f"{1000 / clock.tick(60) :.0f}", 100, 20, win, size=15)
        show_text(f"{(len(points))}", 100, 40, win, size=15)
        redraw_quads(win, quad_tree)
        pygame.display.flip()
Esempio n. 6
0
def updateFunc(pvec, t, dt):
    acc = lambda x1, x2, m: -G * m * (x1 - x2) / (Vector.magnitude(x1 - x2)**(
        3) + Vector.magnitude(x1 - x2) * a**2)
    pquad = Quad(2 * maxDist(pvec), Vector([0, 0]), pvec)
    quad = createTree(pquad)
    quadlist.append(quad)
    retvec = Vector([pvec[0]] * len(pvec))
    for p in pvec:
        force = Vector([0, 0])
        qlist = []
        quad.subqlist(qlist)
        index = 0
        while index < len(qlist):
            acc = lambda x1, x2, m: -G * m * (x1 - x2) / (Vector.magnitude(
                x1 - x2)**(3) + Vector.magnitude(x1 - x2) * a**2)
            if len(qlist[index].pList) == 0:
                index += 1
            elif len(qlist[index].pList) == 1:
                try:
                    force += acc(p.pos, qlist[index].pList[0].pos,
                                 qlist[index].mass)
                except ZeroDivisionError:
                    force += Vector([0, 0])
                index += 1
            else:
                if qlist[index].len / Vector.magnitude(
                        p.pos - qlist[index].com) < theta:
                    if p.inQuad(qlist[index]):
                        q = qlist[index]
                        force += acc(p.pos, q.com - p.mass * p.pos / q.mass,
                                     q.mass - p.mass)
                    else:
                        force += acc(p.pos, qlist[index].com,
                                     qlist[index].mass)
                    index += qlist[index].numQBelow()
                else:
                    index += 1
        retvec[pvec.index(p)] = Particle(p.mass, p.vel + dt * force, force)
    return retvec
Esempio n. 7
0
	def __init__(self):
		sf.Drawable.__init__(self)
		self.quad=		Quad()
		self.shader=	sf.Shader.from_file(fragment='portal.frag')
		self.states=	sf.RenderStates(shader=self.shader)
Esempio n. 8
0
	def __init__(self, P):
		sf.Drawable.__init__(self)
		self.quad=		Quad()
		self.shader=	Shader(P)
		self.states=	sf.RenderStates(shader=self.shader)
Esempio n. 9
0
# Instruccion actual, se actualiza al declarar una figura a dibujar.
instr_actual = ""
# Num args, el numero de argumentos en la llamada de funcion
num_args = 0
# Asignacion es expresion o input
asig_input = False
# Tabla Semantica para Resolver el tipo de una operacion
tabla_semantica = tb.TablaSemantica()
# Pila de operadores.
pila_operadores = []
# Pila de operandos.
pila_operandos = []
# Pila de Saltos
pila_saltos = []
# Estructura para genera quadruplos
quads = q.Quad()
# Pila de variables dimensionadas para tener casos A[B[C[1]]]
var_dim = []
# Cantidad de direcciones para cada tipo dirBase, entero, flotante, tmp, ptr, cte.
mapa = gd.GeneradorDireccion(5000, 1000, 1000, 1000, 500, 500)
# Tabla de constantes
tabla_constantes = {}


# DEFINICION DE LAS REGLAS DE LA GRAMATICA
def p_programa(p):
    '''programa : MODULE CTE_STR creaDirFunc PUNTCOM ajustes var_func tipo_main MAIN actualiza_id crea_func bloque_func'''


# Funcion para rellenar el goto del modulo main.
def p_tipo_main(p):
Esempio n. 10
0
#!/usr/bin/python
'''
Created on Oct 23, 2013

@author: drnorris
'''

from Quad import *
import sys, os

MYNAME=sys.argv[0]
MYPATH=os.path.realpath(__file__)
MYDIR=os.path.dirname(os.path.abspath(__file__))
MYCWD=os.getcwd()

#print "sys.argv[0] is: " + MYNAME
#print "os.path.realpath(__file__) is: " + MYPATH
#print "os.path.dirname(os.path.abspath(__fiel__)) is: " + MYDIR
#print "os.getcwd() is: " + MYCWD

if __name__ == '__main__':
    quad = Quad(360, (0,0), 0)
    quad.insertRandStars(100)
    quad.update()
    print "getObjectCount is: " + str(quad.getObjectCount())

    quad.printObjects()

    #for object in quad.getObjectList():
    #    print object
Esempio n. 11
0
 def __init__(self, P):
     sf.Drawable.__init__(self)
     self.quad = Quad()
     self.shader = Shader(P)
     self.states = sf.RenderStates(shader=self.shader)