[orx-shapes] Add Tunni point/line operations

This commit is contained in:
Edwin Jakobs
2024-01-17 00:07:22 +01:00
parent 9b08ae20e6
commit 83b8faed94
2 changed files with 67 additions and 0 deletions

View 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)
}
}
}
}

View 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)
}
}
}
}