Polyspiral: Difference between revisions

1,676 bytes added ,  5 years ago
Scala contribution added.
(added Ceylon)
(Scala contribution added.)
Line 1,511:
https://www.dropbox.com/s/zwnpimbndekbd5k/PolySpiral.jpg?dl=0
 
=={{header|Scala}}==
===Java Swing Interoperability===
<lang Scala>import java.awt._
import java.awt.event.ActionEvent
 
import javax.swing._
 
object PolySpiral extends App {
 
SwingUtilities.invokeLater(() =>
new JFrame("PolySpiral") {
 
class PolySpiral extends JPanel {
private var inc = 0.0
 
override def paintComponent(gg: Graphics): Unit = {
val g = gg.asInstanceOf[Graphics2D]
def drawSpiral(g: Graphics2D, l: Int, angleIncrement: Double): Unit = {
var len = l
var (x1, y1) = (getWidth / 2d, getHeight / 2d)
var angle = angleIncrement
for (i <- 0 until 150) {
g.setColor(Color.getHSBColor(i / 150f, 1.0f, 1.0f))
val x2 = x1 + math.cos(angle) * len
val y2 = y1 - math.sin(angle) * len
g.drawLine(x1.toInt, y1.toInt, x2.toInt, y2.toInt)
x1 = x2
y1 = y2
len += 3
angle = (angle + angleIncrement) % (math.Pi * 2)
}
}
 
super.paintComponent(gg)
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
drawSpiral(g, 5, math.toRadians(inc))
}
 
setBackground(Color.white)
setPreferredSize(new Dimension(640, 640))
 
new Timer(40, (_: ActionEvent) => {
inc = (inc + 0.05) % 360
repaint()
}).start()
}
 
add(new PolySpiral, BorderLayout.CENTER)
pack()
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
setLocationRelativeTo(null)
setResizable(true)
setVisible(true)
}
)
 
}</lang>
=={{header|SPL}}==
<lang spl>width,height = #.scrsize()
Anonymous user