Skip to content

Commit

Permalink
Topo: do not search for verical on stations without angles
Browse files Browse the repository at this point in the history
  • Loading branch information
jmmuller committed Jun 19, 2024
1 parent c52f873 commit 959d66a
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
6 changes: 3 additions & 3 deletions MMVII/Doc/CommandReferences/SysCo.tex
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,10 @@ \section{{\tt TopoAdj} command}
The {\tt TopoAdj} command can perform an adjustment between survey and GCP constraints.
It is used as a substitute to {\tt OriBundleAdj} when there are no cameras.

As for {\tt OriBundleAdj}, when using survey measurements, a RTL SysCo must be used.

The GCP folder must then have a RTL CurSysCo.xml file, and do not have to declare all the points
referred to by topo observations, but automatic points initialization is not completed.
referred to by topo observations, but automatic points initialization is not completed for now.

The SysCo has to be of type RTL, except if there are only distances measurements.

\begin{verbatim}
For command : TopoAdj
Expand Down
12 changes: 10 additions & 2 deletions MMVII/src/Topo/ctopoobsset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ void cTopoObsSetStation::OnUpdate()
mRotVert2Instr = mRotVert2Instr * cRotation3D<tREAL8>::RotFromAxiator(mRotOmega.Pt());

// update mRotSysCo2Vert with new station position
mRotSysCo2Vert = mBA_Topo->getSysCo()->getVertical(*mPtOrigin->getPt());
updateVertMat();

//StdOut() << " OnUpdate mRotOmega: "<<mRotOmega.Pt()<<"\n";

Expand Down Expand Up @@ -288,6 +288,14 @@ bool cTopoObsSetStation::initialize()
}


void cTopoObsSetStation::updateVertMat()
{
if ((mOriStatus == eTopoStOriStat::eTopoStOriFixed) && (mBA_Topo->getSysCo()->getType()!=eSysCo::eRTL))
mRotSysCo2Vert = tRot::Identity(); // do not seach for vertical if all fixed, to work will all SysCo
else
mRotSysCo2Vert = mBA_Topo->getSysCo()->getVertical(*mPtOrigin->getPt());
}

void cTopoObsSetStation::setOrigin(std::string _OriginName)
{
#ifdef VERBOSE_TOPO
Expand All @@ -305,7 +313,7 @@ void cTopoObsSetStation::setOrigin(std::string _OriginName)

mRotVert2Instr = tRot::Identity();
mRotOmega.Pt() = {0.,0.,0.};
mRotSysCo2Vert = mBA_Topo->getSysCo()->getVertical(*mPtOrigin->getPt());
updateVertMat();
}

tREAL8 cTopoObsSetStation::getG0() const
Expand Down
1 change: 1 addition & 0 deletions MMVII/src/Topo/ctopoobsset.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class cTopoObsSetStation : public cTopoObsSet
//cTopoObsSetStation(cTopoObsSetStation const&) = delete;
//cTopoObsSetStation& operator=(cTopoObsSetStation const&) = delete;
void createAllowedObsTypes() override;
void updateVertMat();
eTopoStOriStat mOriStatus; //< is bubbled, fixed or 3d rot free
tRot mRotSysCo2Vert; //< rotation between global SysCo and local vertical frame
tRot mRotVert2Instr; //< the station orientation from local vertical frame
Expand Down

0 comments on commit 959d66a

Please sign in to comment.