Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: UTF-8 -*-
- """
- Balistica
- Autor: GabrielBap <[email protected]>
- Tipo: Física
- Descrição: Informa a distância horizontal quem um projétil atingiu baseado na força aplicada, força da gravidade e ângulo da força. Também exibe a trajetória em uma janela pygame.
- Complexidade:
- Pior Caso: 0(1)
- Melhor Caso: 0(1)
- Referências:
- [1]http://www.algosobre.com.br/fisica/balistica-e-lancamento-de-projetil.html
- """
- import pygame
- from time import time
- from math import pi, sin, cos, radians
- def simula_tiro(angle, forca, gravidade, startY):
- largura, altura = 1200, 900
- #Pygame stuff
- tela = pygame.display.set_mode((largura, altura))
- tela.fill((255,255,255))
- #End of Pygame stuff
- angleR = radians(angle)
- start = time() # tempo inicial do tiro
- # Define os vetores de força vertical e horizontal
- VetorVertical = sin(angleR) * forca
- VetorHorizontal = cos(angleR) * forca
- # Pow!
- Y = startY
- X = 0
- while Y > 0: # Enquanto a bala não cair...
- agora = time()
- sleapsedTime = agora - start # Equivalente à variação de tempo
- X = VetorHorizontal * sleapsedTime # Distância atual em X
- Y = startY + (VetorVertical * sleapsedTime) - (gravidade * (sleapsedTime**2)) # Distância atual em Y
- #Pygame
- pygame.draw.circle(tela, (0,0,0),(X,altura-Y),3)
- pygame.display.update()
- # Omitir para ver o rastro:
- tela.fill((255,255,255))
- #End of Pygame stuff
- return angle, X, Y
- forca = float(raw_input("Qual será a força? "))
- gravidade = float(raw_input("Qual será a força da gravidade? "))
- startY = float(raw_input("Qual será a altura do canhão? "))
- angle = float(raw_input("Qual será o ângulo? (Opcional) "))
- dados = simula_tiro(angle, forca, gravidade, startY)
- resultado = "Ângulo = %i\n X = %.5f\n Y = %.5f\n\n" % (dados[0], dados[1], dados[2])
- print resultado
- if raw_input("Gostaria de salvar os resultados?(S/N) ") == "S":
- arquivo = open("Resultados-Balistica.txt","w")
- arquivo.write(resultado)
- arquivo.close()
Advertisement
Add Comment
Please, Sign In to add comment