The relevant entries of cylinderOrientationPredictions
should be unit quaternions, i.e. have length approximately equal to one.
After the quaternion predictions got corrected, they should again be unit quaternions, i.e. have length approximately equal to one.
The relevant entries of cylinderOrientationPredictions
should be unit quaternions, i.e. have length approximately equal to one.
After the quaternion prediction got corrected, it should again be a unit quaternions, i.e. have length approximately equal to one.
orientationOne
and orientationTwo
should be unit quaternions, i.e. have length approximately equal to one.
rodElementLength
should be positive.
inertiaWeightOne
and inertiaWeightTwo
should be values between 0 and 1.
cylinderCount
should be at least one.
rodElementLength
should be positive.
Executes the constraint solving step in bilateral interleaving order if executeInBilateralOrder and otherwise in naive order.
cylinderCount
should be at least one.
rodElementLength
should be positive.
cylinderCount
should be at least one.
rodElementLength
should be positive.
orientation
should be a unit quaternions, i.e. have length approximately equal to one.
e_3
should be a unit quaternions, i.e. have length approximately equal to one.
rodElementLength
should be positive.
inverseMassOne
, inverseMassTwo
and inertiaWeight
should be values between 0 and 1.
spheresCount
should be at least one.
rodElementLength
should be positive.
Executes the constraint solving step in bilateral interleaving order if executeInBilateralOrder and otherwise in naive order.
spheresCount
should be at least one.
rodElementLength
should be positive.
spheresCount
should be at least one.
rodElementLength
should be positive.
arrowHeadPositions
has a length of 4. arrowHeadPositions
has a length of 4. cylinderCount
should be at least one.
rodElementLength
should be positive.
spheresCount
should be at least one. matrix
must be a \( 3 \times 3 \) matrix. Sets the positions of the GameObjects spheres to spherePositions.
Calculates cylinderPositions based on spherePositions.
Sets the positions of the GameObjects cylinders to cylinderPositions.
Sets the rotations of the GameObjects cylinders to cylinderOrientations.
Performs the constraint solving of every constraint #solverStep many times.
Solve stretch constraints, if and only if solveStretchConstraints is true.
Solve bend twist constraints, if and only if solveBendTwistConstraints is true.
If solveStretchConstraints, then SpheresCount is at least two.
If solveStretchConstraints, then CylinderCount is at least one.
If solveBendTwistConstraints, then SpheresCount is at least three.
If solveBendTwistConstraints, then CylinderCount is at least two.
If solveStretchConstraints, after the step is complete the deviation between the actual rod element length and the default (rest state) rodElementLength should be close to zero.
If solveStretchConstraints, after the step is complete the deviation of the stretch constraint to zero should be close to zero.
Set SpheresCount to the length of spheres.
Set CylinderCount to the length of cylinders.
Call every init method of initializationStep.
Predict the sphereVelocities.
Predict the spherePositionPredictions.
Predict the cylinderAngularVelocities.
Predict the cylinderOrientationPredictions.
Upate sphereVelocities.
Upate spherePositions.
Upate cylinderAngularVelocities.
Upate cylinderOrientations.
Upate directors.
orientationOne
and orientationTwo are still unit quaternions at the end of the test.
The deviation between the bend twist constraint and zero is lower than a reasonable tolerance, i.e. close to zero., which means that the algorithm of SolveBendTwistConstraint() converges towards the fulfillment of the bend twist constraint.
Picks the first particle position uniformly distributed so that \( x,y,z \in [-5, 5] \).
Picks a distance between the two particles that is uniformly distributed in the interval \( [rodElementLength - maximalDistanceOffset, rodElementLength + maximalDistanceOffset] \).
Picks the second particle position uniformly distributed on the surface of the sphere with center particlePositionOne
and radius startDistance
.
orientation
is still a unit quaternion at the end of the test.
The deviation between the stretch constraint and zero is lower than the tolerance 0.1, which means that the algorithm of SolveStretchConstraint() converges towards the fulfillment of the stretch constraint.
The deviation between the actual distance of particlePositionOne
and particlePositionTwo
and the rest rod element length is lower than a reasonable tolerance, i.e. close to zero.