vtkLineWidget2 does not work with X/Y/Z constraints
Minimal code to reproduce :
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCommand.h>
#include <vtkLineRepresentation.h>
#include <vtkLineWidget2.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyData.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
namespace {
class vtkLineCallback : public vtkCommand
{
public:
static vtkLineCallback* New()
{
return new vtkLineCallback;
}
virtual void Execute(vtkObject* caller, unsigned long, void*)
{
vtkLineWidget2* lineWidget = reinterpret_cast<vtkLineWidget2*>(caller);
// Get the actual box coordinates of the line
vtkNew<vtkPolyData> polydata;
static_cast<vtkLineRepresentation*>(lineWidget->GetRepresentation())
->GetPolyData(polydata);
double p[3];
polydata->GetPoint(0, p);
std::cout << "P1: " << p[0] << " " << p[1] << " " << p[2] << " - ";
polydata->GetPoint(1, p);
std::cout << "P2: " << p[0] << " " << p[1] << " " << p[2] << std::endl;
}
vtkLineCallback()
{
}
};
}
int main(int, char*[])
{
// A renderer and render window
vtkNew<vtkRenderer> renderer;
vtkNew<vtkRenderWindow> renderWindow;
renderWindow->AddRenderer(renderer);
renderWindow->SetWindowName("LineWidget2");
// An interactor
vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
renderWindowInteractor->SetRenderWindow(renderWindow);
vtkNew<vtkLineWidget2> lineWidget;
lineWidget->SetInteractor(renderWindowInteractor);
lineWidget->CreateDefaultRepresentation();
vtkNew<vtkLineCallback> lineCallback;
lineWidget->AddObserver(vtkCommand::InteractionEvent, lineCallback);
// Render
renderWindow->Render();
renderWindowInteractor->Initialize();
renderWindow->Render();
lineWidget->On();
// Begin mouse interaction
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
When pressing 'X' key I get this kind of output :
P1: 1.02115 -0.305009 -0.154539 - P2: 0.716917 -0.244007 -0.123631
P1: 1.03489 -0.313052 -0.158613 - P2: 0.72791 -0.250441 -0.126891
P1: 1.03697 -0.314272 -0.159232 - P2: 0.729578 -0.251418 -0.127386
P1: 1.04176 -0.317076 -0.160653 - P2: 0.733411 -0.253661 -0.128522
P1: 1.04656 -0.319883 -0.162074 - P2: 0.737247 -0.255906 -0.12966
P1: 1.04865 -0.321105 -0.162694 - P2: 0.738918 -0.256884 -0.130155
P1: 1.05554 -0.32514 -0.164738 - P2: 0.744433 -0.260112 -0.13179
P1: 1.05763 -0.326364 -0.165358 - P2: 0.746106 -0.261091 -0.132287
P1: 1.06244 -0.329177 -0.166784 - P2: 0.749952 -0.263342 -0.133427
where Y and Z are clearly not fixed.