29 lines
1.0 KiB
Matlab
29 lines
1.0 KiB
Matlab
function ret = calculateCaptureVelocity(this, PositionVector, VelocityVector)
|
|
|
|
switch this.SimulationMode
|
|
case "2D"
|
|
VelocityUnitVector = VelocityVector./norm(VelocityVector);
|
|
UpperLimit = 500;
|
|
LowerLimit = 0;
|
|
|
|
for Index = 1:500
|
|
InitialVelocity = (0.5 * (UpperLimit + LowerLimit)) * VelocityUnitVector;
|
|
ParticleDynamicalQuantities = this.solver(PositionVector, InitialVelocity);
|
|
FinalPositionVector = ParticleDynamicalQuantities(end, 1:3);
|
|
if rssq(FinalPositionVector) <= this.OvenDistance
|
|
LowerLimit = 0.5 * (UpperLimit + LowerLimit);
|
|
else
|
|
UpperLimit = 0.5 * (UpperLimit + LowerLimit);
|
|
end
|
|
|
|
if UpperLimit - LowerLimit < 1
|
|
ret = (0.5 * (UpperLimit + LowerLimit)) * VelocityUnitVector;
|
|
break;
|
|
end
|
|
end
|
|
case "3D"
|
|
% Development In progress
|
|
end
|
|
end
|
|
|