Σημειωματάριο μαθήματος 20ης Δεκ. 2017

Σήμερα σχεδιάσαμε ένα Χριστουγεννιάτικο δέντρο με python.

In [7]:
import matplotlib.pyplot as plt
import math
import random

def f(x):
    return 1/(x-0.1)

def g(x): return f(-x)


def plotfunction(a, b, f, N):
    h = (b-a)/N
    x = [a+i*h for i in range(N+1)]
    y = [f(t) for t in x]
    plt.plot(x, y, '#8B4513')
    
plt.axes().set_aspect('equal')
plt.axis([-7, 7, 0, 20])
plt.axis('off')


plotfunction(0.17, 3, f, 200)
plotfunction(-3, -0.17, g, 200)


def plotparametric(a, b, fx, fy, N, color):
    h = (b-a)/N
    t = [a+i*h for i in range(N+1)]
    x = [fx(tt) for tt in t]
    y = [fy(tt) for tt in t]
    plt.plot(x, y, color)
    
def circle(a, b, r, color):
    def fx(t):
        return a+r*math.cos(t)
    def fy(t):
        return b+r*math.sin(t)
    plotparametric(0, 2*math.pi, fx, fy, 100, color)

T = 220*4/9
L = 2*math.pi/T
def fx(t):
    return (5-5/220*t+ 0.3*math.cos(L*t))*math.cos(t)

def fy(t):
    return 3 + 0.05*t + 0.5*math.sin(t)

plotparametric(0, 220, fx, fy, 2000, '#00FF00')

for t in range(0, 220, 10):
    circle(fx(t), fy(t), 0.3, color='r')
#circle(fx(10), fy(10), 0.3, color='r')

def star(a, b, u, v, color):
    x = [a]
    y = [b]
    c = math.cos(4*math.pi/5)
    s = -math.sin(4*math.pi/5)
    for i in range(5):
        xlast = x[-1]
        ylast = y[-1]
        xnext = xlast+u
        ynext = ylast+v
        x.append(xnext)
        y.append(ynext)
        unew = c*u+s*v
        vnew = -s*u+c*v
        u, v = unew, vnew
    plt.plot(x, y, color)
    
star(fx(220), fy(220), 0.8, 2, '#FFFF00')

plt.text(-7, 17, 'Καλά Χριστούγεννα!', color='#FF0000', fontsize=14, fontweight='bold')
plt.text(-10, -3, 'Τμήμα Μαθηματικών και Εφαρμ. Μαθηματικών\n     Γλώσσα Προγραμματισμού Ι - Τμ. Α\n                 20 Δεκ 2017')
plt.show()