Christopher Durham
f578181351
Fix glm::is_normalized epsilon
...
The existing comparison bound of $\epsilon^2$ is improperly scaled for
testing an epsilon of the squared vector magnitude. Let $\epsilon$ be
our specified epsilon and $\delta$ be the permissible delta of the
squared magnitude. Thus, for a nearly-normalized vector, we have
$$\begin{align}
\sqrt{1 + \delta} &= 1 + \epsilon \\
\delta &= (1 + \epsilon)^2 - 1 \\
\delta &= \epsilon^2 + 2\epsilon
\text{ .}\end{align}$$
Since we only care about small epsilon, we can assume
that $\epsilon^2$ is small and just use $\delta = 2\epsilon$. And in
fact, [this is the bound used by GLM][GLM#isNormalized] (MIT license)
... except they're using `length` and not `length2` for some reason.
[GLM#isNormalized]: b06b775c1c/glm/gtx/vector_query.inl (L102)
If we stick an epsilon of `1.0e-6` into the current implementation,
this gives us a computed delta of `1.0e-12`: smaller than the `f32`
machine epsilon, and thus no different than direct float comparison
without epsilon. This also gives an effetive epsilon of `5.0e-13`;
*much* less than the intended `1.0e-6` of intended permitted slack!
By doing a bit more algebra, we can find the effective epsilon is
$\sqrt{\texttt{epsilon}^2 + 1} - 1$. This patch makes the effective
epsilon $\sqrt{2\times\texttt{epsilon} + 1} - 1$ which still isn't
*perfect*, but it's effectively linear in the domain we care about,
only really making a practical difference above an epsilon of 10%.
TL;DR: the existing `is_normalized` considers a vector normalized if
the squared magnitude is within `epsilon*epsilon` of `1`. This is wrong
and it should be testing if it's within `2*epsilon`. This PR fixes it.
For absence of doubt, a comparison epsilon of $\texttt{epsilon}^2$ is
correct when comparing squared magnitude against zero, such as when
testing if a displacement vector is nearly zero.
2024-01-13 00:02:26 -05:00
Ababwa
0b89950fca
Correct less than or equal symbol in doc in vector_relational.rs
...
Less than or equal <=
2024-01-11 23:24:13 -08:00
Benjamin Saunders
7866bcee5c
Remove CUDA support relying on abandoned toolchain
2024-01-11 23:09:17 -08:00
Benjamin De Roeck
a60870daf6
docs: Demonstrate correct function in to_homogeneous example ( #1346 )
2024-01-04 19:21:40 -08:00
Kurt Lawrence
6dce471297
Make OPoint call `T::fmt` to respect formatting modifiers ( #1336 )
2023-12-20 14:42:54 -08:00
Julian Knodt
1e0cb7bc09
Fix Clippy Warnings ( #1300 )
2023-12-16 13:54:38 -08:00
zachs18
a01fa48e33
Forward `std` feature to some deps. ( #1321 )
2023-12-10 19:35:54 -08:00
Bruce Mitchener
c3fe38b318
docs: Fix unbalanced backticks.
2023-12-10 14:04:53 -08:00
Sébastien Crozet
a91e3b0d89
Merge pull request #1315 from yotamofek/owned-view-iter
...
Allow creating matrix iter with an owned view
2023-11-12 23:29:41 +01:00
Sébastien Crozet
83eccc6b8f
Merge pull request #1312 from arscisca/dev-DefaultTrait
...
Implement Default trait for sparse matrix types
2023-11-12 23:27:37 +01:00
Sébastien Crozet
2e99320d01
Merge pull request #1314 from rasmusgo/fix-svd-near-zero
...
Fix bug in SVD related to values near zero
2023-11-12 23:18:59 +01:00
Sébastien Crozet
c5276c90e1
cargo fmt
2023-11-12 23:17:33 +01:00
Sébastien Crozet
06b8d38970
fix no-std builds.
2023-11-12 23:17:17 +01:00
Sébastien Crozet
469390f4b9
Check norm_squared instead of mangnitude.
2023-11-12 23:12:52 +01:00
Sébastien Crozet
f8cd2d497d
Merge pull request #1308 from decathorpe/dev
...
Fix and clarify license in crate metadata and add missing license files
2023-11-12 23:04:32 +01:00
Yotam Ofek
1195eadd1a
Allow creating matrix iter with an owned view
2023-11-12 08:19:29 +00:00
Rasmus Brönnegård
7ea9ecee08
Test for axes with zero magnitude
2023-11-09 01:20:44 +01:00
Rasmus Brönnegård
03c24fb369
Add unit tests for issue 1313
2023-11-09 00:53:42 +01:00
Rasmus Brönnegård
b6e094c82f
Fix spelling in givens.rs
2023-11-09 00:48:13 +01:00
Alessandro Rocco Scisca
0887b875a5
Implement Default trait for sparse matrix types
2023-10-30 17:50:56 +00:00
Fabio Valentini
bad63b6423
Fix and clarify license in crate metadata and add missing license files
2023-10-24 18:33:53 +02:00
Sébastien Crozet
c6ff3eeb7e
Merge pull request #1265 from waywardmonkeys/fix-html-links
...
docs: Use intradoc links rather than HTML.
2023-09-30 18:24:28 +02:00
Sébastien Crozet
804e606c97
Merge pull request #1270 from waywardmonkeys/look-at-lh-is-left-handed
...
doc: Isometry's `look_at_lh` is left-handed.
2023-09-30 18:21:48 +02:00
Sébastien Crozet
d2d2571590
Merge pull request #1273 from waywardmonkeys/blackbox-criterion
...
Use std::hint::black_box consistently.
2023-09-30 18:20:09 +02:00
Sébastien Crozet
2043824058
Merge pull request #1281 from waywardmonkeys/clippy-single_component_path_imports
...
nalgebra-glm: Fix clippy single_component_path_imports.
2023-09-30 18:16:16 +02:00
Sébastien Crozet
1987ca29bb
Merge pull request #1282 from waywardmonkeys/clippy-needless-borrow
...
clippy: Fix needless_borrow warnings.
2023-09-30 18:15:42 +02:00
Sébastien Crozet
5a9d036226
Merge pull request #1283 from waywardmonkeys/dual-quaternion-wrong-self-convention
...
DualQuaternion: Fix to_vector self convention.
2023-09-30 18:13:23 +02:00
Sébastien Crozet
c9008ab859
Merge pull request #1284 from waywardmonkeys/glm-too-many-arguments
...
nalgebra-glm, clippy: Suppress too_many_arguments.
2023-09-30 17:56:16 +02:00
Sébastien Crozet
25749e3b89
Merge pull request #1288 from JulianKnodt/dev
...
Add `try_from_triplets_iter`
2023-09-30 17:55:41 +02:00
Sébastien Crozet
b39bd09eaa
chore: swap test names
2023-09-30 17:55:04 +02:00
Sébastien Crozet
542f6cf437
Merge pull request #1302 from mgeier/doc-norm_squared
...
DOC: Use norm_squared() in its doctest
2023-09-30 17:44:41 +02:00
Matthias Geier
87796ace42
DOC: Use norm_squared() in its doctest
2023-09-30 13:01:11 +02:00
julianknodt
666b0fd2de
Add `try_from_triplets_iter`
...
Calls `try_from_triplets` for now, and is mentioned in the documentation.
2023-08-22 22:19:42 -07:00
Bruce Mitchener
1b1d950f74
nalgebra-glm, clippy: Suppress too_many_arguments.
...
Matrix constructors need more args.
2023-08-19 01:00:01 +07:00
Bruce Mitchener
bfb84e8fc6
DualQuaternion: Fix to_vector self convention.
...
By taking a ref, we can avoid an extra copy on the caller side.
2023-08-19 00:52:59 +07:00
Bruce Mitchener
1d9a4bf6ec
clippy: Fix needless_borrow warnings.
2023-08-19 00:36:24 +07:00
Bruce Mitchener
8609167053
nalgebra-glm: Fix clippy single_component_path_imports.
...
These imports are redundant and not needed.
2023-08-19 00:19:42 +07:00
Andreas Borgen Longva
f404bcbd6d
Merge pull request #1279 from waywardmonkeys/clippy-less-lazy
...
clippy: Don't need lazy eval for len calls.
2023-08-15 11:01:13 +02:00
Andreas Borgen Longva
1e40308118
Merge pull request #1278 from waywardmonkeys/clippy-needless-return
...
clippy: Fix needless_return warnings.
2023-08-15 11:00:24 +02:00
Bruce Mitchener
cb2ed212ed
clippy: Don't need lazy eval for len calls.
2023-08-15 14:46:35 +07:00
Bruce Mitchener
76866ad878
clippy: Fix needless_return warnings.
2023-08-15 14:34:34 +07:00
Andreas Borgen Longva
6ac9d8995c
Merge pull request #1276 from waywardmonkeys/fix-rkyv-feature-doc-warnings
...
docs: Fix 2 warnings when building with rkyv.
2023-08-15 09:19:07 +02:00
Andreas Borgen Longva
02260161b1
Merge pull request #1277 from waywardmonkeys/unused-split
...
`split_at` is only used by Rayon code.
2023-08-15 09:18:54 +02:00
Bruce Mitchener
226761323f
docs: Fix 2 warnings when building with rkyv.
2023-08-14 17:23:59 +07:00
Bruce Mitchener
a2fd72dfb9
`split_at` is only used by Rayon code.
...
This fixes an unused code warning. Since the code is `pub(crate)`,
it was only available within the crate and only used by Rayon
code, so it is no functional change to not compile it except
when the right feature is enabled.
Also, fix a minor typo in some non-doc comments.
2023-08-14 17:21:45 +07:00
Andreas Borgen Longva
8d7763ab8f
Merge pull request #1275 from waywardmonkeys/no-default-features-unused-import-warnings
...
Fix import warnings when `--no-default-features`.
2023-08-14 08:57:45 +02:00
Andreas Borgen Longva
69b46cb7fa
Merge pull request #1260 from WarrenWeckesser/use-assert-macro
...
DOC: Fix compiler warning in the first example in lib.rs.
2023-08-14 08:53:24 +02:00
Andreas Borgen Longva
ec9a88c0ac
Merge pull request #1271 from waywardmonkeys/incorrect-usages-of-relative-eq
...
Use `assert_relative_eq!` instead of relative_eq!`.
2023-08-14 08:51:22 +02:00
Andreas Borgen Longva
3fdeeca09c
Merge pull request #1272 from waywardmonkeys/unused-lifetimes
...
clippy: Remove unused lifetimes.
2023-08-14 08:36:50 +02:00
Bruce Mitchener
14b00f6bf6
Fix import warnings when `--no-default-features`.
2023-08-14 11:40:03 +07:00