Code Sketch
Bhakti datta rane
Category: Art
// ==========================================
// MOVING SOLAR SYSTEM
// SCIENCE PROJECT - SCALA
// ==========================================
cleari()
originBottomLeft()
var angle1 = 0.0
var angle2 = 0.0
var angle3 = 0.0
var angle4 = 0.0
def drawSpace(canvas: CanvasDraw) {
canvas.background(5, 8, 25)
// -----------------------------
// SUN
// -----------------------------
canvas.noStroke()
canvas.fill(255, 180, 0)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
100,
100
)
canvas.fill(255, 240, 100)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
70,
70
)
// -----------------------------
// ORBITS
// -----------------------------
canvas.noFill()
canvas.stroke(80, 80, 120)
canvas.strokeWeight(1)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
180,
180
)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
270,
270
)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
360,
360
)
canvas.ellipse(
cwidth / 2.0,
cheight / 2.0,
450,
450
)
// -----------------------------
// MERCURY
// -----------------------------
val mercuryX =
cwidth / 2.0 +
math.cos(angle1) * 90
val mercuryY =
cheight / 2.0 +
math.sin(angle1) * 90
canvas.fill(180, 180, 180)
canvas.ellipse(
mercuryX,
mercuryY,
20,
20
)
// -----------------------------
// VENUS
// -----------------------------
val venusX =
cwidth / 2.0 +
math.cos(angle2) * 135
val venusY =
cheight / 2.0 +
math.sin(angle2) * 135
canvas.fill(255, 170, 50)
canvas.ellipse(
venusX,
venusY,
28,
28
)
// -----------------------------
// EARTH
// -----------------------------
val earthX =
cwidth / 2.0 +
math.cos(angle3) * 180
val earthY =
cheight / 2.0 +
math.sin(angle3) * 180
canvas.fill(50, 120, 255)
canvas.ellipse(
earthX,
earthY,
35,
35
)
// Moon
val moonX =
earthX +
math.cos(angle3 * 3) * 25
val moonY =
earthY +
math.sin(angle3 * 3) * 25
canvas.fill(220, 220, 220)
canvas.ellipse(
moonX,
moonY,
10,
10
)
// -----------------------------
// MARS
// -----------------------------
val marsX =
cwidth / 2.0 +
math.cos(angle4) * 225
val marsY =
cheight / 2.0 +
math.sin(angle4) * 225
canvas.fill(230, 70, 50)
canvas.ellipse(
marsX,
marsY,
30,
30
)
// -----------------------------
// TITLE
// -----------------------------
canvas.fill(0, 255, 255)
canvas.text(
"MOVING SOLAR SYSTEM",
cwidth / 2.0 - 90,
cheight - 40
)
}
// ==========================================
// ANIMATION
// ==========================================
animateWithCanvasDraw { canvas =>
angle1 += 0.04
angle2 += 0.025
angle3 += 0.018
angle4 += 0.012
drawSpace(canvas)
}