Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-25Cleanup: rename mat3_to_quat_is_ok to mat3_to_quat_legacyCampbell Barton
Update comment, noting why this is kept.
2022-08-25BLI_math: ensure non-negative matrices for mat3_to_quat calculationsCampbell Barton
Making the callers responsible for this isn't practical as matrices are often passed indirectly to a functions such as mat3_to_axis_angle, BKE_object_mat3_to_rot & BKE_pchan_mat3_to_rot. Or the matrix is combined from other matrices which could be negative. Given quaternions calculated from negative matrices are completely invalid and checking only needs to negate matrices with a negative determinant, move the check into mat3_to_quat and related functions. Add mat3_normalized_to_quat_fast for cases no error checking on the input matrix is needed such as blending rotations.
2022-08-24BLI_math: assert mat3_normalized_to_quat doesn't use a negative matrixCampbell Barton
Add an assert to ensure callers don't pass in negative matrices as the resulting quaternion is invalid.
2022-08-22Cleanup: match names between functions & declarationsCampbell Barton
Mostly update the declarations, in some cases rename in the function especially when the names used were inconstant with related functions.
2022-08-15Cleanup: simplify sin_cos_from_fractionChris Blackbourn
Multiply numerator and denominator by 8 to split circle into octants. Use symmetry and negation to increase precision.
2022-07-28BLI_math: improve symmetrical values from sin_cos_from_fractionCampbell Barton
When plotting equally distant points around a circle support an extra axis of symmetry so twice as many exact values are repeated than originally added in [0], see code-comments for a detailed explanation. Tests to ensure accuracy and exact symmetry have been added too. Follow up on fix for T87779. [0]: 087f27a52f7857887e90754d87a7a73715ebc3fb
2022-07-22Fix T87779: Asymmetric vertex positions in circles primitivesCampbell Barton
Add sin_cos_from_fraction which ensures each quadrant has matching values when their sign is flipped.
2022-05-17Cleanup: Use `switch` and `BLI_assert_unreachable()` more.Bastien Montagne
Replace some `if/else if` chains by proper `switch` statement. Replace some `BLI_assert(0)` calls by `BLI_assert_unreachable()` ones.
2022-02-11File headers: use SPDX for Zlib licenseCampbell Barton
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-09Cleanup: remove "The Original Code is: ..." from code commentsCampbell Barton
This is almost always meaningless as most code has changed since the comment was added. Besides this, version control can be used to check if/when a file was modified. Some cases of this were kept when they contain details about the original copyright holder.
2021-12-09Cleanup: move public doc-strings into headers for 'blenlib'Campbell Barton
- Added space below non doc-string comments to make it clear these aren't comments for the symbols directly below them. - Use doxy sections for some headers. - Minor improvements to doc-strings. Ref T92709
2021-07-08Cleanup: spellingCampbell Barton
2021-07-07Cleanup: spelling in commentsCampbell Barton
2021-07-03Cleanup: consistent use of tags: NOTE/TODO/FIXME/XXXCampbell Barton
Also use doxy style function reference `#` prefix chars when referencing identifiers.
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-21Fix T89291: Objects with rotation deltas don't rotate in correct axesGermano Cavalcante
Quaternion correction was not implemented and Euler values were being incorrectly combined.
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-01-24Cleanup: email address formattingCampbell Barton
Match git style email addresses, ignored by the spell checker.
2020-12-13Fix weird Swing+Twist decomposition with noncanonical quaternions.Alexander Gavrilov
It turns out that after the fix to T83196 (rB814b2787cadd) the matrix to quaternion conversion can produce noncanonical results in large areas of the rotation space, when previously this was limited to way smaller areas. This in turn causes Swing+Twist math to produce angles beyond 180 degrees, e.g. outputting a -120..240 range. This fixes both issues, ensuring that conversion outputs a canonical result, and decomposition canonifies its input. This was reported in chat by @jpbouza.
2020-11-30Fix T83196: bad matrix to quaternion precision near 180 degrees rotation.Alexander Gavrilov
Adjust the threshold for switching from the base case to trace > 0, based on very similar example code from www.euclideanspace.com to avoid float precision issues when trace is close to -1. Also, remove conversions to and from double, because using double here doesn't really have benefit, especially with the new threshold. Finally, add quaternion-matrix-quaternion round trip tests with full coverage for all 4 branches. Differential Revision: https://developer.blender.org/D9675
2020-10-10Cleanup: remove unnecessary commentsCampbell Barton
2020-10-03Cleanup: Remove/replace C standard library assert() and header usagesJulian Eisel
We have our own assert implementation, `BLI_assert()` that is prefered over the C standard library one. Its output is more consistent across compilers and makes termination on assert failure optional (through `WITH_ASSERT_ABORT`). In many places we'd include the C library header without ever accessing it.
2020-09-04Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fixSebastian Parborg
No functional changes
2020-08-08Cleanup: replace sizeof division with ARRAY_SIZE macroCampbell Barton
2020-08-07Cleanup: Blenlib, Clang-Tidy else-after-return fixes (incomplete)Sybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule in the `source/blender/blenlib` module. Not all warnings are addressed in this commit. No functional changes.
2020-07-01Cleanup: spellingCampbell Barton
2020-06-27Docs: correct invalid doxygen params & referencesCampbell Barton
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-09Cleanup: Replace ABS/SQUARE/CUBE with function callsSergey Sharybin
While it might be handy to have type-less functionality which is similar to how C++ math is implemented it can not be easily achieved with just preprocessor in a way which does not have side-effects on wrong usage. There macros where often used on a non-trivial expression, and there was at least one usage where it was causing an actual side effect/bug on Windows (see change around square_f(sh[index++]) in studiolight.c). For such cases it is handy to have a function which is guaranteed to have zero side-effects. The motivation behind actually removing the macros is that there is already a way to do similar calculation. Also, not having such macros is a way to guarantee that its usage is not changed in a way which have side-effects and that it's not used as an inspiration for cases where it should not be used. Differential Revision: https://developer.blender.org/D7051
2019-11-26Fix quaternion compatibility functionCampbell Barton
Use closest quaternion instead of only checking w sign flipping, which didn't catch all cases. T
2019-11-24Cleanup: doxygen commentsCampbell Barton
Also correct some outdated symbol references, add missing 'name' commands.
2019-09-05Cleanup: use backslash for doxygen commandsCampbell Barton
2019-09-03Drivers: support decomposing rotation into swing followed by twist.Alexander Gavrilov
In order to correctly drive corrective shape keys from a freely rotating organic joint it is very often found necessary to decompose the rotation into separate bending and twisting motions. This type of decomposition cannot be reproduced by any Euler order or a single quaternion. Instead this is done by using a helper bone with a Damped Track constraint aimed at the tail of the control to pick up the bending, and its helper child with Copy Transforms to separate the twist. Requiring two additional bones to drive a shape key or a correction bone seems inconvenient, so this implements the necessary math as new options in the recently introduced Rotation Mode dropdown of the Transform Channel driver variable type. The data is also accessible as a Transformation constraint input. The output is in the form of Quaternion-derived 'pseudo-angles', which for `Swing and Y Twist` would represent the following: * W: true bend angle, independent of bend direction. * Y: true twist angle. * X, Z: pseudo-angles representing the proportion of bending around X/Z. Reviewers: brecht Differential Revision: https://developer.blender.org/D5651
2019-08-26Cleanup: use BLI_assertCampbell Barton
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-04-07Cleanup: add comments about dual quaternion scale handling.Brecht Van Lommel
Ref T63327
2019-03-27Cleanup: style, use braces for blenlibCampbell Barton
2019-03-19BLI_math: use fallback for compatible quaternion calculationCampbell Barton
Copy the new value when the compatible quaternion isn't usable.
2019-03-19BLI_math: add utility to calculate compatible quaternionsCampbell Barton
2019-03-19Cleanup: comment blocksCampbell Barton
2019-02-26BLI_math: quat_to_axis_angle was zeroing the axisCampbell Barton
When there was no rotation the axis was zerod, while not exactly a bug, it means changing the angle does nothing and all axis-angle values are initialized with Y=1, use this convention when resetting the axis too.
2019-02-25Cleanup: use const args for BLI_math_rotationCampbell Barton
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2019-02-03Cleanup: trailing commasCampbell Barton
Needed for clan-format not to wrap onto one line.
2019-02-02Cleanup: remove author/date info from doxy headersCampbell Barton
2019-02-01Cleanup: remove redundant, invalid info from headersCampbell Barton
BF-admins agree to remove header information that isn't useful, to reduce noise. - BEGIN/END license blocks Developers should add non license comments as separate comment blocks. No need for separator text. - Contributors This is often invalid, outdated or misleading especially when splitting files. It's more useful to git-blame to find out who has developed the code. See P901 for script to perform these edits.
2019-01-15Cleanup: comment line length (blenlib)Campbell Barton
Prevents clang-format wrapping text before comments.
2018-12-23BLI_math_rotation: properly name the quaternion power function.Alexander Gavrilov
"angular mult factor" is a completely unintelligible description for a function that raises a unit quaternion to the scalar power.