Upgrade to OPENRNDR 0.3.41-rc.1, add unit tests for shape related code

This commit is contained in:
Edwin Jakobs
2020-03-31 14:54:54 +02:00
parent 99d49060bf
commit 065bf71e51
8 changed files with 134 additions and 15 deletions

View File

@@ -15,8 +15,8 @@ buildscript {
apply plugin: 'org.jetbrains.dokka'
project.ext {
openrndrVersion = "0.3.40"
kotlinVersion = "1.3.70"
openrndrVersion = "0.3.41-rc.1"
kotlinVersion = "1.3.71"
spekVersion = "2.0.10"
libfreenectVersion = "0.5.7-1.5.2"
gsonVersion = "2.8.6"

View File

@@ -13,7 +13,7 @@ fun generateCap(sides: Int, radius: Double, enveloppe: List<Vector2> = listOf(Ve
val normals2D = enveloppe.zipWithNext().map {
val d = it.second - it.first
d.normalized.perpendicular
d.normalized.perpendicular()
}
val basePositions = cleanEnveloppe.map { Vector3(it.x, it.y, 0.0) }
@@ -57,7 +57,7 @@ fun generateRevolve(sides: Int, length: Double, enveloppe: List<Vector2> = listO
val normals2D = enveloppe.zipWithNext().map {
val d = it.second - it.first
d.normalized.perpendicular * Vector2(1.0, -1.0)
d.normalized.perpendicular() * Vector2(1.0, -1.0)
}

View File

@@ -28,7 +28,7 @@ fun generateTaperedCylinder(sides: Int, segments: Int, radiusStart: Double, radi
val dr = radiusEnd - radiusStart
val baseNormal = Vector2(length, dr).normalized.perpendicular.let { Vector3(x=it.y, y=0.0, z=it.x)}
val baseNormal = Vector2(length, dr).normalized.perpendicular().let { Vector3(x=it.y, y=0.0, z=it.x)}
//val baseNormal = Vector3(1.0, 0.0, 0.0)
for (segment in 0 until segments) {

View File

@@ -17,7 +17,7 @@ fun regularPolygon(sides: Int, center: Vector2 = Vector2.ZERO, radius: Double =
}
close()
}
return c.reversed
return c
}
fun regularPolygonRounded(sides: Int, roundFactor: Double = 0.5, center: Vector2 = Vector2.ZERO, radius: Double = 100.0, phase: Double = 0.0): ShapeContour {
@@ -55,7 +55,7 @@ fun regularPolygonRounded(sides: Int, roundFactor: Double = 0.5, center: Vector2
}
close()
}
return c.reversed
return c
}
fun regularPolygonBeveled(sides: Int, bevelFactor: Double = 0.5, center: Vector2 = Vector2.ZERO, radius: Double = 100.0, phase: Double = 0.0): ShapeContour {
@@ -93,5 +93,5 @@ fun regularPolygonBeveled(sides: Int, bevelFactor: Double = 0.5, center: Vector2
}
close()
}
return c.reversed
return c
}

View File

@@ -49,6 +49,7 @@ object TestChamferCorners : Spek({
cc.position(0.5) `should be near` c.position(0.5)
cc.position(1.0) `should be near` c.position(1.0)
cc.closed `should be equal to` c.closed
c.winding `should be equal to` cc.winding
}
}
@@ -121,6 +122,8 @@ object TestChamferCorners : Spek({
val cc = c.roundCorners(1.0)
c.winding `should be equal to` cc.winding
c.closed `should be equal to` cc.closed
val ccc = cc.roundCorners(1.0)
@@ -129,14 +132,14 @@ object TestChamferCorners : Spek({
cc.segments.size `should be equal to` 6
cc.segments.forEach {
println(it)
}
// cc.segments.forEach {
// println(it)
// }
println("---")
ccc.segments.forEach {
println(it)
}
// println("---")
// ccc.segments.forEach {
// println(it)
// }
it("should have 6 sides") {
ccc.segments.size `should be equal to` cc.segments.size
}

View File

@@ -0,0 +1,49 @@
import org.amshove.kluent.`should be equal to`
import org.openrndr.extra.shapes.regularPolygon
import org.openrndr.extra.shapes.regularPolygonBeveled
import org.openrndr.extra.shapes.regularPolygonRounded
import org.openrndr.shape.Winding
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
object TestRegularPolygon : Spek({
describe("a regular polygon with 3 sides") {
val rp = regularPolygon(3)
it("is closed") {
rp.closed `should be equal to` true
}
it("has clockwise winding") {
rp.winding `should be equal to` Winding.CLOCKWISE
}
}
describe("a regular polygon with rounded corners and 3 sides") {
val rp = regularPolygonRounded(3)
it("is closed") {
rp.closed `should be equal to` true
}
it("has clockwise winding") {
rp.winding `should be equal to` Winding.CLOCKWISE
}
}
describe("a regular polygon with beveled corners and 3 sides") {
val rp = regularPolygonBeveled(3)
it("is closed") {
rp.closed `should be equal to` true
}
it("has clockwise winding") {
rp.winding `should be equal to` Winding.CLOCKWISE
}
}
})

View File

@@ -0,0 +1,47 @@
import org.amshove.kluent.`should be equal to`
import org.openrndr.extra.shapes.regularPolygonBeveled
import org.openrndr.extra.shapes.regularPolygonRounded
import org.openrndr.extra.shapes.regularStar
import org.openrndr.extra.shapes.regularStarRounded
import org.openrndr.shape.Winding
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
object TestRegularStar : Spek({
describe("a regular star with 5 points") {
val rs = regularStar(5, 10.0, 20.0)
it("is closed") {
rs.closed `should be equal to` true
}
it("has clockwise winding") {
rs.winding `should be equal to` Winding.CLOCKWISE
}
}
describe("a regular star with rounded corners and 5 points") {
val rs = regularStarRounded(5, 10.0, 20.0, 0.2, 0.2)
it("is closed") {
rs.closed `should be equal to` true
}
it("has clockwise winding") {
rs.winding `should be equal to` Winding.CLOCKWISE
}
}
describe("a regular star with beveled corners and 5 points") {
val rs = regularPolygonBeveled(5, 0.5)
it("is closed") {
rs.closed `should be equal to` true
}
it("has clockwise winding") {
rs.winding `should be equal to` Winding.CLOCKWISE
}
}
})

View File

@@ -0,0 +1,20 @@
import org.amshove.kluent.`should be equal to`
import org.openrndr.extra.shapes.*
import org.openrndr.shape.Winding
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
object TestRoundedRectangle : Spek({
describe("a rounded square") {
val rs = RoundedRectangle(100.0, 100.0, 200.0, 200.0, 20.0).contour
it("is closed") {
rs.closed `should be equal to` true
}
it("has clockwise winding") {
rs.winding `should be equal to` Winding.CLOCKWISE
}
}
})