Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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);
            }
        }