Processing editor is hard to use, Java-like is slightly unpleasant, Anyway, I want to write in Kotlin and manage it in Gradle.
Because Processing does not work if it is Java 9 or higher https://github.com/processing/processing/wiki/Supported-Platforms#user-content-java-versions
$ brew cask reinstall caskroom/versions/zulu8
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
10.0.2, x86_64: "Java SE 10.0.2" /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
1.8.0_222-zulu-8.40.0.25, x86_64: "Zulu 8" /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home
Select Gradle and check Java and Kotlin.
For Project SDK, specify the 1.8 that you just installed.
The rest is along the road
build.gradle
dependencies {
compile group: 'org.processing', name: 'core', version: '3.3.7'
}
Open build.gradle
Add processing inside dependencies.
Then the download will start.
When the download is complete, it is OK if ʻorg.processing: core is added to ʻExternal Libraries.
Create a new Kotlin file in src / main / kotlin.
The file name is Main.tk.
src/main/kotlin/Main.tk
import processing.core.*
class Main : PApplet () {
fun run() {
return PApplet.main(Main::class.java.simpleName)
}
}
fun main() : Unit = Main().run()
It is a super-simple state that describes only the part necessary for processing execution.
Run Run MainKt from the triangle that appears next tofun main ().
When executed,
An empty Processing app has run.
Let's try ** Follow 3 ** in Examples in the Processing formula and implement it in Kotlin. https://processing.org/examples/follow3.html
src/main/kotlin/Main.tk
import processing.core.*
class Main : PApplet () {
var x = FloatArray(20)
var y = FloatArray(20)
var segLength = 18
override fun settings() {
size(640, 360)
}
override fun setup() {
strokeWeight(9F)
stroke(255F, 100F)
}
override fun draw() {
background(0f)
dragSegment(0, mouseX.toFloat(), mouseY.toFloat())
for (i in 0 until x.size - 1) {
dragSegment(i + 1, x[i], y[i])
}
}
private fun dragSegment(i: Int, xin: Float, yin: Float) {
val dx = xin - x[i]
val dy = yin - y[i]
val angle = PApplet.atan2(dy, dx)
x[i] = xin - PApplet.cos(angle) * segLength
y[i] = yin - PApplet.sin(angle) * segLength
segment(x[i], y[i], angle)
}
private fun segment(x: Float, y: Float, a: Float) {
pushMatrix()
translate(x, y)
rotate(a)
line(0F, 0F, segLength.toFloat(), 0F)
popMatrix()
}
fun run() {
return PApplet.main(Main::class.java.simpleName)
}
}
fun main() : Unit = Main().run()
When you do this
You can see that Processing is working properly.
If you write in gradle
build.gradle
repositories {
mavenCentral()
maven { url "https://clojars.org/repo" }
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.processing', name: 'core', version: '3.3.7'
compile group: 'ddf.minim', name: 'ddf.minim', version: '2.2.0'
compile group: 'controlp5', name: 'controlp5', version: '2.2.4'
compile group: 'de.sojamo', name: 'oscp5', version: '0.9.8'
}
I added clojars.org to the repositories because mavenCentral didn't have ʻoscp5 and controlp5`.
You can fight with this.
Recommended Posts