
import random
from math import sin, cos, pi, log
from tkinter import Tk, Canvas# 画布参数
CANVAS_WIDTH = 800
CANVAS_HEIGHT = 600
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 16 # 放大倍数
EPSILON = 1e-8 # 避免除零错误# 蓝色主题(不同深浅蓝色模拟爱心渐变)
HEART_DARK_BLUE = "#003366" # 爱心深色区域
HEART_MID_BLUE = "#0066CC" # 爱心中间色
HEART_LIGHT_BLUE = "#66CCFF" # 爱心浅色区域
BACKGROUND_COLOR = "black" # 背景色# 爱心蝴蝶融合公式(翅膀边缘为爱心曲线,身体为蝴蝶结构)
def heart_butterfly(t, wing_phase=0, shrink_ratio=IMAGE_ENLARGE):# 基础爱心公式(用于翅膀边缘)def heart_curve(angle):x = 16 * (sin(angle) ** 3)y = 13 * cos(angle) - 5 * cos(2 * angle) - 2 * cos(3 * angle) - cos(4 * angle)return x, y# 蝴蝶身体中轴线body_r = 5 * (1 + sin(t))# 翅膀爱心融合逻辑(左翅和右翅分别计算)if t < pi: # 左翅(0~π)# 爱心曲线旋转90度作为翅膀边缘heart_x, heart_y = heart_curve(t + wing_phase)# 翅膀从身体延伸到爱心边缘wing_factor = 0.8 + 0.2 * sin(wing_phase) # 翅膀扇动幅度r = body_r + wing_factor * (heart_x ** 2 + heart_y ** 2) ** 0.5x = -r * cos(t) # 左翅镜像y = r * sin(t)else: # 右翅(π~2π)heart_x, heart_y = heart_curve(t - pi + wing_phase)wing_factor = 0.8 +