Skip to content

Instantly share code, notes, and snippets.

@iTarum
Created November 11, 2011 23:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iTarum/1359646 to your computer and use it in GitHub Desktop.
Save iTarum/1359646 to your computer and use it in GitHub Desktop.
Rings in rings ind rings
SCHRIT_RADIUS = 1
START_X = WIDTH/2
START_Y = HEIGHT/2
KVGR = 20
KKGR = 20
EKGR = 25
AnzV = 40
AnzK = 5
AnzE = 50
MIN_V_RADIUS = 100
MAX_V_RADIUS = 200
MIN_K_RADIUS = 50
MAX_K_RADIUS = 100
MIN_E_RADIUS = 25
MAX_E_RADIUS = 50
VATER_RAD_V = false
KIND_RAD_V = false
ENKEL_RAD_V = false
VATER_PULSIERUNGS_GR = 20
KIND_PULSIERUNGS_GR = 2
EPGR = 2
VATER_DREH = 0.0125
KIND_DREH = -0.025
ENKEL_DREH = 0.05
rV=1
rK =3
rE =5
WeiterVNach =1
WeiterKNach =2
WeiterENach =0
Dreh_Vater =0
Dreh_Kind =0
Dreh_Enkel =2
sinX =0 
sinY =0
SKx={}
SKgx={}
SKgy={}
SKy={}
dk=200
-- Use this function to perform your initial setup
function setup()
    iparameter("KVGR",10,1000)
    
    iparameter("AnzV",1,20)
    iparameter("AnzK",1,20)
    iparameter("AnzE",1,20)
    iparameter("dk",0,500)
    iparameter("VATER_PULSIERUNGS_GR",0,200)
end
AnzV = 4
AnzK = 2
AnzE = 2
-- This function gets called once every frame
function draw()
vStart()
KKGR = KVGR /2
EKGR = KKGR /2
    
    
KIND_PULSIERUNGS_GR = VATER_PULSIERUNGS_GR/3
EPGR = KIND_PULSIERUNGS_GR/3
    noSmooth()
    if dk>0 then
        
    fill(0, 0, 0, dk)
    rect(0,0,WIDTH,HEIGHT)
    noStroke() 
    end
    
    
    tmrTimer_Timer()
end
function tmrTimer_Timer()
    i=0
    ii=0
--fill(255,0,0)
stroke(11, 241, 170, 255)
    if rV < MIN_V_RADIUS then WeiterVNach = 1 end
    if rV > MAX_V_RADIUS then WeiterVNach = -1 end
    if VATER_RAD_V then
        rV = rV + (WeiterVNach * SCHRIT_RADIUS)
    end
    Dreh_Vater = Dreh_Vater + VATER_DREH
    for i = 1 ,AnzV do
        SKx[i]= sinX-(SKgx[i]/2)+(rV*math.sin(Dreh_Vater+(math.pi*i/AnzV*2)))
        SKy[i]= sinY-(SKgy[i]/2)+(rV*math.cos(Dreh_Vater+(math.pi*i/AnzV*2)))
        if VATER_RAD_V then
            SKgx[i]= SKgx[i] + (WeiterVNach * VATER_PULSIERUNGS_GR)
            SKgy[i]= SKgy[i] + (WeiterVNach * VATER_PULSIERUNGS_GR)
        end
     ellipse(SKx[i],SKy[i],SKgx[i],SKgy[i])
        
    end
    if rK < MIN_K_RADIUS then WeiterKNach = 1 end
    if rK > MAX_K_RADIUS then WeiterKNach = -1 end
    if KIND_RAD_V then
        rK = rK + (WeiterKNach * SCHRIT_RADIUS)
    end
    Dreh_Kind = Dreh_Kind + KIND_DREH
    for ii = 1 ,AnzV do
        TimerWeiter(ii)
    end
    if rE < MIN_E_RADIUS then WeiterENach = 1 end
    if rE > MAX_E_RADIUS then WeiterENach = -1 end
    if ENKEL_RAD_V then
        rE = rE + (WeiterENach * SCHRIT_RADIUS)
    end
    Dreh_Enkel = Dreh_Enkel + ENKEL_DREH
    for ii = (AnzV + 1 ), (AnzV * (AnzK + AnzV)) do
        TimerNochWeiter(ii)
    end
end
function TimerWeiter(VaterI)
    kI =0
    i =0
    --fill(19, 255, 0, 255)
    stroke(174, 255, 0, 255)
    for i = 1 , AnzK do
        kI = AnzV + ((VaterI - 1) * AnzK) + i
        
