[orx-gradient-descent] convert to MPP
This commit is contained in:
@@ -23,12 +23,14 @@ def multiplatformModules = [
|
|||||||
"orx-compositor",
|
"orx-compositor",
|
||||||
"orx-easing",
|
"orx-easing",
|
||||||
"orx-fx",
|
"orx-fx",
|
||||||
|
"orx-gradient-descent",
|
||||||
"orx-image-fit",
|
"orx-image-fit",
|
||||||
"orx-noise",
|
"orx-noise",
|
||||||
"orx-parameters",
|
"orx-parameters",
|
||||||
"orx-shade-styles",
|
"orx-shade-styles",
|
||||||
"orx-shader-phrases",
|
"orx-shader-phrases",
|
||||||
"orx-quadtree",
|
"orx-quadtree",
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
project.ext {
|
project.ext {
|
||||||
|
|||||||
96
orx-gradient-descent/build.gradle.kts
Normal file
96
orx-gradient-descent/build.gradle.kts
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
import Orx_embed_shaders_gradle.EmbedShadersTask
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
kotlin("multiplatform")
|
||||||
|
kotlin("plugin.serialization")
|
||||||
|
id("orx.embed-shaders")
|
||||||
|
}
|
||||||
|
|
||||||
|
val kotlinxSerializationVersion: String by rootProject.extra
|
||||||
|
val kotestVersion: String by rootProject.extra
|
||||||
|
val junitJupiterVersion: String by rootProject.extra
|
||||||
|
val jvmTarget: String by rootProject.extra
|
||||||
|
val kotlinApiVersion: String by rootProject.extra
|
||||||
|
val kotlinVersion: String by rootProject.extra
|
||||||
|
val kotlinLoggingVersion: String by rootProject.extra
|
||||||
|
val kluentVersion: String by rootProject.extra
|
||||||
|
val openrndrVersion: String by rootProject.extra
|
||||||
|
val openrndrOS: String by rootProject.extra
|
||||||
|
val spekVersion: String by rootProject.extra
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm {
|
||||||
|
compilations {
|
||||||
|
val demo by creating {
|
||||||
|
defaultSourceSet {
|
||||||
|
kotlin.srcDir("src/demo")
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":orx-camera"))
|
||||||
|
implementation("org.openrndr:openrndr-application:$openrndrVersion")
|
||||||
|
implementation("org.openrndr:openrndr-extensions:$openrndrVersion")
|
||||||
|
runtimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion")
|
||||||
|
runtimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion")
|
||||||
|
implementation(compilations["main"]!!.output.allOutputs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compilations.all {
|
||||||
|
kotlinOptions.jvmTarget = jvmTarget
|
||||||
|
kotlinOptions.apiVersion = kotlinApiVersion
|
||||||
|
}
|
||||||
|
testRuns["test"].executionTask.configure {
|
||||||
|
useJUnitPlatform()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
js(IR) {
|
||||||
|
browser()
|
||||||
|
nodejs()
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
@Suppress("UNUSED_VARIABLE")
|
||||||
|
val commonMain by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":orx-parameters"))
|
||||||
|
implementation(project(":orx-shader-phrases"))
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion")
|
||||||
|
implementation("org.openrndr:openrndr-application:$openrndrVersion")
|
||||||
|
implementation("org.openrndr:openrndr-draw:$openrndrVersion")
|
||||||
|
implementation("org.openrndr:openrndr-filter:$openrndrVersion")
|
||||||
|
implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")
|
||||||
|
implementation("io.github.microutils:kotlin-logging:$kotlinLoggingVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Suppress("UNUSED_VARIABLE")
|
||||||
|
val commonTest by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(kotlin("test-common"))
|
||||||
|
implementation(kotlin("test-annotations-common"))
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion")
|
||||||
|
implementation("io.kotest:kotest-assertions-core:$kotestVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("UNUSED_VARIABLE")
|
||||||
|
val jvmTest by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(kotlin("test-common"))
|
||||||
|
implementation(kotlin("test-annotations-common"))
|
||||||
|
implementation(kotlin("test-junit5"))
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxSerializationVersion")
|
||||||
|
runtimeOnly("org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion")
|
||||||
|
runtimeOnly("org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion")
|
||||||
|
implementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion")
|
||||||
|
implementation("org.amshove.kluent:kluent:$kluentVersion")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("UNUSED_VARIABLE")
|
||||||
|
val jsTest by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(kotlin("test-js"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -175,12 +175,3 @@ fun minimize(_x0: DoubleArray,
|
|||||||
return MinimizationResult(x0, f0, g0, H1, iteration)
|
return MinimizationResult(x0, f0, g0, H1, iteration)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : Any> minimizeModel(model: T, endOnLineSearch: Boolean = false, tol: Double = 1e-8, maxIterations: Int = 1000, function: (T) -> Double) {
|
|
||||||
val doubles = modelToArray(model)
|
|
||||||
val weights = DoubleArray(doubles.size) { 1.0 }
|
|
||||||
val solution = minimize(doubles, weights, endOnLineSearch, tol, maxIterations) {
|
|
||||||
arrayToModel(it, model)
|
|
||||||
function(model)
|
|
||||||
}
|
|
||||||
arrayToModel(solution.solution, model)
|
|
||||||
}
|
|
||||||
12
orx-gradient-descent/src/jvmMain/kotlin/GradientDescent.kt
Normal file
12
orx-gradient-descent/src/jvmMain/kotlin/GradientDescent.kt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
@file:JvmName("GradientDescentJvmKt")
|
||||||
|
package org.openrndr.extra.gradientdescent
|
||||||
|
|
||||||
|
fun <T : Any> minimizeModel(model: T, endOnLineSearch: Boolean = false, tol: Double = 1e-8, maxIterations: Int = 1000, function: (T) -> Double) {
|
||||||
|
val doubles = modelToArray(model)
|
||||||
|
val weights = DoubleArray(doubles.size) { 1.0 }
|
||||||
|
val solution = minimize(doubles, weights, endOnLineSearch, tol, maxIterations) {
|
||||||
|
arrayToModel(it, model)
|
||||||
|
function(model)
|
||||||
|
}
|
||||||
|
arrayToModel(solution.solution, model)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user