Code Sketch


BHAVESH ART
By: Mhalsakant School
Category: Art
// --- Kojo Vector Art: Lord Vishnu's Sudarshan Chakra (360� Rotating Animation) ---
cleari()
setBackground(Color(5, 2, 12)) // ????? ??????? ??????????

// ?. ??????? ????????? ????????? ?????? ??? (Cosmic Energy Core)
def drawCoreAura(): Unit = {
  // ??????? ??????-???? ???
  val outerAura = Picture.circle(130)
  outerAura.setFillColor(Color(70, 0, 200, 35))
  outerAura.setPenColor(noColor)
  outerAura.setPosition(0, 0)
  draw(outerAura)

  // ???? ?????? ??????? ???
  val midAura = Picture.circle(85)
  midAura.setFillColor(Color(0, 180, 255, 60))
  midAura.setPenColor(noColor)
  midAura.setPosition(0, 0)
  draw(midAura)

  // ????????? ??????? ???? (Center Cosmic Hub)
  val innerCore = Picture.circle(35)
  innerCore.setFillColor(Color(255, 230, 150)) // ?????? ???
  innerCore.setPenColor(Color(255, 255, 255))
  innerCore.setPenThickness(2)
  innerCore.setPosition(0, 0)
  draw(innerCore)
}

// ?. ??????? ????????? ?????? ????? (Golden Rings & Sacred Geometry)
def drawSudarshanRings(): Unit = {
  // ????? ?????? ???? ?
  val ring1 = Picture.circle(70)
  ring1.setFillColor(noColor)
  ring1.setPenColor(Color(255, 215, 0)) // ?????
  ring1.setPenThickness(3)
  ring1.setPosition(0, 0)
  draw(ring1)

  // ??????? ???????? ???? ?
  val ring2 = Picture.circle(95)
  ring2.setFillColor(noColor)
  ring2.setPenColor(Color(255, 140, 0)) // ?????-?????
  ring2.setPenThickness(2)
  ring2.setPosition(0, 0)
  draw(ring2)
}

// ?. ??? ??????? ?????? ??? ??? ??????? (Sharp Golden Blades & Rays Rotating 360�)
def drawChakraBlades(rotationAngle: Double): Unit = {
  val totalBlades = 36 // ????? ??????? ???? (Blades)
  val radiusInner = 70.0
  val radiusOuter = 115.0

  for (i <- 0 until totalBlades) {
    // ??? ??? ???? ????????????
    val angle = Math.toRadians((i * (360.0 / totalBlades)) + rotationAngle)
    val nextAngle = Math.toRadians(((i + 0.5) * (360.0 / totalBlades)) + rotationAngle)

    // ?. ????? ??????? ?????? ???? (Sharp Blades)
    val blade = Picture.fromVertexShape { p =>
      p.beginShape()
      p.vertex(radiusInner * Math.cos(angle), radiusInner * Math.sin(angle))
      p.vertex(radiusOuter * Math.cos(nextAngle), radiusOuter * Math.sin(nextAngle))
      p.vertex((radiusInner + 10) * Math.cos(angle + 0.2), (radiusInner + 10) * Math.sin(angle + 0.2))
      p.endShape()
    }
    blade.setFillColor(Color(255, 215, 0, 220)) // ?????? ??????
    blade.setPenColor(Color(255, 100, 0))
    blade.setPenThickness(1)
    draw(blade)

    // ?. ????????? ????? ???????? ????? ????????? (Fire & Lightning Rays)
    val rayX = (radiusOuter + 25) * Math.cos(nextAngle)
    val rayY = (radiusOuter + 25) * Math.sin(nextAngle)
    val ray = Picture.line(rayX - (radiusOuter * Math.cos(nextAngle)), rayY - (radiusOuter * Math.sin(nextAngle)))
    ray.setPenColor(Color(255, 255, 200, 180))
    ray.setPenThickness(1)
    ray.setPosition(radiusOuter * Math.cos(nextAngle), radiusOuter * Math.sin(nextAngle))
    draw(ray)
  }
}

// ?. ????? ???? (Title Text)
def drawText(): Unit = {
  val title = Picture.text("NAMO NARAYANAYA", 20)
  title.setPenColor(Color(255, 215, 0))
  title.setPosition(-105, 150)
  draw(title)

  val subtitle = Picture.text("360� ROTATING SUDARSHAN CHAKRA", 11)
  subtitle.setPenColor(Color(0, 210, 255))
  subtitle.setPosition(-110, 125)
  draw(subtitle)
}

// ?. ???� ??????? ????????? ??? (360 Degree Continuous Rotation Engine)
animateWithState(0.0) { angle =>
  erasePictures() // ????? ???????

  drawCoreAura()                      // ?. ??????? ???
  drawSudarshanRings()                 // ?. ?????? ?????
  drawChakraBlades(angle)              // ?. ???� ??????? ??????? ?????? ????
  drawText()                           // ?. ????? ??? ?????

  (angle + 4.0) % 360.0                // ??? ??? ????? ???? ??????
}