public void ProcessSignals(IAgStkRadarRcsProcessSignalsParams processSignalsParams) { IAgCRSignal primPolSignal = processSignalsParams.PrimaryPolChannelSignal; primPolSignal.Power *= ConstantRCS; IAgStkRadarSignal primRdrSignal = primPolSignal as IAgStkRadarSignal; if (primRdrSignal != null) { primRdrSignal.Rcs = ConstantRCS; } IAgCRPolarization primPol = primPolSignal.Polarization; if (primPol != null) { IAgCRPolarization primOrthPol = null; if (EnablePolarization) { primOrthPol = processSignalsParams.ConstructOrthogonalPolarization(primPol); } primPolSignal.Polarization = primOrthPol; } IAgCRSignal orthPolSignal = processSignalsParams.OrthoPolChannelSignal; if (orthPolSignal != null) { orthPolSignal.Power *= ConstantRCS; IAgStkRadarSignal orthRdrSignal = orthPolSignal as IAgStkRadarSignal; if (orthRdrSignal != null) { orthRdrSignal.Rcs = ConstantRCS; } IAgCRPolarization orthPol = orthPolSignal.Polarization; if (orthPol != null) { IAgCRPolarization orthOrthPol = null; if (EnablePolarization) { orthOrthPol = processSignalsParams.ConstructOrthogonalPolarization(orthPol); } orthPolSignal.Polarization = orthOrthPol; } } }
public void Compute(IAgStkRadarClutterMapComputeParams computeParams) { IAgCRSignal signal = computeParams.Signal; IAgStkRadarClutterPatch clutterPatch = computeParams.ClutterPatch; double signalPower = signal.Power; double patchArea = clutterPatch.Area; double patchClutterCoeff = ConstantCoefficient; if (ApplyGrazingMask) { IAgStkRadarPosVelProvider patchPosVel = clutterPatch.PosVelProvider; CartVec patchPosCBF = new CartVec(patchPosVel.PositionCBFArray); IAgStkRadarLink radarLink = computeParams.RadarLink; IAgStkRadarLinkGeometry radarLinkGeom = radarLink.Geometry; IAgStkRadarPosVelProvider rdrRcvrPosVel = radarLinkGeom.ReceiveRadarPosVelProvider; CartVec rcvRdrPosCBF = new CartVec(rdrRcvrPosVel.PositionCBFArray); CartVec relPosCbf = patchPosCBF - rcvRdrPosCBF; CartVec surfaceNorm = new CartVec(patchPosVel.SurfaceNormalDeticArray); double grazingAngle = m_halfPi - CartVec.AngleBetween(surfaceNorm, relPosCbf); if (grazingAngle < 0.0) { grazingAngle = m_halfPi; } patchClutterCoeff = patchClutterCoeff * (grazingAngle / m_halfPi); } signal.Power += patchClutterCoeff * patchArea; IAgCRPolarization signalPol = signal.Polarization; if (signalPol != null) { signal.Polarization = computeParams.ConstructOrthogonalPolarization(signalPol); } }