This program is used to two compare files describing the state (i.e.,
velocity and position) trajectory of a sequence of ArtiSynth simulations:
java artisynth.core.util.CompareStateFiles file1 file2
The reason for doing this is mainly regression testing: We record the state
trajectories for a series of simulations, save this in a file (usually named
something like XXXTestData.orig), and then after we have made changes to the
system, record the state trajectories again, save these in another file
(usually XXXTestData.out), and then compare with the original.
Because of numeric round-off error, we can't expect the numbers to always be
exactly the same - without introducing error, refactorization may change the
order of arithmetic operations, leading to small differences in
output. Hence we can't simply 'diff' the files, and so we use this program
instead.
Each file consists of a series of sections, arranged like this:
# comment line describing the section
t=0.00:
v: xxx xxx xxx xxx
x: xxx xxx xxx xxx xxx
t=0.01:
v: xxx xxx xxx xxx
x: xxx xxx xxx xxx xxx
...
where
t
,
v
,
x
denote time, velocity,
and position. Note that velocity and position do not necessarily have the
same number of state variables. Between the two files, each section must
have the same comment line and the same number of time entries. This program
then compares the maximum error between the velocity and position
trajectories for each section, and outputs the maximum overall. With the
-a
option, the errors for each section are also output.