Comments (4)
For reference, they are currently:
// Epsilon is some tiny value that determines how precisely equal we want our floats to be
// This is exported and left as a variable in case you want to change the default threshold for the
// purposes of certain methods (e.g. Unproject uses the default epsilon when determining
// if the determinant is "close enough" to zero to mean there's no inverse).
//
// This is, obviously, not mutex protected so be **absolutely sure** that no functions using Epsilon
// are being executed when you change this.
var Epsilon float{32,64} = 1e-10
var MinNormal = float{32,64}(1.1754943508222875e-38) // 1 / 2**(127 - 1)
Do you have a suggestion for what values they should be for 32 and 64-bit versions of mathgl?
Also, what is MinNormal
? It's not documented beyond "1 / 2**(127 - 1)", and I don't know what that is.
from mathgl.
So I have no clue what MinNormal is either. But according to this
https://github.com/golang/go/blob/master/src/math/const.go#L30-L33
it should be 1 / 2**(1023 - 1)
as for the default epsilon, my naive approach would be to make this n times smaller where n = MinNonZeroFloat32/MinNonZeroFloat64 but since Epsilon is already arbitrary i guess it could be any value that doesn't break the tests. (but it will obviously be much smaller)
from mathgl.
https://www.wolframalpha.com/input/?i=(1e-10)%2F((1+%2F+2**(127+-+1+%2B+23))%2F(1+%2F+2**(1023+-+1+%2B+52)))
1e-289 i guess, but my method if most likely incorrect (it seems wayyyy too accurate)
from mathgl.
So, I stubbed my toe on this one: https://github.com/go-gl/mathgl/blob/master/mgl64/quat.go#L440
That threshold value is way too large for its first use in the function. It's fine for the other use though.
from mathgl.
Related Issues (20)
- Error while trying to get library: undefined: sync.Pool HOT 5
- Usage with OpenGL HOT 4
- Matrix multiplication MulNx1 is incorrect HOT 2
- FloatEqualThreshhold broken ? HOT 6
- how to convert glm to mgl32? HOT 7
- Possible copy & paste errors in tests HOT 2
- mgl32.Project lacks perspective divide HOT 1
- Request for a "Get Started" Tutorial HOT 2
- Incorrect coordinate mapping in ScreenToGLCoords and GLToScreenCoords. HOT 2
- possible error in BezierCurve2D()? HOT 2
- Go modules-compatible version tags HOT 10
- Vulkan compatibility HOT 4
- Package broken with Go 1.13 HOT 3
- Performance of basic vector math operations could be up to a 100 times faster. HOT 9
- `mgl64.Round(0, 2)` returns `-0` HOT 1
- No glm::translate and glm::scale? HOT 1
- mgl64.Vec2 does not support indexing
- Add common method for number of colums and rows HOT 1
- Add Scale() method HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mathgl.