2026. június 9., kedd

Forma-1 python



-------------

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

def rajzol_f1_auto():
    # Ábra és koordinátarendszer inicializálása
    fig, ax = plt.subplots(figsize=(14, 6))
    ax.set_facecolor('#0d1117') # Sötét háttér a sci-fi hatáshoz
    
    # 1. Kasztni és alsó aerodinamikai elemek (Sidepods & Floor)
    kasztni = patches.Polygon([[ -5, 0.8], [2, 1.2], [6, 1.2], [7, 0.5], [ -5, 0.5]], closed=True, color='#c92a2a', zorder=3)
    padlolemez = patches.Polygon([[ -6, 0.2], [7.5, 0.2], [7.5, 0.5], [-6, 0.5]], closed=True, color='#1a1a1a', zorder=2)
    orrunk = patches.Polygon([[ -5, 0.8], [ -7, 0.5], [ -5, 0.5]], closed=True, color='#c92a2a', zorder=3)
    
    ax.add_patch(kasztni)
    ax.add_patch(padlolemez)
    ax.add_patch(orrunk)
    
    # 2. Aerodinamikai légterelők (Orr-kúp szárnyak és terelőlapok)
    # Első szárny elemek
    elso_szarny_fo = patches.Polygon([[-7.5, 0.1], [-7.5, 0.8], [-7.0, 0.8], [-6.8, 0.1]], closed=True, color='#e0e0e0', zorder=3)
    elso_szarny_veg = patches.Polygon([[-7.5, 0.1], [-7.2, 1.3], [-6.8, 1.3], [-6.8, 0.1]], closed=True, color='#2b8a3e', zorder=3)
    ax.add_patch(elso_szarny_fo)
    ax.add_patch(elso_szarny_veg)
    
    # Bargeboard és oldalsó légterelők (aerodinamikai elemek)
    bargeboard1 = patches.Polygon([[-1, 0.5], [-0.5, 1.8], [0, 1.8], [-0.2, 0.5]], closed=True, color='#2b8a3e', zorder=3)
    bargeboard2 = patches.Polygon([[0.5, 0.5], [0.8, 1.6], [1.2, 1.6], [1.3, 0.5]], closed=True, color='#fab005', zorder=3)
    ax.add_patch(bargeboard1)
    ax.add_patch(bargeboard2)

    # 3. Kerekek és felfüggesztés (Gumiabroncsok)
    elso_gumi = patches.Circle((-5, 0.2), 0.6, color='#212529', zorder=4)
    elso_felni = patches.Circle((-5, 0.2), 0.35, color='#adb5bd', zorder=5)
    hatso_gumi = patches.Circle((5, 0.2), 0.6, color='#212529', zorder=4)
    hatso_felni = patches.Circle((5, 0.2), 0.35, color='#adb5bd', zorder=5)
    
    ax.add_patch(elso_gumi)
    ax.add_patch(elso_felni)
    ax.add_patch(hatso_gumi)
    ax.add_patch(hatso_felni)
    
    # Felfüggesztés háromszögek
    felfuggesztes_elso = patches.Polygon([[-5, 0.8], [-4.5, 0.5], [-5.5, 0.5]], closed=True, color='#6c757d', zorder=3)
    felfuggesztes_hatso = patches.Polygon([[5, 0.8], [4.5, 0.5], [5.5, 0.5]], closed=True, color='#6c757d', zorder=3)
    ax.add_patch(felfuggesztes_elso)
    ax.add_patch(felfuggesztes_hatso)

    # 4. Hátsó szárny (Rear Wing)
    hatso_szarny_fo = patches.Polygon([[6.5, 0.5], [6.5, 2.8], [7.5, 2.8], [7.5, 0.5]], closed=True, color='#e0e0e0', zorder=3)
    hatso_szarny_veglap = patches.Polygon([[6.8, 0.2], [6.6, 3.1], [7.6, 3.1], [7.4, 0.2]], closed=True, color='#c92a2a', zorder=2)
    allvany = patches.Polygon([[7.0, 0.5], [7.0, 1.8], [7.2, 1.8], [7.2, 0.5]], closed=True, color='#212529', zorder=2)
    ax.add_patch(hatso_szarny_fo)
    ax.add_patch(hatso_szarny_veglap)
    ax.add_patch(allvany)

    # 5. Halo (Fejvédő keret)
    halo = patches.Polygon([[-1, 1.5], [0.5, 1.5], [0.1, 1.2], [-0.5, 1.2]], closed=True, color='#adb5bd', zorder=4)
    ax.add_patch(halo)

    # 6. Matrica-minták és szponzorcsíkok
    # Cápauszony a motorborításon (Shark fin)
    shark_fin = patches.Polygon([[2.2, 1.2], [4.5, 2.2], [4.8, 1.2]], closed=True, color='#fab005', zorder=3)
    ax.add_patch(shark_fin)
    
    # Oldaldoboz matrica (Vonalak)
    matrica1 = patches.Polygon([[ -3, 0.7], [ -2, 1.1], [0, 1.1], [-1, 0.7]], closed=True, color='#e0e0e0', zorder=3)
    matrica2 = patches.Polygon([[ -3.5, 0.6], [ -2.5, 1.0], [ -1.5, 1.0], [-2.2, 0.6]], closed=True, color='#ffec99', zorder=3)
    ax.add_patch(matrica1)
    ax.add_patch(matrica2)

    # 7. Matricák (Feliratok és rajtszám)
    ax.text(-5.5, 0.8, '1', fontsize=36, fontweight='bold', color='white', zorder=5) # Rajtszám
    ax.text(-2, 0.85, 'PIRELLI', fontsize=10, fontweight='bold', color='black', zorder=4, rotation=10)
    ax.text(2, 0.85, 'SHELL', fontsize=12, fontweight='bold', color='white', zorder=4)

    # 8. Légáramlat-vonalak (Aerodinamikai szimuláció hullámokkal)
    x_flow = np.linspace(-9, 8, 100)
    # Áramlási vonalak ábrázolása Matplotlib-pel
    for y_offset in np.linspace(0.5, 3.0, 6):
        ax.plot(x_flow, y_offset + 0.1 * np.sin(x_flow), color='#00d2be', alpha=0.5, linewidth=2, zorder=1)

    # Térkép beállítások (Ne mutassa a tengelyeket)
    ax.set_xlim(-10, 9)
    ax.set_ylim(-0.5, 4)
    ax.axis('off')
    
    plt.title("Formula 1 - Koncepció és Aerodinamika", color='white', fontsize=16)
    plt.show()

rajzol_f1_auto()




Nincsenek megjegyzések:

Megjegyzés küldése