Files
orx/orx-shapes/src/jvmTest/kotlin/TestAdjustContour.kt

96 lines
3.1 KiB
Kotlin

import org.openrndr.extra.shapes.adjust.adjustContour
import org.openrndr.math.Vector2
import org.openrndr.shape.LineSegment
import org.openrndr.shape.Rectangle
import kotlin.math.cos
import kotlin.math.sin
import kotlin.test.Test
import kotlin.test.assertEquals
class TestAdjustContour {
@Test
fun testSingleLinearSegment() {
val adjusted = adjustContour(LineSegment(0.0, 0.0, 100.0, 100.0).contour) {
selectVertex(0)
vertex.moveTo(Vector2(50.0, 50.0))
selectVertex(1)
vertex.moveTo(Vector2(150.0, 150.0))
}
assertEquals(1, adjusted.segments.size)
assertEquals(50.0, adjusted.segments[0].start.x, 1E-6)
assertEquals(50.0, adjusted.segments[0].start.y, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.x, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.y, 1E-6)
}
@Test
fun testSingleLinearSegmentDefaultVertexSelection() {
val adjusted = adjustContour(LineSegment(0.0, 0.0, 100.0, 100.0).contour) {
for (v in vertices) {
v.moveBy(Vector2(50.0, 50.0))
}
}
assertEquals(1, adjusted.segments.size)
assertEquals(50.0, adjusted.segments[0].start.x, 1E-6)
assertEquals(50.0, adjusted.segments[0].start.y, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.x, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.y, 1E-6)
}
@Test
fun testSingleLinearSegmentDefaultEdgeSelection() {
val adjusted = adjustContour(LineSegment(0.0, 0.0, 100.0, 100.0).contour) {
for (e in edges) {
e.moveBy(Vector2(50.0, 50.0))
}
}
assertEquals(1, adjusted.segments.size)
assertEquals(50.0, adjusted.segments[0].start.x, 1E-6)
assertEquals(50.0, adjusted.segments[0].start.y, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.x, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.y, 1E-6)
}
@Test
fun testSingleQuadraticSegment() {
val adjusted = adjustContour(LineSegment(0.0, 0.0, 100.0, 100.0).segment.quadratic.contour) {
selectVertex(0)
vertex.moveTo(Vector2(50.0, 50.0))
selectVertex(1)
vertex.moveTo(Vector2(150.0, 150.0))
}
assertEquals(1, adjusted.segments.size)
assertEquals(50.0, adjusted.segments[0].start.x, 1E-6)
assertEquals(50.0, adjusted.segments[0].start.y, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.x, 1E-6)
assertEquals(150.0, adjusted.segments[0].end.y, 1E-6)
}
@Test
fun testEdgeTransform() {
val adjusted = adjustContour(LineSegment(0.0, 0.0, 100.0, 100.0).segment.quadratic.contour) {
for (e in edges) {
e.moveBy(Vector2(50.0, 50.0))
}
}
}
@Test
fun testRectangleEdgeTransform() {
var r = Rectangle(0.0, 0.0, 400.0, 400.0).contour
val seconds = 0.0
r = adjustContour(r) {
selectEdge(1)
for (edge in edges) {
edge.moveBy(Vector2(sin(seconds) * 10.0, cos(seconds) * 5.0))
}
}
}
}