void ToolTipCalibrateWidget::calibrateSlot() { ToolPtr refTool = mTools->getTool(); //Todo, we only allow the reference point with id 1 to be used to calibrate //this could be done more dynamic. if(!refTool || !refTool->hasReferencePointWithId(1)) return; ToolPtr tool = mServices->tracking()->getActiveTool(); CoordinateSystem to = mServices->spaceProvider()->getT(tool); Vector3D P_t = mServices->spaceProvider()->getActiveToolTipPoint(to); ToolTipCalibrationCalculator calc(mServices->spaceProvider(), tool, refTool, P_t); Transform3D calibration = calc.get_calibration_sMt(); QMessageBox msgBox; msgBox.setText("Do you want to overwrite "+tool->getName()+"s calibration file?"); msgBox.setInformativeText("This cannot be undone."); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); int ret = msgBox.exec(); if(ret == QMessageBox::Ok) { tool->setCalibration_sMt(calibration); mCalibrationLabel->setText("Calibration:\n"+qstring_cast(calibration)); } }
void ToolTipCalibrateWidget::testCalibrationSlot() { ToolPtr selectedTool = mTools->getTool(); if(!selectedTool || !selectedTool->hasReferencePointWithId(1)) return; CoordinateSystem to = mServices->spaceProvider()->getT(mServices->tracking()->getActiveTool()); Vector3D sampledPoint = mServices->spaceProvider()->getActiveToolTipPoint(to); ToolTipCalibrationCalculator calc(mServices->spaceProvider(), mServices->tracking()->getActiveTool(), selectedTool, sampledPoint); Vector3D delta_selectedTool = calc.get_delta_ref(); mDeltaLabel->setText("<b>Delta:</b> "+qstring_cast(delta_selectedTool)+" <br> <b>Length:</b> "+qstring_cast(delta_selectedTool.length())); report("Delta: "+qstring_cast(delta_selectedTool)+" Length: "+qstring_cast(delta_selectedTool.length())); }
void ToolTipCalibrateWidget::toolSelectedSlot() { QString text("Ref. point: <UNDEFINED POINT>"); mCalibrateButton->setEnabled(false); if(mTools->getTool()) { ToolPtr tool = mTools->getTool(); if(tool && tool->hasReferencePointWithId(1)) { text = "Ref. point: "+qstring_cast(tool->getReferencePoints()[1]); mCalibrateButton->setEnabled(true); } else reportWarning("Selected tool have no known reference point"); if(tool) { mCalibrationLabel->setText("Calibration:\n"+qstring_cast(tool->getCalibration_sMt())); } } mReferencePointLabel->setText(text); }