rotation.py

Created by mty

Created on September 30, 2024

4 KB


from kandinsky import *
from math import sqrt,sin,cos,pi
from time import sleep

# center points
cx,cy=int(320/2),int(220/2)

sun=(0,0)
p0=(-50,0)
p1=(90,0)
p2=(0,150)
m2=(0,20)


bgC=(255,255,255)
shadowC=(240,240,240)
sunC=(50,50,180)
p0C=(0,180,120)
p1C=(0,180,250)
p2C=(0,250,180)
m2C=(180,50,50)

p0Rot=150
p1Rot=315
p2Rot=315
m2Rot=0

# aRot=315
# acX,acY,aOpac=280,189,60
# aXC=(50,0,140)
# aYC=(50,140,0)


# def sinCos(rot):
#     rad=-rot*pi/180
#     return (sin(rad),cos(rad))

def rotX(x,y,sinRot,cosRot):
    return int(x*cosRot-y*sinRot)

def rotY(x,y,sinRot,cosRot):
    return int((x*sinRot+y*cosRot)*0.45)

def rotatePoint(x,y,rot):
    rad=-rot*pi/180
    sinRot=sin(rad)
    cosRot=cos(rad)
    return (rotX(x,y,sinRot,cosRot),rotY(x,y,sinRot,cosRot))

# def rotatePoint2(x,y,sinRot,cosRot):
#     return (rotX(x,y,sinRot,cosRot),rotY(x,y,sinRot,cosRot))

# def line(x1,y1,x2,y2,c):
#     w=x2-x1
#     h=y2-y1
#     if abs(w)>=abs(h):
#         d=h/w
#         for i in range(0,w,(w>0)*2-1):
#             set_pixel(x1+i,y1+int(d*i+0.5),c)
#     else:
#         d=w/h
#         for i in range(0,h,(h>0)*2-1):
#             set_pixel(x1+int(d*i+0.5),y1+i,c)
# try:
#     line=draw_line
# except:
#     pass


p0R=rotatePoint(p0[0],p0[1],p0Rot)
p1R=rotatePoint(p1[0],p1[1],p1Rot)
p2R=rotatePoint(p2[0],p2[1],p2Rot)
m2R=rotatePoint(m2[0],m2[1],m2Rot)
# aSinCos=sinCos(aRot)

while True:
    # draw_string("rot="+str(rot)+"  ",0,0,textC)
    fill_rect(sun[0]+cx-10,sun[1]+cy-10,20,20,sunC)
    fill_rect(p0R[0]+cx-3,p0R[1]+cy-3,6,6,p0C)
    fill_rect(p1R[0]+cx-4,p1R[1]+cy-4,8,8,p1C)
    fill_rect(p2R[0]+cx-5,p2R[1]+cy-5,10,10,p2C)
    fill_rect(p2R[0]+cx+m2R[0]-2,p2R[1]+cy+m2R[1]-2,4,4,m2C)

    # axMin=rotatePoint2(-10,0,aSinCos[0],aSinCos[1])
    # axMax=rotatePoint2(35,0,aSinCos[0],aSinCos[1])
    # axArr1=rotatePoint2(35*2/3,-5,aSinCos[0],aSinCos[1])
    # axArr2=rotatePoint2(35*2/3,5,aSinCos[0],aSinCos[1])
    # line(axMin[0]+acX,axMin[1]+acY,axMax[0]+acX,axMax[1]+acY,aXC)
    # line(axArr1[0]+acX,axArr1[1]+acY,axMax[0]+acX,axMax[1]+acY,aXC)
    # line(axArr2[0]+acX,axArr2[1]+acY,axMax[0]+acX,axMax[1]+acY,aXC)
    # line(axArr1[0]+acX,axArr1[1]+acY,axArr2[0]+acX,axArr2[1]+acY,aXC)
    # ayMin=rotatePoint2(0,-10,aSinCos[0],aSinCos[1])
    # ayMax=rotatePoint2(0,35,aSinCos[0],aSinCos[1])
    # ayArr1=rotatePoint2(-5,35*2/3,aSinCos[0],aSinCos[1])
    # ayArr2=rotatePoint2(5,35*2/3,aSinCos[0],aSinCos[1])
    # line(ayMin[0]+acX,ayMin[1]+acY,ayMax[0]+acX,ayMax[1]+acY,aYC)
    # line(ayArr1[0]+acX,ayArr1[1]+acY,ayMax[0]+acX,ayMax[1]+acY,aYC)
    # line(ayArr2[0]+acX,ayArr2[1]+acY,ayMax[0]+acX,ayMax[1]+acY,aYC)
    # line(ayArr1[0]+acX,ayArr1[1]+acY,ayArr2[0]+acX,ayArr2[1]+acY,aYC)

    sleep(0.05)
    p0Rot+=6
    if p0Rot>=360:
        p0Rot-=360
    p1Rot+=5
    if p1Rot>=360:
        p1Rot-=360
    p2Rot+=4
    if p2Rot>=360:
        p2Rot-=360
    m2Rot+=15
    if m2Rot>=360:
        m2Rot-=360
    # aRot+=5
    # if aRot>=360:
    #     aRot-=360
    p0RN=rotatePoint(p0[0],p0[1],p0Rot)
    p1RN=rotatePoint(p1[0],p1[1],p1Rot)
    p2RN=rotatePoint(p2[0],p2[1],p2Rot)
    m2RN=rotatePoint(m2[0],m2[1],m2Rot)
    # aSinCosN=sinCos(aRot)

    # fill_rect(sun[0]+cx-10,sun[1]+cy-10,20,20,bgC)
    fill_rect(p0R[0]+cx-3,p0R[1]+cy-3,6,6,shadowC)
    fill_rect(p1R[0]+cx-4,p1R[1]+cy-4,8,8,shadowC)
    fill_rect(p2R[0]+cx-5,p2R[1]+cy-5,10,10,shadowC)
    fill_rect(p2R[0]+cx+m2R[0]-2,p2R[1]+cy+m2R[1]-2,4,4,shadowC)

    # line(axMin[0]+acX,axMin[1]+acY,axMax[0]+acX,axMax[1]+acY,bgC)
    # line(axArr1[0]+acX,axArr1[1]+acY,axMax[0]+acX,axMax[1]+acY,bgC)
    # line(axArr2[0]+acX,axArr2[1]+acY,axMax[0]+acX,axMax[1]+acY,bgC)
    # line(axArr1[0]+acX,axArr1[1]+acY,axArr2[0]+acX,axArr2[1]+acY,bgC)

    # line(ayMin[0]+acX,ayMin[1]+acY,ayMax[0]+acX,ayMax[1]+acY,bgC)
    # line(ayArr1[0]+acX,ayArr1[1]+acY,ayMax[0]+acX,ayMax[1]+acY,bgC)
    # line(ayArr2[0]+acX,ayArr2[1]+acY,ayMax[0]+acX,ayMax[1]+acY,bgC)
    # line(ayArr1[0]+acX,ayArr1[1]+acY,ayArr2[0]+acX,ayArr2[1]+acY,bgC)

    p0R,p1R,p2R,m2R=p0RN,p1RN,p2RN,m2RN
    # aSinCos=aSinCosN

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.