...
This commit is contained in:
@@ -196,14 +196,18 @@ protected:
|
|||||||
{
|
{
|
||||||
if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_GENERIC &&
|
if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_GENERIC &&
|
||||||
pairKind != MccCoordPairKind::COORDS_KIND_XY) {
|
pairKind != MccCoordPairKind::COORDS_KIND_XY) {
|
||||||
// if constexpr (pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP ||
|
if constexpr (pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP ||
|
||||||
// pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) {
|
||||||
// _x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_180_180>();
|
_x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_180_180>();
|
||||||
// } else { // RA, AZ
|
} else { // RA, AZ
|
||||||
// _x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_0_360>();
|
_x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
// }
|
}
|
||||||
|
|
||||||
_x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_0_360>();
|
// _x = (double)MccAngle(_x).normalize<MccAngle::NORM_KIND_0_360>();
|
||||||
|
|
||||||
|
// if (utils::isEqual((double)_x, MCC_TWO_PI)) {
|
||||||
|
// _x = 0.0;
|
||||||
|
// }
|
||||||
|
|
||||||
// DEC and ALT is [-90,90] degrees
|
// DEC and ALT is [-90,90] degrees
|
||||||
if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_AZZD) {
|
if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_AZZD) {
|
||||||
|
|||||||
@@ -388,12 +388,6 @@ public:
|
|||||||
|
|
||||||
self._wakeupRequest->clear();
|
self._wakeupRequest->clear();
|
||||||
|
|
||||||
log_str = std::format("\n{:*^80}\n", " UNLOCKED ");
|
|
||||||
if constexpr (mcc_generic_mount_c<self_t>) {
|
|
||||||
self.logTrace(log_str);
|
|
||||||
} else {
|
|
||||||
std::println("{}", log_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
// if (stoken.stop_requested()) {
|
// if (stoken.stop_requested()) {
|
||||||
// break;
|
// break;
|
||||||
@@ -401,6 +395,17 @@ public:
|
|||||||
|
|
||||||
do_state = self._fsmState->load();
|
do_state = self._fsmState->load();
|
||||||
|
|
||||||
|
log_str = std::format(" UNLOCKED WITH STATE (STOP = {} SLEW = {} TRACK = {}) ",
|
||||||
|
do_state & STATE_STOP, do_state & STATE_SLEW, do_state & STATE_TRACK);
|
||||||
|
|
||||||
|
log_str = std::format("\n{:*^80}\n", log_str);
|
||||||
|
if constexpr (mcc_generic_mount_c<self_t>) {
|
||||||
|
self.logTrace(log_str);
|
||||||
|
} else {
|
||||||
|
std::println("{}", log_str);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (do_state & STATE_STOP) {
|
if (do_state & STATE_STOP) {
|
||||||
// if (_fsmState->load() & STATE_STOP) {
|
// if (_fsmState->load() & STATE_STOP) {
|
||||||
*self._stopMovementRequest = true;
|
*self._stopMovementRequest = true;
|
||||||
|
|||||||
@@ -334,10 +334,19 @@ public:
|
|||||||
} dfx, dfy, df; // partial derivatives
|
} dfx, dfy, df; // partial derivatives
|
||||||
|
|
||||||
ret = _computeFuncDeriv(x, y, res, true, &dfx, &dfy);
|
ret = _computeFuncDeriv(x, y, res, true, &dfx, &dfy);
|
||||||
if (!ret) {
|
if (ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// are all geometry coeffs equal to 0?
|
||||||
|
if (utils::isEqual(dfx.pcmX, 0.0) && utils::isEqual(dfy.pcmX, 0.0) && utils::isEqual(dfx.pcmY, 0.0) &&
|
||||||
|
utils::isEqual(dfy.pcmY, 0.0)) {
|
||||||
|
if constexpr (mcc_coord_pair_c<T>) {
|
||||||
|
*hw_pt = MccCoordPair<typename T::x_t, typename T::y_t>{x, y, obs_skycoord.epoch()};
|
||||||
|
}
|
||||||
|
|
||||||
|
return MccDefaultPCMErrorCode::ERROR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
dfx.pcmX += 1.0; // a
|
dfx.pcmX += 1.0; // a
|
||||||
dfx.pcmY += 1.0; // b
|
dfx.pcmY += 1.0; // b
|
||||||
@@ -356,15 +365,26 @@ public:
|
|||||||
// -1 | d -b |
|
// -1 | d -b |
|
||||||
// A = 1/detA * | -c a |
|
// A = 1/detA * | -c a |
|
||||||
//
|
//
|
||||||
|
// and
|
||||||
|
//
|
||||||
|
// -1 | pcmX | | d*pcmX - b*pcmY |
|
||||||
|
// A * | pcmY | = | -c*pcmX + a*pcmY |
|
||||||
|
//
|
||||||
|
|
||||||
df.pcmX = dfy.pcmY * res->pcmX - dfx.pcmY * res->pcmY;
|
df.pcmX = (dfy.pcmY * res->pcmX - dfx.pcmY * res->pcmY) / detJ;
|
||||||
df.pcmY = -dfy.pcmX * res->pcmX + dfx.pcmX * res->pcmY;
|
df.pcmY = (-dfy.pcmX * res->pcmX + dfx.pcmX * res->pcmY) / detJ;
|
||||||
|
|
||||||
res->pcmX -= df.pcmX;
|
res->pcmX = -df.pcmX;
|
||||||
res->pcmY -= df.pcmY;
|
res->pcmY = -df.pcmY;
|
||||||
|
// res->pcmX -= df.pcmX;
|
||||||
|
// res->pcmY -= df.pcmY;
|
||||||
|
|
||||||
|
// if constexpr (mcc_coord_pair_c<T>) {
|
||||||
|
// *hw_pt = MccCoordPair<typename T::x_t, typename T::y_t>{res->pcmX, res->pcmY, obs_skycoord.epoch()};
|
||||||
|
// }
|
||||||
if constexpr (mcc_coord_pair_c<T>) {
|
if constexpr (mcc_coord_pair_c<T>) {
|
||||||
*hw_pt = MccCoordPair<typename T::x_t, typename T::y_t>{res->pcmX, res->pcmY, obs_skycoord.epoch()};
|
*hw_pt =
|
||||||
|
MccCoordPair<typename T::x_t, typename T::y_t>{x + res->pcmX, y + res->pcmY, obs_skycoord.epoch()};
|
||||||
}
|
}
|
||||||
} else { // for B-splines the result is computed directly from inverse B-spline coefficients
|
} else { // for B-splines the result is computed directly from inverse B-spline coefficients
|
||||||
ret = _computeFuncDeriv(x, y, res);
|
ret = _computeFuncDeriv(x, y, res);
|
||||||
|
|||||||
Reference in New Issue
Block a user