当前位置: 首页 > 知识库问答 >
问题:

如何使用赛璐珞库制作动画?

东门茂实
2023-03-14

null

共有1个答案

逄边浩
2023-03-14
import math
import numpy as np
import matplotlib.pyplot as plt
from celluloid import Camera
import copy

img = np.ones((90,60,3))
fig = plt.figure(figsize=(10,8), dpi = 100, facecolor='w')

camera = Camera(fig)
quarterCircleOne = []
quarterCircleTwoHalfOne = []
quarterCircleTwoHalfTwo = []
quarterCircleThree = []
quarterCircleFourHalfOne = []
quarterCircleFourHalfTwo = []

xc = 45
yc = 30
rx = 25
ry = 15
def GenerateElipse(xc,yc,rx,ry):
    img[xc, yc] = (255,0,0)
    img[xc+1, yc] = (255,0,0)
    img[xc-1, yc] = (255,0,0)
    img[xc, yc+1] = (255,0,0)
    img[xc, yc-1] = (255,0,0)
    xk = 0
    yk = ry
    pk = ry**2 -rx**2 * ry+1/4* rx**2

    while ry**2 * xk < rx**2 *yk:
        if pk>0:
            xk = xk+1
            yk = yk-1
            pk = pk + 2 * ry**2 *xk + ry**2 - 2* rx**2 *yk
        else:
            xk = xk+1
            pk=pk + 2* ry**2 * xk + ry**2
        img[xc+xk, yc+yk] = (0,0,0)
        img[xc+xk, yc-yk] = (0,0,0)
        img[xc-xk, yc+yk] = (0,0,0)
        img[xc-xk, yc-yk] = (0,0,0)
        quarterCircleOne.append([xc-xk, yc-yk])
        quarterCircleTwoHalfTwo.append([xc-xk, yc+yk])
        quarterCircleThree.append([xc+xk, yc+yk])
        quarterCircleFourHalfOne.append([xc+xk, yc-yk])

    pk = ry**2 * (xk-1/2)**2 + rx**2 * (yk-1)**2 - rx**2 * ry**2

    while yk>0:
        if pk>0:
            yk = yk-1
            pk=pk -2 * rx**2 * yk + rx**2
        else:
            xk = xk+1
            yk = yk-1
            pk=pk - 2 * rx**2 * yk +  2* ry**2 *xk + rx**2
        img[xc+xk, yc+yk] = (0,0,0)
        img[xc+xk, yc-yk] = (0,0,0)
        img[xc-xk, yc+yk] = (0,0,0)
        img[xc-xk, yc-yk] = (0,0,0)
        quarterCircleOne.append([xc-xk, yc-yk])
        quarterCircleTwoHalfOne.append([xc-xk, yc+yk])
        quarterCircleThree.append([xc+xk, yc+yk])
        quarterCircleFourHalfTwo.append([xc+xk, yc-yk])

GenerateElipse(45, 30, 25, 15)


def DrawElipse(speed, img):
  sortedQuarterCircleOne = sorted(quarterCircleOne,key=lambda x: x[1])
  sortedQuarterCircleTwoHalfOne = sorted(quarterCircleTwoHalfOne,key=lambda x: x[1])
  sortedQuarterCircleTwoHalfTwo = sorted(quarterCircleTwoHalfTwo,key=lambda x: x[0])
  sortedQuarterCircleThree = sorted(quarterCircleThree,key=lambda x: x[1], reverse=True)
  sortedQuarterCircleFourHalfTwo = sorted(quarterCircleFourHalfTwo,key=lambda x: x[1], reverse=True)
  sortedQuarterCircleFourHalfOne = sorted(quarterCircleFourHalfOne,key=lambda x: x[0], reverse=True)

circle = [sortedQuarterCircleOne, sortedQuarterCircleTwoHalfOne, sortedQuarterCircleTwoHalfTwo, 
sortedQuarterCircleThree, sortedQuarterCircleFourHalfTwo, sortedQuarterCircleFourHalfOne]

i = 0
for x in range(0, 6):
    for coordinates in circle[x]:
        freshImage = copy.deepcopy(img)
        freshImage[coordinates[0], coordinates[1]] = (0,0,0)
        freshImage[coordinates[0], coordinates[1]+1] = (255,0,0)
        freshImage[coordinates[0], coordinates[1]-1] = (255,0,0)
        freshImage[coordinates[0]+1, coordinates[1]-1] = (0,0,255)
        freshImage[coordinates[0]+1, coordinates[1]+1] = (0,0,255)
        freshImage[coordinates[0]+1, coordinates[1]] = (255,0,0)
        freshImage[coordinates[0]-1, coordinates[1]-1] = (0,0,255)
        freshImage[coordinates[0]-1, coordinates[1]+1] = (0,0,255)
        freshImage[coordinates[0]-1, coordinates[1]] = (255,0,0)
        if i % speed == 0:
            plt.imshow(freshImage)
            camera.snap()
        i = i + 1
 DrawElipse(1, img);
 animation = camera.animate()
 plt.show()
 类似资料:
  • 问题内容: 我在制作JApplet并遇到动画问题。 这是我的代码: 有了它,就没有动画:在循环过程中什么也没发生,repaint()方法似乎只在精灵停止移动后才起作用。 我只想将Swing用于此目的,关于如何进行的任何想法? 谢谢阅读。 问题答案: 您应该使用a 来执行动画,而不要使用“线程睡眠”。这是一个很好的链接,可以助您一臂之力:http : //java.sun.com/docs/book

  • 问题内容: 我正在学习如何使用LibGDX制作游戏,并且正在尝试制作一个小型平台游戏(使用Eclipse)。我在主角跑动时制作了4张图像,以便在他移动时制作动画。但是,我在网上找不到任何东西可以向我展示如何在不使用SpriteSheet的情况下制作动画。如何使用4张不同的图像制作动画? 问题答案: 首先:您不应使用其他图像。也许对您的播放器来说并不重要(因为只有一个),但是通常您应该始终使用Spr

  • 如何在侧滑块中制作一些不同类型的动画。有图书馆吗?如果有图书馆,请提供我。

  • 问题内容: 我有Tapjoy来源资源,其结构如下: 必须使用Android API Level 9和更高版本进行编译。我的项目的版本为Android API Level 8。 因此,我需要从文件源中提取文件并将其包含到我的主项目中。 如何使用命令行或Eclipse正确制作文件? 问题答案: 或从命令行

  • https://www.chunten.com/angpu/lottiefiles.html 这种动画是怎么制作出来的? 这种我之前一般是用adobe flash制作,后来用adobe animate制作,但我想弄成lottie动画: 像 把这个放到html里就可以看到动画了,但是flash和animate都不能实现,难道需要用adobe AE来制作吗??有没有具体的制作?可以直接生成这种动画js

  • 我需要用三个值的动画制作一个svg饼图,在代码中找不到我的错误。当我移除setTimeout(function(){circle.setAttribute(“Stroke-Dasharray”,p+“100”);},10);在JavaScript中,饼图看起来不错,但没有动画。当我添加这段代码时,它是动画的,但不是加载所有的值,而是逆时针加载,而不是顺时针加载。我不知道任何javascript,但