Improve error messages

This commit is contained in:
Edwin Jakobs
2025-01-25 14:26:14 +01:00
parent 864228d346
commit de637c087f
4 changed files with 21 additions and 12 deletions

View File

@@ -278,9 +278,16 @@ fun GltfFile.buildSceneNodes(): GltfSceneData {
ibmData.order(ByteOrder.nativeOrder()) ibmData.order(ByteOrder.nativeOrder())
(ibmData as Buffer).position(ibmAccessor.byteOffset + (ibmBufferView.byteOffset ?: 0)) (ibmData as Buffer).position(ibmAccessor.byteOffset + (ibmBufferView.byteOffset ?: 0))
require(ibmAccessor.type == "MAT4") require(ibmAccessor.type == "MAT4") {
require(ibmAccessor.componentType == GLTF_FLOAT) "Unsupported inverse bind matrix type: ${ibmAccessor.type}"
require(ibmAccessor.count == joints.size) }
require(ibmAccessor.componentType == GLTF_FLOAT) {
"Unsupported inverse bind matrix component type: ${ibmAccessor.componentType}"
}
require(ibmAccessor.count == joints.size) {
"Mismatch between inverse bind matrix count (${ibmAccessor.count}) and joints size (${joints.size})"
}
val ibms = (0 until ibmAccessor.count).map { val ibms = (0 until ibmAccessor.count).map {
val array = DoubleArray(16) val array = DoubleArray(16)
for (i in 0 until 16) { for (i in 0 until 16) {

View File

@@ -56,13 +56,16 @@ fun findContours(
fun blend(v1: Double, v2: Double): Double { fun blend(v1: Double, v2: Double): Double {
if (useInterpolation) { if (useInterpolation) {
require(v1 == v1 && v2 == v2) require(!v1.isNaN() && !v2.isNaN()) {
"Input values v1=$v1 or v2=$v2 are NaN, which is not allowed."
}
val f1 = min(v1, v2) val f1 = min(v1, v2)
val f2 = max(v1, v2) val f2 = max(v1, v2)
val v = (-f1) / (f2 - f1) val v = (-f1) / (f2 - f1)
require(v == v) require(v == v && v in 0.0..1.0) {
require(v in 0.0..1.0) "Invalid value calculated during interpolation: v=$v"
}
return if (f1 == v1) { return if (f1 == v1) {
v v

View File

@@ -172,11 +172,6 @@ fun Vector2.Companion.uniformRing(
outerRadius: Double = 1.0, outerRadius: Double = 1.0,
random: Random = Random.Default random: Random = Random.Default
): Vector2 { ): Vector2 {
require(innerRadius <= outerRadius) {
}
val eps = 1E-6 val eps = 1E-6
if (abs(innerRadius - outerRadius) < eps) { if (abs(innerRadius - outerRadius) < eps) {

View File

@@ -39,7 +39,11 @@ fun Turtle.segment(
}) })
require(position.distanceTo(segment0.start) < 1E-5) { require(position.distanceTo(segment0.start) < 1E-5) {
"""${position}, ${segment0.start}""" "Alignment error: Turtle position ${position} is not aligned with segment start ${segment0.start}. Distance: ${
position.distanceTo(
segment0.start
)
}"
} }
cb.segment(segment0) cb.segment(segment0)
orientation = cb.segments.last().pose(1.0).matrix33.matrix44 orientation = cb.segments.last().pose(1.0).matrix33.matrix44