Improve error messages
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user