Last active
May 23, 2019 23:35
-
-
Save elgartoinf/08ffaad727b0807d24ed1d74f9cb5f32 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pygame | |
import math | |
ANCHO=800 | |
ALTO=500 | |
ROJO=[255,0,0] | |
BLANCO=[255,255,255] | |
NEGRO=[0,0,0] | |
VERDE=[0,255,0] | |
CENTRO=[int(ANCHO/2),int(ALTO/2)] | |
####### dibujar ####### | |
#pygame.draw.circle(pantalla, color, posicion, ancho) | |
#pygame.draw.line(pantalla,color,posicioninicial,posicionfinal) | |
#pygame.draw.polygon(pantalla,color,listadelistadeposiciones) | |
###### reloj ##### | |
#reloj= pygame.time.Clock() | |
#reloj.tick(tiempoensegundos) | |
""" | |
llamar a la variable de pantalla como: pantalla | |
funcion para dibujar el plano carteciano dando lo siguiente | |
centro: centro del plano cartesiano | |
""" | |
def dibujar_plano_carteciano(CENTRO): | |
xini=[0,CENTRO[1]] | |
xfin=[ANCHO,CENTRO[1]] | |
yini=[CENTRO[0],0] | |
yfin=[CENTRO[0],ALTO] | |
pygame.draw.line(pantalla,ROJO,xini,xfin) | |
pygame.draw.line(pantalla,ROJO,yini,yfin) | |
""" | |
funcion para convertir de pantalla en carteciano dando lo siguiente: | |
centro: centro del plano carteciano en posicion de pantalla | |
punto: punto que se desea convertir | |
retorna: lista con x,y en cartesiano | |
""" | |
def convertir_carteciano(centro, punto): | |
xp=punto[0]+centro[0] | |
yp=centro[1]-punto[1] | |
return[xp,yp] | |
""" | |
funcion para rotar un punto sin punto fijo dado lo siguiente: | |
x: posicion en x del punto | |
y: posicion en y del punto | |
angulo: angulo que se desea rotar | |
retorna una tupla con los puntos rotados | |
""" | |
def rotacion_sin_punto_fijo(x,y,angulo): | |
nuevaX = int(x * math.cos(math.radians(angulo)) - y * math.sin(math.radians(angulo))) | |
nuevaY = int(x * math.sin(math.radians(angulo)) + y * math.cos(math.radians(angulo))) | |
return (nuevaX,nuevaY) | |
""" | |
funcion para trasladar un punto a otro dado lo siguiente: | |
punto: punto que se quiere trasladar | |
valorTraslado: punto donde se quiere trasladar | |
retorna tupla con los puntos trasladados | |
""" | |
def trasladar(punto, valorTraslado): | |
return (valorTraslado[0]-punto[0],valorTraslado[1]-punto[1],) | |
""" | |
funcion para escalar un punto dado lo siguiente: | |
punto: punto que se quiere escalar | |
valorEscalar: lista con los valores para escalar | |
retorna tupla con los puntos escalados | |
""" | |
def escalar(punto,valorEscalar): | |
return (valorEscalar[0]*punto[0],valorEscalar[1]*punto[1],) | |
""" | |
funcion para rotación con punto fijo anti horaria dado lo siguiente: | |
punto: punto que se quiere rotar | |
puntoFijo: punto sobre el que se quiere rotar | |
angulo: angulo de rotación | |
retorna una lista con los puntos rotados | |
""" | |
def rotacion_punto_fijo_anti_horaria(punto,puntoFijo,angulo): | |
anguloRadianes = math.radians(-angulo) | |
return [ | |
int(math.cos(anguloRadianes)*(punto[0]-puntoFijo[0])-math.sin(anguloRadianes)*(punto[1]-puntoFijo[1]) + puntoFijo[0]), | |
int(math.sin(anguloRadianes)*(punto[0]-puntoFijo[0])+math.cos(anguloRadianes)*(punto[1]-puntoFijo[1]) + puntoFijo[1]) | |
] | |
""" | |
funcion para rotación con punto fijo horaria dado lo siguiente: | |
punto: punto que se quiere rotar | |
puntoFijo: punto sobre el que se quiere rotar | |
angulo: angulo de rotación | |
retorna una lista con los puntos rotados | |
""" | |
def rotacion_punto_fijo_horaria(punto,puntoFijo,angulo): | |
anguloRadianes = math.radians(angulo) | |
return [ | |
int(math.cos(anguloRadianes)*(punto[0]-puntoFijo[0])-math.sin(anguloRadianes)*(punto[1]-puntoFijo[1]) + puntoFijo[0]), | |
int(math.sin(anguloRadianes)*(punto[0]-puntoFijo[0])+math.cos(anguloRadianes)*(punto[1]-puntoFijo[1]) + puntoFijo[1]) | |
] | |
""" | |
función para convertir de cartecianas en polares dado lo siguiente: | |
x: posicion en x | |
y: posicion en yi | |
retorna tupla con el r y angulo | |
""" | |
def convertir_cateciano_polares(x, y): | |
rho = math.sqrt(x**2 + y**2) | |
phi = math.atan2(y, x) | |
return(int(rho), int(phi)) | |
""" | |
función para convertir de polares en cartecianas dado lo siguiente: | |
rho: r de la polar | |
angulo: angulo | |
retorna tupla con x,y | |
""" | |
def convertir_polares_carteciano(rho, angulo): | |
x = rho * math.cos(angulo) | |
y = rho * math.sin(angulo) | |
return(int(x), int(y)) | |
if __name__== '__main__': | |
pygame.init() | |
pantalla=pygame.display.set_mode([ANCHO,ALTO]) | |
dibujar_plano_carteciano(CENTRO) | |
pygame.display.flip() #refrescar | |
fin=False | |
while not fin: | |
for event in pygame.event.get(): | |
#eventos | |
#si oprime el mouse | |
#if event.type == pygame.MOUSEBUTTONDOWN: | |
#si oprime una tecla | |
#if event.type == pygame.KEYDOWN: | |
#si es izquierda | |
# if event.key == pygame.K_RIGHT: | |
#si es derecha | |
# if event.key == pygame.K_LEFT: | |
#si es abajo | |
# if event.key == pygame.K_DOWN: | |
# si es arriba | |
# if event.key == pygame.K_UP: | |
if event.type == pygame.QUIT: | |
fin = True |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment