29 float detMax = mXDxPlusYDy2 - mDistXY2 * (mR02 - lr.getRMax2());
33 float detMaxRed = CAMath::Sqrt(detMax) * mDistXY2i;
34 float tCross0Max = mXDxPlusYDyRed + detMaxRed;
40 float tCross0Min = mXDxPlusYDyRed - detMaxRed;
41 if (tCross0Min > 1.f) {
44 float detMin = mXDxPlusYDy2 - mDistXY2 * (mR02 - lr.getRMin2());
46 mCrossParams1[0] = tCross0Min > 0.f ? tCross0Min : 0.f;
47 mCrossParams2[0] = tCross0Max < 1.f ? tCross0Max : 1.f;
48 return validateZRange(mCrossParams1[0], mCrossParams2[0], lr);
51 float detMinRed = CAMath::Sqrt(detMin) * mDistXY2i;
52 float tCross1Max = mXDxPlusYDyRed + detMinRed;
53 float tCross1Min = mXDxPlusYDyRed - detMinRed;
55 if (tCross1Max < 1.f) {
56 mCrossParams1[0] = tCross0Max < 1.f ? tCross0Max : 1.f;
57 mCrossParams2[0] = tCross1Max > 0.f ? tCross1Max : 0.f;
58 if (validateZRange(mCrossParams1[nCross], mCrossParams2[nCross], lr)) {
63 if (tCross1Min > -0.f) {
64 mCrossParams1[nCross] = tCross1Min < 1.f ? tCross1Min : 1.f;
65 mCrossParams2[nCross] = tCross0Min > 0.f ? tCross0Min : 0.f;
66 if (validateZRange(mCrossParams1[nCross], mCrossParams2[nCross], lr)) {