[orx-shapes] Add Tunni point/line operations
This commit is contained in:
31
orx-shapes/src/jvmDemo/kotlin/tunni/DemoTunniAdjuster01.kt
Normal file
31
orx-shapes/src/jvmDemo/kotlin/tunni/DemoTunniAdjuster01.kt
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package tunni
|
||||||
|
|
||||||
|
import contour
|
||||||
|
import org.openrndr.application
|
||||||
|
import org.openrndr.color.ColorRGBa
|
||||||
|
import org.openrndr.extra.shapes.adjust.adjustContour
|
||||||
|
import org.openrndr.extra.shapes.tunni.tunniLine
|
||||||
|
import org.openrndr.shape.Circle
|
||||||
|
import kotlin.math.cos
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
application {
|
||||||
|
program {
|
||||||
|
extend {
|
||||||
|
val c = Circle(drawer.bounds.center, 200.0).contour
|
||||||
|
val c2 = adjustContour(c) {
|
||||||
|
selectEdges { it -> true }
|
||||||
|
for (e in edges) {
|
||||||
|
val tl = e.tunniLine
|
||||||
|
e.withTunniLine(tl.position(0.5) + tl.normal * cos(seconds)*200.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (s in c2.segments) {
|
||||||
|
drawer.stroke = ColorRGBa.WHITE
|
||||||
|
drawer.lineSegment(s.tunniLine)
|
||||||
|
}
|
||||||
|
drawer.contour(c2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
orx-shapes/src/jvmDemo/kotlin/tunni/DemoTunniPoint01.kt
Normal file
36
orx-shapes/src/jvmDemo/kotlin/tunni/DemoTunniPoint01.kt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package tunni
|
||||||
|
|
||||||
|
import org.openrndr.application
|
||||||
|
import org.openrndr.color.ColorRGBa
|
||||||
|
import org.openrndr.extra.shapes.tunni.tunniLine
|
||||||
|
import org.openrndr.extra.shapes.tunni.tunniPoint
|
||||||
|
import org.openrndr.extra.shapes.tunni.withTunniLine
|
||||||
|
import org.openrndr.shape.Circle
|
||||||
|
import kotlin.math.cos
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
application {
|
||||||
|
program {
|
||||||
|
extend {
|
||||||
|
drawer.clear(ColorRGBa.WHITE)
|
||||||
|
drawer.fill = ColorRGBa.BLACK
|
||||||
|
val c = Circle(drawer.bounds.center, 200.0).contour
|
||||||
|
|
||||||
|
drawer.fill = null
|
||||||
|
for (s in c.segments) {
|
||||||
|
val tp = s.tunniPoint
|
||||||
|
println(tp)
|
||||||
|
drawer.circle(tp, 10.0)
|
||||||
|
val sc = s.cubic
|
||||||
|
drawer.lineSegment(sc.control[0], sc.control[1])
|
||||||
|
//drawer.segment(s.withTunniPoint(tp + (mouse.position - drawer.bounds.center)/2.0))
|
||||||
|
drawer.segment(s.withTunniLine(s.tunniLine.position(0.5) + s.tunniLine.normal * cos(seconds) * 40.0))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
drawer.contour(c)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user