You are on page 1of 4

print("SIMULASI FISIKA GERAK PENDULUM SEDERHANA")

print("KELOMPOK = 9")

print("NAMA ANGGOTA = Selsa Sururiyah Sya’baniyah/1306621036, Dila Sabila/1306621044, isyah


Nur Hikmah/1306621062")

import pygame

import math

import time

pygame.init()

class bob(object):

def __init__(self,point):

self.x = point[0]

self.y = point[1]

def draw(self,bg):

pygame.draw.rect(bg,(0,0,0), [0,0,1000,10])

pygame.draw.circle(bg,(0,0,0),[(lebar/2),10],10)

pygame.draw.lines(bg,(0,0,0),False,[(lebar/2,20),(self.x,self.y + 19)],2)

pygame.draw.circle(bg,(0,0,0),(self.x,self.y + 19),23)

pygame.draw.circle(bg,(255,0,0),(self.x,self.y + 19),20)

def move_bob():

bandul.x= round (lebar/2 + length*math.sin(angle),4)

bandul.y= round (length*math.cos(angle),4)

def length_px():

length = math.sqrt(math.pow(lebar/2-bandul.x,2)+math.pow(bandul.y,2))

return (length)

def angle_tali():

angle = math.asin((bandul.x-lebar/2)/length)

return (angle)

def sudut():
suduttali = round((angle*180/math.pi),2)

return (suduttali)

def length_m():

tali = round((length*0.00189775036),2)

return (tali)

def nilaiperiode():

periode = round(2*3.14*math.sqrt(tali/9.8),2)

return (periode)

def nilaifrekuensi():

frekuensi = round((1/periode),3)

return (frekuensi)

def refresh():

layar.blit(background,(0,0))

bandul.draw(layar)

layar.blit(cetakpanjang,[100,440])

layar.blit(cetakperiode,[100,470])

layar.blit(cetakfrekuensi,[100,500])

layar.blit(cetaksudut,[100,410])

pygame.display.update()

move = False

closed = False

clock = pygame.time.Clock()

black = (0,0,0)

lebar, tinggi = (1000,600)

layar = pygame.display.set_mode((lebar,tinggi))

background = pygame.image.load('bg1.jpeg')

font1 = pygame.font.Font(None,30)

pygame.display.set_caption('KELOMPOK 9 - PROJECT SIMULASI FISIKA GERAK PENDULUM


SEDERHANA')

bandul = bob((lebar/2,150))
tali = round(130*0.00189775036,3)

periode = 0

frekuensi = 0

suduttali = 0

while not closed:

cetakpanjang = font1.render(f'panjang = {tali} m', True,black)

cetakperiode = font1.render(f'periode = {periode} s', True,black)

cetakfrekuensi = font1.render(f'frekuensi = {frekuensi} Hz', True,black)

cetaksudut = font1.render(f'sudut = {suduttali} derajat', True,black)

clock.tick(120)

for event in pygame.event.get():

if event.type == pygame.QUIT:

closed = True

if event.type == pygame.MOUSEBUTTONDOWN:

move = False

bandul = bob(pygame.mouse.get_pos())

length = length_px()

angle = angle_tali()

suduttali = sudut()

tali = length_m()

periode = '-'

frekuensi = '-'

start_time = time.time()

elif event.type == pygame.MOUSEBUTTONUP:

matime = time.time() - start_time

xx,yy = pygame.mouse.get_pos()

hl = math.sqrt(((xx-bandul.x)/length)**2+((yy-bandul.y)/length)**2)+0.01

vel = math.asin(((xx-bandul.x)/hl)*(hl/(matime*10000+1)))

move = True

periode = nilaiperiode()

frekuensi = nilaifrekuensi()
pygame.display.update()

if move:

acc = (-0.000981 * math.sin(angle))/(length*0.0022)

vel += acc

vel *= 0.9997

angle += vel

move_bob()

refresh()

pygame.quit()

You might also like