Tuteng2020 发表于 2022-5-28 08:15

python实现满天樱花飘落效果

python实现满天樱花飘落效果



import random
import cv2
import numpy as np

def cal(point,here):
    # 计算樱花中的坐标在屏幕中投影的坐标
    # here不断增大,delta不断减少
    delta = point - here
    if delta==0:
      return [-1, -1, 1, 0, 0]
    x = point/delta   # 投影在屏幕上x坐标
    y = point/delta   # 投影在屏幕上y坐标
    r = point/delta   # 星球半径
    return

def display_all(sakura,here):
      result=[]
      for i in range(sakura_num):
            position = cal(sakura,here)
            result.append(position)
      return result

if __name__ == "__main__":
   height=1080
   width=1920
   step = 0.5
   min_r = 1
   max_r = 200
   sakura_num = 150
   x_far = 100*2
   y_far = width*x_far
   z_far = height*x_far
   here = 0
   sakura = [ for i in range(sakura_num)]
   cv2.namedWindow('sakura',0)
   while True:
         canvas=np.zeros((height,width,3),dtype=np.uint8)
         here+=step
         for i in range(sakura_num):
                  while True:
                        position = cal(sakura,here)
                        if (0 <= position < width and
                              0 <= position < height and sakura>here):
                              break
                        else:
                              sakura = random.randint(x_far, 2*x_far)+here
                              sakura = random.randint(0, 2*y_far)
                              sakura = random.randint(0, 2*z_far)
                              sakura = random.randint(min_r, max_r)
         result=display_all(sakura,here)
         result=np.uint16(result).tolist()
         for i in range(sakura_num):
                radius=np.random.randint(3,15,size=(1,2)).tolist()
                cv2.ellipse(canvas,tuple(result),tuple(radius),30,0,360,color=(233,192,255),thickness = -1)
         cv2.imshow('sakura',canvas)
         if cv2.waitKey(10)==27:
               cv2.destroyAllWindows()
               break

cnstan 发表于 2022-5-28 08:15

多谢楼主分享

15206326477 发表于 2022-5-28 08:34


感谢楼主的分享

ZJX 发表于 2022-5-28 08:39

谢谢@Thanks!

星云 发表于 2022-5-28 08:40

谢谢大佬分享

曾经小哥哥 发表于 2022-5-28 09:05

6666666666

wangqisitp 发表于 2022-5-28 09:14

很给力,大牛论坛有你更精彩

今心 发表于 2022-5-28 09:16

一定能改支持,谢谢分享
页: [1]
查看完整版本: python实现满天樱花飘落效果