SKx[kI]=SKx[VaterI]+(SKgx[VaterI]/2)+(rK*math.sin(Dreh_Kind+(math.pi*i/AnzK*2))) - (SKgx[kI] / 1)
SKy[kI]=SKy[VaterI]+(SKgy[VaterI]/2)+(rK*math.cos(Dreh_Kind+(math.pi*i/AnzK*2))) - (SKgy[kI] / 1)
        if KIND_RAD_V then 
            SKgx[kI]=SKgx[kI] + (WeiterKNach * KIND_PULSIERUNGS_GR)
            SKgy[kI]=SKgy[kI] + (WeiterKNach * KIND_PULSIERUNGS_GR)
        end
        ellipse(SKx[kI],SKy[kI],SKgx[kI],SKgy[kI])
    end
end
function TimerNochWeiter(KI)
    ENr=0
    i=0
    fill(217, 255, 0, 255)
    for i = 1, AnzE do
        
        ENr = AnzV + (AnzV * AnzK) + ((KI - 1) * AnzE) + i
        
SKx[ENr]=SKx[KI]+(SKgx[KI]/2)+(rE*math.sin(Dreh_Enkel+(math.pi*i/AnzE*2))) --(SKgy[ENr]/1)
SKy[ENr]=SKy[KI]+(SKgy[KI]/2)+(rE*math.cos(Dreh_Enkel+(math.pi*i/AnzE*2)))--(SKgy[ENr]/2)
     -- print(SKx[ENr])
        if ENKEL_RAD_V then
            
            SKgx[ENr]= SKgx[ENr] + (WeiterENach * EPGR)
            SKgy[ENr]= SKgy[ENr] + (WeiterENach * EPGR)
        
        end
        --ellipse(SKx[ENr],SKy[ENr],SKgx[ENr],SKgy[ENr])
        ellipse(SKx[ENr],SKy[ENr],5,5)
    end
end
function vStart()
ii=0
    
    sinX = START_X
    sinY = START_Y
    rV = MIN_V_RADIUS
    WeiterVNach = 1
    for ii = 1 , AnzV do
        --Load shpKreis(i)
        
        SKgx[ii] = KVGR
        SKgy[ii] = KVGR
        SKx[ii] = sinX - (SKgx[ii] / 2) + (MIN_V_RADIUS * math.sin(math.pi * ii / AnzV * 2))
        SKy[ii] = sinY - (SKgy[ii] / 2) + (MIN_V_RADIUS * math.cos(math.pi * ii / AnzV * 2))
        
    end
    if AnzK > 0 then
        for ii = 1 , AnzV do
            StartWeiter(ii)
        end
        if AnzE > 0 then
            for ii = (AnzV + 1) , ((AnzV * AnzK) + AnzV) do
                StartNochWeiter(ii)
            end
        end
    end
end
function StartWeiter(VaterI)
    kI=0
    i=0
    
    rK = MIN_K_RADIUS
    WeiterKNach = 1
    for i = 1 , AnzK do
        kI = AnzV + ((VaterI - 1) * AnzK) + i
        --Load shpKreis(kI)
        
        SKgx[kI] = KKGR
        SKgy[kI] = KKGR
        SKx[kI]=SKx[VaterI]+(SKgx[VaterI]/2) + (MIN_K_RADIUS * math.sin(math.pi * i / AnzK * 2))
        SKy[kI]=SKy[VaterI]+(SKgy[VaterI]/2) + (MIN_K_RADIUS * math.cos(math.pi * i / AnzK * 2))
   
end
end
function StartNochWeiter(KindI)
    ENr=0
    i=0
    
    rE = MIN_E_RADIUS
    WeiterENach = 1
    for i = 1 , AnzE +3 do
        ENr = AnzV + (AnzV * AnzK) + ((KindI - 1) * AnzE) + i
        --Load shpKreis(EnkelNr)
        
        SKgx[ENr] = KEGR
        SKgy[ENr] = KEGR
        SKx[ENr] = SKx[KindI]+(SKgx[KindI]/2)+(MIN_E_RADIUS*math.sin(math.pi*i/AnzE* 2))
        SKy[ENr] = SKy[KindI]+(SKgy[KindI]/2)+(MIN_E_RADIUS*math.cos(math.pi*i/AnzE* 2))
   end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment