Ugrás a fő tartalomra

Rajzolás pythonnal

 Rajzolás pythonnal










##---- Pillangó egyszínű folyamatos vonallal

import numpy as np

import matplotlib.pyplot as plt

t=np.linspace(0,2*np.pi,300)


x = np.sin(t)*(np.exp(np.cos(t))-2*np.cos(4*t))  

y = np.cos(t)*(np.exp(np.cos(t))-2*np.cos(4*t))  


plt.plot(x,y,color='purple',linewidth=2)

plt.plot(-x,y,color='orange',linewidth=2)


plt.title("Pillangó egyszínű folyamatos vonallal",fontsize=14)

plt.axis("off")

plt.axis("equal")

plt.show()


## ---- Pillangó mintázat pontokkal és színátmenettel

import numpy as np

import matplotlib.pyplot as plt


t = np.linspace(0, 2 * np.pi, 300)


# Paraméterek a pillangó alakhoz

x = np.sin(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))  

y = np.cos(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))


# Színátmenet létrehozása

colors = np.linspace(0, 1, len(t))


# Pillangó mintázat pontokkal és színátmenettel

plt.scatter(x, y, c=colors, cmap='plasma', s=10, edgecolors='none')


# Cím és formázás

plt.title("Színátmenetes pillangó mintázat", fontsize=14)

plt.axis("off")

plt.axis("equal")

plt.show()



## -------------- Pillangó mintázat kitöltése színátmenettel

import numpy as np

import matplotlib.pyplot as plt


t = np.linspace(0, 2 * np.pi, 300)


# Paraméterek a pillangó formához

x = np.sin(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))  

y = np.cos(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))


# Színátmenet létrehozása a belső területhez

colors = np.linspace(0, 1, len(t))


# Pillangó mintázat kitöltése színátmenettel

plt.fill(x, y, color='green', alpha=0.2)    # Alap szín, átlátszósággal

plt.fill(-x, y, color='orange', alpha=0.2)  # A másik szárny kitöltése


# Cím és formázás

plt.title("Belső terület színezése", fontsize=14)

plt.axis("off")

plt.axis("equal")

plt.show()



##------------  Szárnyak kitöltése különböző színekkel

import numpy as np

import matplotlib.pyplot as plt


# Paraméterek

t = np.linspace(0, 2 * np.pi, 300)


# Paraméterek a pillangó formához

x = np.sin(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))  

y = np.cos(t) * (np.exp(np.cos(t)) - 2 * np.cos(4 * t))


# Külön választjuk a bal és jobb oldali szárnyakat:

x_left = x[x >= 0]

y_left = y[x >= 0]


x_right = x[x < 0]

y_right = y[x < 0]


# Szárnyak kitöltése különböző színekkel

plt.fill(x_left, y_left, color='green', alpha=0.7)  # Bal szárny

plt.fill(x_right, y_right, color='orange', alpha=0.7)  # Jobb szárny


# Cím és formázás

plt.title("Két szárny különböző színekkel", fontsize=14)

plt.axis("off")

plt.axis("equal")

plt.show()


## ----------------------- Gyönyörű Koch-hópehely létrehozása.

import numpy as np

import matplotlib.pyplot as plt


def koch_curve(p1, p2, depth):

    """Koch görbe rekurzív létrehozása két pont között."""

    if depth == 0:

        return [p1, p2]


    p1 = np.array(p1)

    p2 = np.array(p2)

    v = (p2 - p1) / 3

    p3 = p1 + v

    p5 = p1 + 2 * v


    angle = np.pi / 3

    rotation_matrix = np.array([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]])

    p4 = p3 + np.dot(rotation_matrix, v)


    return (koch_curve(p1, p3, depth-1)[:-1] +

            koch_curve(p3, p4, depth-1)[:-1] +

            koch_curve(p4, p5, depth-1)[:-1] +

            koch_curve(p5, p2, depth-1))


def koch_snowflake(order, scale=10):

    """Gyönyörű Koch-hópehely létrehozása."""

    # Kezdő háromszög csúcsai

    p1 = (0, 0)

    p2 = (scale, 0)

    p3 = (scale/2, np.sqrt(3) * scale / 2)


    # Koch-fraktál alkalmazása a három oldalra

    points = (koch_curve(p1, p2, order)[:-1] +

              koch_curve(p2, p3, order)[:-1] +

              koch_curve(p3, p1, order))


    # További ágak generálása a fő hópehelyen belül

    snowflake_x, snowflake_y = zip(*points)


    plt.figure(figsize=(8, 8))

    plt.plot(snowflake_x, snowflake_y, color='blue', linewidth=2)


    # Színezés

    plt.fill(snowflake_x, snowflake_y, color='deepskyblue', alpha=0.7)


    # Háttér színezése

    plt.gca().set_facecolor('midnightblue')


    # Cím és formázás

    plt.title("Még Szebb Hópehely Fraktál", fontsize=16, fontweight='bold', color='white')

    plt.axis('equal')

    plt.axis('off')

    plt.show()


# Hópehely generálása magasabb részletességgel

koch_snowflake(order=5)


## --------------------  Sierpiński háromszög fraktál

import matplotlib.pyplot as plt

import numpy as np


# Sierpiński háromszög fraktál

def sierpinski_triangle(x1, y1, x2, y2, x3, y3, level):

    if level == 0:

        # Alap háromszög kirajzolása

        plt.fill([x1, x2, x3], [y1, y2, y3], color='blue', edgecolor='black')

    else:

        # A három csúcs középpontjainak kiszámítása

        xm1 = (x1 + x2) / 2

        ym1 = (y1 + y2) / 2

        xm2 = (x2 + x3) / 2

        ym2 = (y2 + y3) / 2

        xm3 = (x3 + x1) / 2

        ym3 = (y3 + y1) / 2

        

        # Rekurzív hívás a három kisebb háromszögre

        sierpinski_triangle(x1, y1, xm1, ym1, xm3, ym3, level - 1)

        sierpinski_triangle(xm1, ym1, x2, y2, xm2, ym2, level - 1)

        sierpinski_triangle(xm3, ym3, xm2, ym2, x3, y3, level - 1)


# Paraméterek

level = 4  # Rekurzió szintje


# Háromszög csúcsai

x1, y1 = 0, 0

x2, y2 = 1, 0

x3, y3 = 0.5, np.sqrt(3) / 2


# Sierpiński háromszög fraktál generálása

plt.figure(figsize=(6, 6))

sierpinski_triangle(x1, y1, x2, y2, x3, y3, level)

plt.title("Sierpiński Háromszög Fraktál", fontsize=14)

plt.axis('equal')

plt.axis('off')

plt.show()


##----------

import numpy as np

import matplotlib.pyplot as plt


# Paraméterek

t = np.linspace(0, 2 * np.pi, 1000)


# Szív formájú egyenletek (simított változat)

x = 16 * np.sin(t)**3

y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)


# Ábrázolás

plt.figure(figsize=(6, 6))

plt.plot(x, y, color='darkred', linewidth=2)  # Sötétpiros vonal

plt.fill(x, y, color='pink', alpha=0.7)  # Rózsaszín kitöltés magasabb átlátszósággal

plt.title("Szép Szív Forma", fontsize=16, fontweight='bold', color='darkred')

plt.axis('equal')

plt.axis('off')


# Árnyékolás hozzáadása

plt.gca().set_facecolor('lightpink')  # Háttér színezése világos rózsaszínre


plt.show()


##--------------------------- Rozetta 

import numpy as np

import matplotlib.pyplot as plt


# Paraméterek

R = 10  # Nagy kör sugara

r = 3   # Kis kör sugara

d = 6   # Középponttól való eltérés (kitérés)

t = np.linspace(0, 20 * np.pi, 1000)  # Paraméteres t időintervallum


# Rozetta egyenletek

x = (R - r) * np.cos(t) + d * np.cos((R - r) / r * t)

y = (R - r) * np.sin(t) - d * np.sin((R - r) / r * t)


# Ábrázolás

plt.figure(figsize=(6, 6))

plt.plot(x, y, color='purple', linewidth=2)

plt.title("Rozetta Minta", fontsize=14, fontweight='bold', color='purple')

plt.axis('equal')

plt.axis('off')


# Háttérszín beállítása

plt.gca().set_facecolor('lavender')

plt.show()



##--------------------------  Barnsley-páfrány 

import matplotlib.pyplot as plt

import numpy as np


# Barnsley-páfrány generálás

def barnsley_fern(iterations):

    # Kezdeti pont

    x, y = 0, 0

    

    # Üres listák a koordináták tárolására

    x_vals = []

    y_vals = []

    

    for _ in range(iterations):

        # Véletlenszerűen választott transformáció

        r = np.random.rand()

        

        if r < 0.01:

            # A bal alsó kanyar

            x, y = 0, 0.16 * y

        elif r < 0.86:

            # A bal alsó szárny

            x, y = 0.85 * x + 0.04 * y, -0.04 * x + 0.85 * y + 1.6

        elif r < 0.93:

            # A jobb felső szárny

            x, y = 0.2 * x - 0.26 * y, 0.23 * x + 0.22 * y + 1.6

        else:

            # A jobb alsó kanyar

            x, y = -0.15 * x + 0.28 * y, 0.26 * x + 0.24 * y + 0.44

        

        # Koordináták hozzáadása a listákhoz

        x_vals.append(x)

        y_vals.append(y)

    

    return x_vals, y_vals


# Paraméterek

iterations = 100000  # Iterációk száma


# Barnsley-páfrány generálása

x_vals, y_vals = barnsley_fern(iterations)


# Ábrázolás

plt.figure(figsize=(6, 6))

plt.scatter(x_vals, y_vals, color='green', s=0.1)  # Kicsi pontokkal

plt.title("Barnsley Páfrány Fraktál", fontsize=14)

plt.axis('equal')

plt.axis('off')

plt.show()

Megjegyzések