Description
Computes the central body intersection.
Syntax
Parameters
Remarks
Example
C# |
Copy Code
|
IAgStkRadarLink radarLink = computeParams.RadarLink;
IAgStkRadarLinkGeometry radarLinkGeom = radarLink.Geometry;
IAgStkRadarPosVelProvider xmtRdrPosVel = radarLinkGeom.TransmitRadarPosVelProvider;
CartVec xmtRdrPosCBF = new CartVec(xmtRdrPosVel.PositionCBFArray);
IAgStkRadarCBIntersectComputeParams cbIntersectComputeParams = new AgStkRadarCBIntersectComputeParams() as IAgStkRadarCBIntersectComputeParams;
cbIntersectComputeParams.SetBasePositionCBF(xmtRdrPosCBF.X, xmtRdrPosCBF.Y, xmtRdrPosCBF.Z);
double sinOffset = Math.Sin(m_halfPi - OffsetAngle);
double cosOffset = Math.Cos(m_halfPi - OffsetAngle);
CartVec pt1Cbf = new CartVec(xmtRdrPosVel.ConvertBodyCartesianToCBFCartesianArray(cosOffset, 0.0, sinOffset));
cbIntersectComputeParams.SetDirectionCBF(pt1Cbf.X, pt1Cbf.Y, pt1Cbf.Z);
IAgStkRadarCBIntersectComputeResult intersectResult1 = xmtRdrPosVel.ComputeCentralBodyIntersect(cbIntersectComputeParams);
if (intersectResult1.IntersectionFound)
{
IAgStkRadarClutterPatch clutterPatch = computeParams.ClutterPatches.Add();
CartVec intersectPt = new CartVec(intersectResult1.Intercept1CBFArray);
clutterPatch.SetPositionCBF(intersectPt.X, intersectPt.Y, intersectPt.Z);
clutterPatch.Area = PatchArea;
}
|
|
C++ |
Copy Code
|
CComPtr<IAgStkRadarLink> pRadarLink;
EXCEPTION_HR(computeParams->get_RadarLink(&pRadarLink));
CComPtr<IAgStkRadarLinkGeometry> pRadarLinkGeom;
EXCEPTION_HR(pRadarLink->get_Geometry(&pRadarLinkGeom));
CComPtr<IAgStkRadarPosVelProvider> pXmtRdrPosVel;
EXCEPTION_HR(pRadarLinkGeom->get_TransmitRadarPosVelProvider(&pXmtRdrPosVel));
CartVec xmtRdrPosCBF;
EXCEPTION_HR(pXmtRdrPosVel->GetPositionCBF(&xmtRdrPosCBF.x, &xmtRdrPosCBF.y, &xmtRdrPosCBF.z));
CComPtr<IAgStkRadarCBIntersectComputeParams> pCbIntersectComputeParams;
EXCEPTION_HR(pCbIntersectComputeParams.CoCreateInstance(__uuidof(AgStkRadarCBIntersectComputeParams)));
EXCEPTION_HR(pCbIntersectComputeParams->SetBasePositionCBF(xmtRdrPosCBF.x, xmtRdrPosCBF.y, xmtRdrPosCBF.z));
CComPtr<IAgStkRadarClutterPatchCollection> pPatchCollection;
EXCEPTION_HR(computeParams->get_ClutterPatches(&pPatchCollection));
VARIANT_BOOL intersectFound;
double sinOffset = sin(AgCHALFPI - m_offsetAngle);
double cosOffset = cos(AgCHALFPI - m_offsetAngle);
CartVec pt1Cbf;
EXCEPTION_HR(pXmtRdrPosVel->ConvertBodyCartesianToCBFCartesian(cosOffset, 0.0, sinOffset, &pt1Cbf.x, &pt1Cbf.y, &pt1Cbf.z));
EXCEPTION_HR(pCbIntersectComputeParams->SetDirectionCBF(pt1Cbf.x, pt1Cbf.y, pt1Cbf.z));
CComPtr<IAgStkRadarCBIntersectComputeResult> pIntersectResult1;
EXCEPTION_HR(pXmtRdrPosVel->ComputeCentralBodyIntersect(pCbIntersectComputeParams, &pIntersectResult1));
EXCEPTION_HR(pIntersectResult1->get_IntersectionFound(&intersectFound));
if(intersectFound == VARIANT_TRUE)
{
CComPtr<IAgStkRadarClutterPatch> pClutterPatch;
EXCEPTION_HR(pPatchCollection->Add(&pClutterPatch));
CartVec intersectPt;
EXCEPTION_HR(pIntersectResult1->GetIntercept1CBF(&intersectPt.x, &intersectPt.y, &intersectPt.z));
EXCEPTION_HR(pClutterPatch->SetPositionCBF(intersectPt.x, intersectPt.y, intersectPt.z));
EXCEPTION_HR(pClutterPatch->put_Area(m_patchArea));
}
|
|
See Also