Hello! I have one slightly strange question … How accurate are the Length and Distance tools?
As accurate as they can be and as you want to see. You can change the display of measuring results in DocumentProperties>Units>Distance display precision. It goes up to 7 places after the decimal point.
The measurements are actually more accurate than that, they go out to as many decimal places as Rhino can manage with floating point math I think - like 12.
It’s better than that. Double precision floating point provides 15 or more significant decimal digits.
Should be enough accuracy for almost any use. One exception would be someone designing optics using a geo based coordinated system with the origin several thousand kilometers distant.
I was basing my answer on this:
Dunno if that’s a correct assumption though…
With floating point numbers there is a difference between absolute magnitude and number of digits itn the significand (new word for me ). Double precision floating point has 53 bits in the significand which is equivalent to 15 or 16 decimal digits (depends on the exact number). The exponent has 11 digits which provides a decimal exponent range of 10E-308 to 10E+308.
The Rhino ZeroTolerance constant of 1E-12 https://developer.rhino3d.com/api/RhinoCommon/html/F_Rhino_RhinoMath_ZeroTolerance.htm is an absolute magnitude, independent of the number of digits in the signficand. I am curious where it is used.
An example of where double precision floating point accuracy may not be sufficient for geometry calculations in Rhino would be someone who is working to an accuracy of 0.00001 mm with the coordinate system origin located.1000 kilimoters distant. Most users are unlikely to encounter such a situation.
What that means to me is that Rhino will consider any 2 numbers that are the same out to 12 places to be equal… thus anything smaller than that is considered to be ‘noise’…
You may be confusing magnitude and number of digits/places for floating point numbers…The number associated with the Rhino ZeroTolerance is 1E-12 or .00000000001
For example 12345678.90123456 (1.23456890123456E+07) and 12345678.90120000 (1.234567890120000E+07)
are the same out to 12 places but the difference between them is .00003456 (3.456E-05) which is significantly larger than the Rhino ZeroTolerance.
I don’t see how ZeroTolerance says anything about number of significant places. Rather it provides an absolute magnitude which anything smaller than can be considered as effectively zero. It would not be used in arithmetic operations because double point floating point arithmetic is standardized and does not do any extra truncation or rounding.
I was very busy, thank you very much, a very very detailed answer came out! This is a very interesting topic, but I don’t have time now