fix conversion functions to use appropriate vtk function
This commit is contained in:
parent
f8ad3c0204
commit
9c20e77013
@ -44,8 +44,8 @@ namespace cv
|
|||||||
Affine3f getViewerPose();
|
Affine3f getViewerPose();
|
||||||
void setViewerPose(const Affine3f &pose);
|
void setViewerPose(const Affine3f &pose);
|
||||||
|
|
||||||
void convertToWindowCoordinates(const Point3f &pt, Point3f &window_coord);
|
void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord);
|
||||||
void converTo3DRay(const Point3f &window_coord, Point3f &origin, Vec3f &direction);
|
void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction);
|
||||||
|
|
||||||
void spin();
|
void spin();
|
||||||
void spinOnce(int time = 1, bool force_redraw = false);
|
void spinOnce(int time = 1, bool force_redraw = false);
|
||||||
|
@ -51,5 +51,5 @@ cv::viz::Camera cv::viz::Viz3d::getCamera() const { return impl_->getCamera(); }
|
|||||||
void cv::viz::Viz3d::setViewerPose(const Affine3f &pose) { impl_->setViewerPose(pose); }
|
void cv::viz::Viz3d::setViewerPose(const Affine3f &pose) { impl_->setViewerPose(pose); }
|
||||||
cv::Affine3f cv::viz::Viz3d::getViewerPose() { return impl_->getViewerPose(); }
|
cv::Affine3f cv::viz::Viz3d::getViewerPose() { return impl_->getViewerPose(); }
|
||||||
|
|
||||||
void cv::viz::Viz3d::convertToWindowCoordinates(const Point3f &pt, Point3f &window_coord) { impl_->convertToWindowCoordinates(pt, window_coord); }
|
void cv::viz::Viz3d::convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord) { impl_->convertToWindowCoordinates(pt, window_coord); }
|
||||||
void cv::viz::Viz3d::converTo3DRay(const Point3f &window_coord, Point3f &origin, Vec3f &direction) { impl_->converTo3DRay(window_coord, origin, direction); }
|
void cv::viz::Viz3d::converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction) { impl_->converTo3DRay(window_coord, origin, direction); }
|
@ -642,32 +642,24 @@ cv::Affine3f cv::viz::Viz3d::VizImpl::getViewerPose ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
void cv::viz::Viz3d::VizImpl::convertToWindowCoordinates(const Point3f &pt, Point3f &window_coord)
|
void cv::viz::Viz3d::VizImpl::convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord)
|
||||||
{
|
{
|
||||||
// Use the built in function of renderer
|
Vec3d window_pt;
|
||||||
double point_wcs[3] = {pt.x, pt.y, pt.z};
|
vtkInteractorObserver::ComputeWorldToDisplay(renderer_, pt.x, pt.y, pt.z, window_pt.val);
|
||||||
renderer_->WorldToView(point_wcs[0], point_wcs[1], point_wcs[2]);
|
window_coord = window_pt;
|
||||||
window_coord.x = point_wcs[0];
|
|
||||||
window_coord.y = point_wcs[1];
|
|
||||||
window_coord.z = point_wcs[2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
void cv::viz::Viz3d::VizImpl::converTo3DRay(const Point3f &window_coord, Point3f &origin, Vec3f &direction)
|
void cv::viz::Viz3d::VizImpl::converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction)
|
||||||
{
|
{
|
||||||
// Use the built in function of renderer
|
Vec4d world_pt;
|
||||||
double point_view[3] = {window_coord.x, window_coord.y, window_coord.z};
|
vtkInteractorObserver::ComputeDisplayToWorld(renderer_, window_coord.x, window_coord.y, window_coord.z, world_pt.val);
|
||||||
renderer_->ViewToWorld(point_view[0], point_view[1], point_view[2]);
|
|
||||||
|
|
||||||
vtkCamera &active_camera = *renderer_->GetActiveCamera();
|
vtkCamera &active_camera = *renderer_->GetActiveCamera();
|
||||||
double *cam_pos = active_camera.GetPosition();
|
Vec3d cam_pos;
|
||||||
origin.x = cam_pos[0];
|
active_camera.GetPosition(cam_pos.val);
|
||||||
origin.y = cam_pos[1];
|
origin = cam_pos;
|
||||||
origin.z = cam_pos[2];
|
direction = normalize(Vec3d(world_pt.val) - cam_pos);
|
||||||
direction[0] = point_view[0] - cam_pos[0];
|
|
||||||
direction[1] = point_view[1] - cam_pos[1];
|
|
||||||
direction[2] = point_view[2] - cam_pos[2];
|
|
||||||
normalize(direction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -126,8 +126,8 @@ public:
|
|||||||
void setViewerPose(const Affine3f &pose);
|
void setViewerPose(const Affine3f &pose);
|
||||||
Affine3f getViewerPose();
|
Affine3f getViewerPose();
|
||||||
|
|
||||||
void convertToWindowCoordinates(const Point3f &pt, Point3f &window_coord);
|
void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord);
|
||||||
void converTo3DRay(const Point3f &window_coord, Point3f &origin, Vec3f &direction);
|
void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user