• 李峋同款会动的爱心Python代码版


    最近看到不少关于李峋同款爱心的视频、文章,今天我们也分享一下李峋同款爱心 Python 代码版。要问李峋是谁?我也不太清楚,大家可自行百度,这个是我百度的结果,仅供参考。

    简单来说李峋同款爱心就是一个动态的♥型效果,主要 Python 代码实现如下:(完整源码请找我)

    def build(self, number):
    for _ in range(number):
     t = random.uniform(0, 2 * pi)
     x, y = heart(t)
     self._points.add((x, y))
    # 爱心内扩散
    for _x, _y in list(self._points):
     for _ in range(3):
      x, y = scatter_inside(_x, _y, 0.05)
      self._edge_diffusion_points.add((x, y))
    # 爱心内再次扩散
    point_list = list(self._points)
    for _ in range(4000):
     x, y = random.choice(point_list)
     x, y = scatter_inside(x, y, 0.17)
     self._center_diffusion_points.add((x, y))
    
    @staticmethodstaticmethod
    def calc_position(x, y, ratio):
    force = 1 / (((x - X) ** 2 +
         (y - Y) ** 2) ** 0.520)
    dx = ratio * force * (x - X) + random.randint(-1, 1)
    dy = ratio * force * (y - Y) + random.randint(-1, 1)
    return x - dx, y - dy
    
    def calc(self, generate_frame):
    ratio = 10 * curve(generate_frame / 10 * pi)
    halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
    halo_number = int(
     3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))
    all_points = []
    # 光环
    heart_halo_point = set()
    for _ in range(halo_number):
     t = random.uniform(0, 2 * pi)
     x, y = heart(t, shrink_ratio=11.6)
     x, y = shrink(x, y, halo_radius)
     if (x, y) not in heart_halo_point:
      heart_halo_point.add((x, y))
      x += random.randint(-14, 14)
      y += random.randint(-14, 14)
      size = random.choice((1, 2, 2))
      all_points.append((x, y, size))
    # 轮廓
    for x, y in self._points:
     x, y = self.calc_position(x, y, ratio)
     size = random.randint(1, 3)
     all_points.append((x, y, size))
    # 内容
    for x, y in self._edge_diffusion_points:
     x, y = self.calc_position(x, y, ratio)
     size = random.randint(1, 2)
     all_points.append((x, y, size))
    self.all_points[generate_frame] = all_points
    for x, y in self._center_diffusion_points:
     x, y = self.calc_position(x, y, ratio)
     size = random.randint(1, 2)
     all_points.append((x, y, size))
    self.all_points[generate_frame] = all_points

    实现效果如下(会动的爱心):

  • 相关阅读:
    UMC云管理平台下ESB产品升级说明
    为什么用葫芦儿派盘取代U盘?
    win10 ISO
    基于SpringBoot的“1818小酒馆”商城网站的设计与实现毕业设计源码192004
    【web-攻击会话管理】(4.2.2)会话令牌生成过程中的薄弱:令牌可预测
    【无标题】
    openEuler 22.03 x86架构下docker运行arm等架构的容器——筑梦之路
    Android --- 常见UI组件
    用元编程来判断STL类型
    如何处理GPU训练显存不足[memory isn't enough][alloc failed][out of memory]
  • 原文地址:https://blog.csdn.net/weixin_73136678/article/details/128150619