[orx-shapes] Fix bug in RectifiedPath for closed paths

This commit is contained in:
Edwin Jakobs
2024-05-22 12:17:23 +02:00
parent d2e6d0070c
commit 86ae5f70de
2 changed files with 10 additions and 2 deletions

View File

@@ -17,7 +17,7 @@ abstract class RectifiedPath<T : EuclideanVector<T>>(
val candidatePoints =
originalPath.equidistantPositionsWithT((originalPath.length * lengthScale).toInt().coerceAtLeast(2), distanceTolerance)
val points = if (originalPath.closed) candidatePoints + candidatePoints.first() else candidatePoints
val points = if (originalPath.closed) candidatePoints + candidatePoints.first().copy(second = 1.0) else candidatePoints
val intervals by lazy {
points.zipWithNext().map {

View File

@@ -3,10 +3,19 @@ import org.openrndr.shape.Circle
import org.openrndr.shape.Ellipse
import kotlin.math.abs
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class TestRectifiedContour {
@Test
fun testEquidistantPointsWithT() {
val c = Circle(200.0, 200.0, 100.0).contour
val ep = (c.equidistantPositionsWithT(c.length.toInt()))
assertEquals(0.0, (ep[0].second))
}
@Test
fun testInverse() {
val c = Ellipse(40.0, 40.0, 40.0, 80.0).contour.sub(0.0, 0.333)
@@ -15,6 +24,5 @@ class TestRectifiedContour {
val ri = r.inverseRectify(rt)
assertTrue(abs(ri-0.125) < 1E-5)
}
}