5

Работа с Чат GPT. Закончились нервы

В первых строках своего поста, поздравляю прекрасную половину нашего человечества с замечательным весенним праздником!

А теперь к сути. Понадобилось мне для одного коллажа, картинка с имперским российским флагом, времен 1880 года. Чтобы вы понимали, он выглядит вот так:

С гербом вот так:

И без вариантов!

Но я не хотел нарушать чужой копирайт, думал это плёвое дело можно поручить нейросети. Фиг там! Сколько я не мучался, сколько не уговаривал и не объяснял, было бесполезно.

Через час, нервы уже сдали.

Немного остыв, я попробовал еще раз.

Пытался давить на аналогии, на даты. Бесполезно.

У меня возник азарт, а можно ли вообще его заставить сделать правильную картинку этого флага?

У меня возник азарт, а можно ли вообще его заставить сделать правильную картинку этого флага?

Указал дотошное описание, он его прекрасно понял и сделал.

Нервы кончились. Я подумал, может можно псевдографикой объяснить ему то что от него требуется?

флаг Российской империи (ок. 1880)

(упрощённая схема)

|\

| \

| \

| \

| \

__________

/ ЧЁРНЫЙ \

/~~~~~~~~~~\

/~~~~ (двуглавый) ~~~\ <- Верхняя полоса: чёрная

\~~~~ ОРЁЛ ~~~/

\~~~~~~~~~~~/

\___ ЗОЛОТОЙ ___/ <- Средняя полоса: золотая (или жёлтая)

/~~~~~~~~~~\

/~~~~~ ~~~\

/~~~~ ГЕРБ ~~~\

\~~~~~~~~~~~/

\____ БЕЛЫЙ ____/ <- Нижняя полоса: белая

~~~~~~

(«развевание» схематично показано волнистыми линиями)

Упрощённое изображение двуглавого орла:

/\

( )

( /\ )

/ \

( ⚔ ⚔ ) <-- условные лапы/атрибуты

\ /\ /

( \/ )

( )

\/

Получил вот такой результат.

Но мы не привыкли отступать. В ход пошла тяжелая артиллерия.

Ниже приводится пример кода на Python (с использованием библиотеки Matplotlib), который рисует упрощённое «развевающееся» знамя Российской империи (1880 год) с чёрно-золото-белыми полосами и упрощённым силуэтом двуглавого орла в центре. При запуске код создаст окно с изображением флага:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Polygon

def wave(x, amplitude=0.01, frequency=3.0, phase=0.0):

"""

Возвращает небольшое колебание (для эффекта «волны»),

зависящее от координаты x.

"""

return amplitude * np.sin(2.0 * np.pi * frequency * x + phase)

def create_stripe_polygon(x_vals, y_bottom, y_top, color='white'):

"""

Создаёт объект Polygon для одной горизонтальной полосы,

где верхняя и нижняя граница «волнистые».

- x_vals: массив координат x (от 0 до 1)

- y_bottom, y_top: функции или константы для нижней и верхней границ по y

- color: цвет закраски полосы

"""

# Точки верхней границы (идём слева направо)

top_points = [(x, y_top(x)) for x in x_vals]

# Точки нижней границы (идём справа налево, чтобы получился замкнутый контур)

bottom_points = [(x, y_bottom(x)) for x in reversed(x_vals)]

# Все точки вместе образуют замкнутый контур полосы

polygon_points = top_points + bottom_points

return Polygon(polygon_points, closed=True, facecolor=color, edgecolor='none')

# Сетка x для построения «волны»

x_vals = np.linspace(0, 1, 200)

# Определяем три «полосы»:

# 1) Чёрная (верхняя): от y=2/3 до y=1

# 2) Золотая (средняя): от y=1/3 до y=2/3

# 3) Белая (нижняя): от y=0 до y=1/3

# Чтобы полосы не пересекались, используем одинаковые «волны» для верхней и нижней границы каждой полосы.

# Для наглядности чуть сдвинем фазу волны (phase), чтобы полосы «колыхались» по-разному.

black_top = lambda x: 1.0 + wave(x, amplitude=0.01, frequency=3.0, phase=0.0)

black_bottom = lambda x: (2.0/3.0) + wave(x, amplitude=0.01, frequency=3.0, phase=0.0)

gold_top = lambda x: (2.0/3.0) + wave(x, amplitude=0.01, frequency=3.0, phase=np.pi/2)

gold_bottom = lambda x: (1.0/3.0) + wave(x, amplitude=0.01, frequency=3.0, phase=np.pi/2)

white_top = lambda x: (1.0/3.0) + wave(x, amplitude=0.01, frequency=3.0, phase=np.pi)

white_bottom = lambda x: 0.0 + wave(x, amplitude=0.01, frequency=3.0, phase=np.pi)

# Создаём три полосы

black_stripe = create_stripe_polygon(x_vals, black_bottom, black_top, color='black')

gold_stripe = create_stripe_polygon(x_vals, gold_bottom, gold_top, color='gold')

white_stripe = create_stripe_polygon(x_vals, white_bottom, white_top, color='white')

# Далее – упрощённое изображение двуглавого орла в центре флага.

# Для наглядности пусть это будет «силуэт» из нескольких точек вокруг (0.5, 0.5).

# Можно усложнить, добавив деталей, но ниже – очень условная форма.

def create_eagle_polygon(cx=0.5, cy=0.5, size=0.1, color='black'):

"""

Создаёт упрощённый «двуглавый орёл» как многоугольник вокруг точки (cx, cy).

size определяет примерный масштаб.

"""

# Ниже — набор координат, формирующих некий «двойной» силуэт (упрощённо)

# Ориентируемся на то, что (cx, cy) — центр.

points = [

(cx - 0.1 * size, cy + 0.2 * size), # Левое «крыло» верх

(cx, cy + 0.3 * size), # Верх между головами

(cx + 0.1 * size, cy + 0.2 * size), # Правое «крыло» верх

(cx + 0.08* size, cy + 0.07* size), # Правая голова

(cx + 0.05* size, cy + 0.05* size),

(cx + 0.07* size, cy - 0.02* size),

(cx + 0.02* size, cy - 0.05* size),

(cx - 0.02* size, cy - 0.05* size),

(cx - 0.07* size, cy - 0.02* size),

(cx - 0.05* size, cy + 0.05* size),

(cx - 0.08* size, cy + 0.07* size), # Левая голова

]

return Polygon(points, closed=True, facecolor=color, edgecolor='none')

eagle = create_eagle_polygon(cx=0.5, cy=0.5, size=1.0, color='black')

# Создаём холст

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

ax = plt.gca()

# Добавляем полосы и орла на оси

for stripe in [white_stripe, gold_stripe, black_stripe]:

ax.add_patch(stripe)

ax.add_patch(eagle)

# Убираем всё лишнее с осей

plt.xlim(0, 1)

plt.ylim(0, 1)

ax.set_aspect('equal') # Чтобы флаг не искажался

ax.axis('off') # Скрываем рамку и отметки

plt.title("Флаг Российской империи (пример 1880 г.)", fontsize=14)

plt.show()

Изучив код, жопити сильно задумался.

Эту уродскую хрень он выдал явно через не хочу. Но уже правильно! Осталась самая малость!

Я взорвался. Всё на сегодня. И подумал, есть же мелкософтовский ИИ. Уж он то не дурак.

Нет! оказалось что это заговор!

ChatGPT

1.4K пост3.6K подписчиков