'''
Created on 27.5.2014
@author: kai
'''
if __name__ == '__main__':
pass
def logiikka(kartta):
i=1;
apukartta = [0,0,0]
#tehdään apukartta oikean kokoiseksi
while(len(apukartta))<(len(kartta)):
apukartta.append(0);
for i in range (len(kartta)-1):
apukartta[i]= (kartta[i-1]+kartta[i+1]);
for i in range (len(kartta)):
kartta[i]= apukartta[i];
def piirto(kartta):
i=0;
for i in range (len(kartta)):
print kartta[i];
print"\n";
def main():
#Alkuarvot 1-ulotteiseen karttaan
kartta = [0,0,60,0,0,0,32,0,22,22];
#while True:
apu=0;
while(apu<4):
piirto(kartta);
logiikka(kartta);
apu=apu+1;
# -*- coding: utf-8 -*-
import pygame
import time
naytto = pygame.display.set_mode((640, 400))
pygame.display.set_caption("Piirtäminen")
def logiikka(kartta):
for tapahtuma in pygame.event.get():
if tapahtuma.type == pygame.QUIT:
exit()
i=1;
apukartta = [0,0,0]
#tehdään apukartta oikean kokoiseksi
while(len(apukartta))<(len(kartta)):
apukartta.append(0);
for i in range (len(kartta)-1):
apukartta[i]= (kartta[i-1]+kartta[i+1])/2;
for i in range (len(kartta)):
kartta[i]= apukartta[i];
def piirto(kartta):
i=0;
for i in range (len(kartta)):
print kartta[i];
print"\n";
naytto.fill((255, 255, 255))
#piirretään viivoja kartasta
pygame.draw.line(naytto,(23,32,2),(0,0),(400,400));
for i in range (len(kartta)-1):
pygame.draw.line(naytto, (0, 0, 0), (0, 10*i), (50*kartta[i], 10*i));
# taikka neliöitä, joiden vari riippuu arvosta
#pygame.draw.rect(naytto,(kartta[i]*10,0,0), (0+i*50, 0, 50,50))
# näytetään kuva
pygame.display.flip()
time.sleep(1);
def main():
kartta = [0,0,6,3,2,1,2,0,2,2];
while True:
tapahtuma = pygame.event.poll()
if tapahtuma.type == pygame.QUIT:
break
piirto(kartta);
logiikka(kartta);
#tyhjätään näyttö
Kissa liikkuu vakionopeudella suoraviivaisesti (pitkin y-akselia). Koira lähtee kohti kissaa vakionopeudella. Millaisen radan koira kulkee?
Koodi laskee koiran koordinaatit, jotka voi piirtää koordinaatistoon.
import math # Tarvitaan atan2 -funktiota
import matplotlib.pyplot as plt # Kuvaajan piirtokirjasto
def dist(x1,y1,x2,y2):
dx = x2 - x1;
dy = y2 - y1;
d = (dx**2+dy**2)**(0.5);
print("dist on :",d)
return d;
def kulma(x1,y1,x2,y2):
#Palauttaa kahden pisteen p1 -> p2 välisen kulman radiaaneina.
dx = x2-x1;
dy = y2-y1;
#print("dy: ",dy," ja dx: ",dx,"kulma on",math.atan2(dy,dx))
return(math.atan2(dy,dx))
if __name__ == '__main__':
#Alkuarvot
x = [] # Koiran koordinatit
y = []
catx = [] # Kissan koordinaatit
caty = []
cat_y = 0 # Kissan alkupaikka
cat_x = 0
cat_vy = 1 # kissan nopeus y-suunnassa
cat_vx = -0.2 # kissan nopeus x-suunnassa
dog_x = 2 # Koiran alkupaikka
dog_y = 3
dog_v = 2.1 # koiran nopeus
dog_kulma = 0 # koiran suunta
#Simulaation arvot
dt = 0.01 # Askel
end = 0.01 # millä etäisyyserolla lopetetaan
#print("kulma on ",kulma(dog_x,dog_y,cat_x,cat_y))
#print("kissa=(",cat_x,",",cat_y,")")
#print("koira=(", dog_x, ",", dog_y, ")")
x.append(dog_x)
y.append(dog_y)
dist(dog_x,dog_y,cat_x,cat_y)
dog_kulma = kulma(dog_x,dog_y,cat_x,cat_y)
while(dist(dog_x,dog_y,cat_x,cat_y) > end):
dog_kulma = kulma(dog_x,dog_y,cat_x,cat_y)
#koordinaattien päivitys
dog_x = dog_x + dog_v * dt * math.cos(dog_kulma)
dog_y = dog_y + dog_v * dt * math.sin(dog_kulma)
x.append(dog_x)
y.append(dog_y)
cat_y = cat_y + cat_vy * dt
cat_x = cat_x + cat_vx * dt
catx.append(cat_x)
caty.append(cat_y)
#print("kissa=(",cat_x,",",cat_y,")")
#print("koira=(", dog_x, ",", dog_y, ")")
#Piirtäminen
plt.plot(x,y,marker="o",color='tab:green')
plt.plot(catx,caty, marker="o", label = "Kissa")
plt.show()