96 lines
3.1 KiB
Kotlin
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))
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
} |