Files
Terrasaur/doc/tools/CompareOBJ.rst
2025-07-30 11:24:30 -04:00

133 lines
5.6 KiB
ReStructuredText

.. _CompareOBJ:
##########
CompareOBJ
##########
*****
Usage
*****
CompareOBJ reports the differences between two OBJ shape files. It can also find the
optimal rotation and/or translation to best fit one model to the other.
.. include:: ../toolDescriptions/CompareOBJ.txt
:literal:
********
Examples
********
Local Model Comparison
######################
Download the :download:`reference<./support_files/EVAL20_wtr.obj>` and :download:`comparison<./support_files/EVAL20.obj>`
shape models. You can view them in a tool such as
`ParaView <https://www.paraview.org/>`__.
.. figure:: images/CompareOBJ_local_1.png
This image shows the reference (pink) and comparison (grey) shape models.
Run CompareOBJ to find the optimal transform to align the comparison with the reference:
::
CompareOBJ -computeOptimalRotationAndTranslation -model EVAL20.obj \
-reference EVAL20_wtr.obj -computeVerticalError verticalError.txt \
-saveOptimalShape optimal.obj -savePlateDiff plateDiff.txt -savePlateIndex plateIndex.txt
The screen output is
::
Translation: 4.62205663e-04,7.83045454e-04,-2.29286045e-04
Rotation quaternion: 9.99865353e-01,5.09597815e-03,1.50904931e-02,3.94767030e-03
Rotation angle (degrees) and axis: 1.88048990e+00,3.10547953e-01,9.19611823e-01,2.40570289e-01
Center of rotation: -2.80636488e-02,2.59626158e-01,-3.68889950e-02
4x4 Transformation matrix:
9.99513386e-01 -7.74047588e-03 3.02171569e-02 4.62205663e-04
8.04807917e-03 9.99916894e-01 -1.00714394e-02 7.83045454e-04
-3.01366880e-02 1.03097286e-02 9.99492616e-01 -2.29286045e-04
0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00
Using 319740 of 319740 points (excluding 0.0% largest distances)
Min Distance: 2.7101076120651766E-11
Max Distance: 1.3343678431994644E-5
Mean Distance: 3.6381274026976392E-6
Mean Square Distance: 1.9828385012474584E-11
Root Mean Square Distance: 4.452907478544168E-6
Mean Vertical Distance: 3.643513246881461E-6
Mean Square Vertical Distance: 1.9878841624828557E-11
Root Mean Square Vertical Distance: 4.458569459459901E-6
Direction perpendicular to plane: 0.1308102982873679 0.9899926953698763 0.05294458401250757
Magnitude of projection perpendicular to plane: 8.235310856890277E-4
Projection vector of translation parallel to plane: 3.544793163646046E-4 -3.2244305568425196E-5 -2.728875559193712E-4
Magnitude of projection vector of translation parallel to plane: 4.485118718022471E-4
319740 plates used in error calculation out of 320000 total in the shape model
.. figure:: images/CompareOBJ_local_2.png
This image shows the reference (pink), comparison (grey), and transformed comparison (blue) shape models.
Global Model Comparison
#######################
Use the :download:`low resolution Bennu<./support_files/Bennu49k.obj>` shape model for this
example. We will use the ShapeFormatConverter tool to create a transformed
model for comparison:
::
ShapeFormatConverter -input Bennu49k.obj -output BennuComparison.obj \
-rotate 5,0,0,1 -translate 0.01,-0.01,0.01
This rotates the shape model by 5 degrees about the z axis and then translates
by the vector [0.01, -0.01, 0.01]. The units and frame are the same used in
the OBJ file, namely km and IAU_BENNU.
.. figure:: images/CompareOBJ_global_1.png
This image shows the reference (pink) and comparison (grey, 50% opacity) shape models.
Run CompareOBJ to find the optimal transform to align the comparison with the reference:
::
CompareOBJ -computeOptimalRotationAndTranslation \
-model BennuComparison.obj \
-reference Bennu49k.obj \
-computeVerticalError terrasaur-verticalError.txt \
-saveOptimalShape terrasaur-optimal.obj \
-savePlateDiff terrasaur-plateDiff.txt \
-savePlateIndex terrasaur-plateIndex.txt
The screen output is
::
Translation: -9.96162524e-03,7.99729762e-03,-1.00000044e-02
Rotation quaternion: 9.99048223e-01,-2.15657319e-08,-3.22625083e-08,4.36193625e-02
Rotation angle (degrees) and axis: 4.99999715e+00,-4.94407314e-07,-7.39637317e-07,1.00000000e+00
Center of rotation: -1.29539855e-02,-9.43799800e-03,8.39669000e-03
4x4 Transformation matrix:
9.96194702e-01 -8.71556932e-02 -6.63449701e-08 -9.96162524e-03
8.71556932e-02 9.96194702e-01 4.02758721e-08 7.99729762e-03
6.25822362e-08 -4.59049522e-08 1.00000000e+00 -1.00000044e-02
0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00
Using 49152 of 49152 points (excluding 0.0% largest distances)
Min Distance: 0.0
Max Distance: 3.563071622544315E-8
Mean Distance: 7.04333531909585E-9
Mean Square Distance: 7.536457599802241E-17
Root Mean Square Distance: 8.681277325257063E-9
Mean Vertical Distance: 7.043335319394247E-9
Mean Square Vertical Distance: 7.536457599439208E-17
Root Mean Square Vertical Distance: 8.681277325047973E-9
Direction perpendicular to plane: 0.6497386220463811 0.7600912355533176 -0.010051699174815498
Magnitude of projection perpendicular to plane: -2.9325978832850564E-4
Projection vector of translation parallel to plane: -0.00977108302826207 0.00822020181894647 -0.010002952125253225
Magnitude of projection vector of translation parallel to plane: 0.016220506549103512
49152 plates used in error calculation out of 49152 total in the shape model
.. figure:: images/CompareOBJ_global_2.png
This image shows the reference (pink), comparison (grey, 50% opacity), and transformed comparison (blue) shape models.