首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jython (JES) - 90度旋转功能

Jython (JES) - 90度旋转功能
EN

Stack Overflow用户
提问于 2013-10-25 22:04:00
回答 1查看 4K关注 0票数 1

我需要写一个函数spin(pic,x),它将拍摄一张照片,并将其逆时针旋转90度X次。我在一个函数中只有90度顺时针旋转:

代码语言:javascript
复制
def rotate(pic):
    width = getWidth(pic)
    height = getHeight(pic)
    new = makeEmptyPicture(height,width)
    tarX = 0
    for x in range(0,width):
        tarY = 0
        for y in range(0,height):
            p = getPixel(pic,x,y)
            color = getColor(p)
            setColor(getPixel(new,tarY,width-tarX-1),color)
            tarY = tarY + 1
        tarX = tarX +1
    show(new)
    return new

。。但是我不知道如何去写一个旋转X次的函数。有人知道我是怎么做到的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-31 12:24:19

您可以多次调用rotate() X:

代码语言:javascript
复制
def spin(pic, x):
    new_pic = duplicatePicture(pic)
    for i in range(x):
         new_pic = rotate(new_pic)
    return new_pic


a_file = pickAFile()
a_pic = makePicture(a_file)
show(spin(a_pic, 3))

但这显然不是最优化的方法,因为您将计算X图像,而不是您感兴趣的图像。我建议您首先尝试一个基本的switch...case方法(即使这个语句在Python中不存在;):

代码语言:javascript
复制
xx = (x % 4)     # Just in case you want (x=7) to rotate 3 times...

if (xx == 1):
    new = makeEmptyPicture(height,width)
    tarX = 0
    for x in range(0,width):
        tarY = 0
        for y in range(0,height):
            p = getPixel(pic,x,y)
            color = getColor(p)
            setColor(getPixel(new,tarY,width-tarX-1),color)
            tarY = tarY + 1
        tarX = tarX +1
    return new
elif (xx == 2):
    new = makeEmptyPicture(height,width)
    # Do it yourself...
    return new
elif (xx == 3):
    new = makeEmptyPicture(height,width)
    # Do it yourself...
    return new
else:
    return pic

然后,您可能会看到一种将这些案例合并到单个(但更复杂)double for loop中的方法……玩得开心..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19592022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档