View Issue Details

IDProjectCategoryView StatusLast Update
0003607NoesisGUIUnitypublic2024-10-25 10:31
ReporterXaron Assigned Tosfernandez  
PrioritynormalSeveritytweak 
Status resolvedResolutionfixed 
Product Version3.2.3 
Target Version3.2.5Fixed in Version3.2.5 
Summary0003607: Matrix not invertible issue
Description

We're using Noesis 3.2.3 in our quite big Unity project and had exceptions with non invertible matrices.

We needed to change those lines

public bool HasInverse {
get { return Math.Abs(Determinant) >= 0.0001f; }
}

public void Invert() {
float determinant = Determinant;
if (Math.Abs(determinant) < 0.0001f) {
throw new InvalidOperationException("Matrix is not Invertible");
}

to

public bool HasInverse {
get { return Math.Abs(Determinant) >= float.Epsilon; }
}

public void Invert() {
float determinant = Determinant;
if (Math.Abs(determinant) < float.Epsilon) {
throw new InvalidOperationException("Matrix is not Invertible");
}

Our map needs to invert some close to singular matrices... We're doing matrix transforms from long/lat (world positions) in meters to screen space, which obviously have very large numbers. Works fine, could be change of course.

Do you think that is a change which could make it into the official next version?

PlatformAny

Activities

Xaron

Xaron

2024-08-12 11:08

reporter   ~0009866

Forgot to mention: That code is in Matrix.cs

sfernandez

sfernandez

2024-08-12 12:32

manager   ~0009868

Yes, I think it will be safe to change that code.

Issue History

Date Modified Username Field Change
2024-08-12 11:07 Xaron New Issue
2024-08-12 11:08 Xaron Note Added: 0009866
2024-08-12 12:32 sfernandez Assigned To => sfernandez
2024-08-12 12:32 sfernandez Status new => assigned
2024-08-12 12:32 sfernandez Target Version => 3.2.5
2024-08-12 12:32 sfernandez Note Added: 0009868
2024-10-25 10:31 sfernandez Status assigned => resolved
2024-10-25 10:31 sfernandez Resolution open => fixed
2024-10-25 10:31 sfernandez Fixed in Version => 3.2.5
2025-10-10 13:29 jsantos Category Unity3D => Unity