zoukankan      html  css  js  c++  java
  • 正十二面体万花筒

    转自:http://www.sohu.com/a/134487713_505803

    代码:

    '''
    A kaleidoscope pattern with icosahedral symmetry.
    '''
    import numpy as np
    from PIL import Image
    from matplotlib.colors import hsv_to_rgb
    def Klein(z):
        '''Klein's j-function'''
        return 1728*(z *(z**10+11*z**5-1))**5/(-(z**20+1) +228*(z**15-z**5) -494*z**10)**3
    def RiemannSphere(z):
        '''
        map the complex plane to Riemann's sphere via stereographic projection
        '''
        t = 1+z.real*z.real +z.imag*z.imag
        return 2*z.real/t, 2*z.imag/t, 2/t-1
    def Mobius(z):
        '''
        distort the result image by a mobius transformation
        '''
        return(z -20)/(3*z +1j)
    def main(imgsize):
        x = np.linspace(-6, 6, imgsize)
        y = np.linspace(6, -6, imgsize)
        z = x[None, :] +y[:, None]*1j
        z = RiemannSphere(Klein(Mobius(Klein(z))))
        #define colors in hsv space
        H = np.sin(z[0]*np.pi)**2
        S = np.cos(z[1]*np.pi)**2
        V = abs(np.sin(z[2]*np.pi) *np.cos(z[2]*np.pi))**0.2
        HSV = np.dstack((H, S, V))
        #transform to rgb space
        img =hsv_to_rgb(HSV)
        Image.fromarray(np.uint8(img*255)).save('kaleidoscope.png')
    
    import time
    start =time.time()
    main(imgsize=800)
    end = time.time()
    print('runtime: {:3f}seconds'.format(end - start))

    运行结果:

  • 相关阅读:
    react阻止默认事件
    react组件直接在document上添加事件
    react组件更新swiper
    react组件里阻事件冒泡
    react生命周期获取异步数据
    加油
    redis教程
    redis哨兵机制
    redis复制
    致自己
  • 原文地址:https://www.cnblogs.com/bugutian/p/11098411.html
Copyright © 2011-2022 走看看