import matplotlib.pyplot as plt
import numpy as np

# Данные для 8 варианта (R, G, B)
colors_data = {
    "Yellow": (1, 1, 0, 'gold'),
    "Blue": (0, 0, 1, 'blue'),
    "White": (1, 1, 1, 'gray'),
    "Red": (1, 0, 0, 'red'),
    "Cyan": (0, 1, 1, 'cyan')
}

fig, ax = plt.subplots(figsize=(8, 8))

for name, (r, g, b, plot_color) in colors_data.items():
    # 1. Считаем яркость
    ey = 0.299 * r + 0.587 * g + 0.114 * b
    
    # 2. Считаем цветоразностные сигналы PAL
    u = 0.493 * (b - ey)
    v = 0.877 * (r - ey)
    
    if abs(u) < 0.001 and abs(v) < 0.001:
        ax.plot(0, 0, 'o', color=plot_color, label=f"{name} (Origin)")
        continue

    # 3. Рисуем основной вектор (+V)
    ax.quiver(0, 0, u, v, angles='xy', scale_units='xy', scale=1, 
              color=plot_color, label=name, width=0.01)
    
    # 4. Рисуем инвертированный вектор (-V) для PAL
    ax.plot(u, -v, 'o', color=plot_color)

# Настройка осей
limit = 0.7
ax.set_xlim(-limit, limit)
ax.set_ylim(-limit, limit)
ax.axhline(0, color='black', linewidth=1)
ax.axvline(0, color='black', linewidth=1)
ax.set_xlabel('U (B-Y)')
ax.set_ylabel('V (R-Y)')
ax.set_title('Векторная диаграмма PAL (Вариант 8)')
ax.legend(loc='upper right')
ax.grid(True, linestyle=':', alpha=0.6)
ax.set_aspect('equal')

plt.show()

