セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

マーブルワーズ

5. 気を取り直して、Processing

さて、無事Scalaのプロジェクトが作成できたので、Processingを使って遊びます。
下記のようなコードを見よう見まねで書いてみました。Javaのコードを元にほとんどそのままScala化しています。

package com.qtamaki.hackason

import processing.core.PApplet
import processing.core.PConstants._

class Ro3D extends PApplet {
  var count = 0
  override def setup() {
    size(400,400, P3D)
    colorMode(RGB, 255)
  }

  override def draw() {
    background(0)
    lights
    translate(width/2, height/2, 0)
    rotateX(PI/5 * count * 0.05f)
    rotateY(PI/5 * count * 0.03f)
    rotateZ(PI/5 * count * 0.01f)
    fill(255,0,0)
    box(100,100,100)
    translate(0,0,-65)
    fill(0,255,0)
    box(30)
    translate(0,-65,65)
    fill(0,255,0)
    box(30)
    translate(-65,65,0)
    fill(0,255,0)
    box(30)
    translate(65,0,65)
    fill(0,255,0)
    box(30)
    translate(0,65,-65)
    fill(0,255,0)
    box(30)
    translate(65,-65,0)
    fill(0,255,0)
    box(30)
    count += 2
  }
}

ほぼ、javaですね。(汗
実行すると、変な物体が微妙に動きます。(汗汗

Processingが、オブジェクトのステータスを前提としたつくりになっているので、あまり関数型っぽくできないのが残念です。

さらに、これをOpenGLで動かしてみたいと思います。