fix: fix world model point map bug
This commit is contained in:
@@ -137,9 +137,8 @@ void AngleAnnotationActor::onMeasureMouseMove(vtkRenderWindowInteractor *iren) {
|
||||
int y = iren->GetEventPosition()[1];
|
||||
vtkRenderer *renderer = iren->FindPokedRenderer(x, y);
|
||||
if (!renderer) return;
|
||||
renderer->SetDisplayPoint(x, y, 0.0);
|
||||
renderer->DisplayToWorld();
|
||||
double *p = renderer->GetWorldPoint();
|
||||
double p[3]={0.0,0.0,0.0};
|
||||
MapScreenPointToWorld(x, y,renderer,p);
|
||||
if (this->placedPointCount == 1) {
|
||||
controlP2->SetWorldPosition(p);
|
||||
this->SetWorldPosition2(p);
|
||||
@@ -155,9 +154,8 @@ bool AngleAnnotationActor::onMeasureLeftButtonDown(vtkRenderWindowInteractor *ir
|
||||
int y = iren->GetEventPosition()[1];
|
||||
vtkRenderer *renderer = iren->FindPokedRenderer(x, y);
|
||||
if (!renderer) return false;
|
||||
renderer->SetDisplayPoint(x, y, 0.0);
|
||||
renderer->DisplayToWorld();
|
||||
double *p = renderer->GetWorldPoint();
|
||||
double p[3]={0.0,0.0,0.0};
|
||||
MapScreenPointToWorld(x, y,renderer,p);
|
||||
if (this->placedPointCount == 0) {
|
||||
controlP1->SetWorldPosition(p);
|
||||
controlP2->SetWorldPosition(p);
|
||||
@@ -184,9 +182,8 @@ bool AngleAnnotationActor::onMeasureLeftButtonUp(vtkRenderWindowInteractor *iren
|
||||
int y = iren->GetEventPosition()[1];
|
||||
vtkRenderer *renderer = iren->FindPokedRenderer(x, y);
|
||||
if (!renderer) return true;
|
||||
renderer->SetDisplayPoint(x, y, 0.0);
|
||||
renderer->DisplayToWorld();
|
||||
double *p = renderer->GetWorldPoint();
|
||||
double p[3]={0.0,0.0,0.0};
|
||||
MapScreenPointToWorld(x, y,renderer,p);
|
||||
if (this->placedPointCount == 1) {
|
||||
controlP2->SetWorldPosition(p);
|
||||
this->SetWorldPosition2(p);
|
||||
|
||||
@@ -69,9 +69,8 @@ bool OpenPolyAnnotationActor::onMeasureLeftButtonDown(vtkRenderWindowInteractor
|
||||
int y = iren->GetEventPosition()[1];
|
||||
vtkRenderer *renderer = iren->FindPokedRenderer(x, y);
|
||||
if (!renderer) return false;
|
||||
renderer->SetDisplayPoint(x, y, 0.0);
|
||||
renderer->DisplayToWorld();
|
||||
double *p = renderer->GetWorldPoint();
|
||||
double p[3]={0.0,0.0,0.0};
|
||||
MapScreenPointToWorld(x, y,renderer,p);
|
||||
auto controlP = ControlPointRActor::New();
|
||||
|
||||
controlP->SetWorldPosition(p);
|
||||
@@ -189,12 +188,18 @@ void OpenPolyAnnotationActor::UpdatePerimeterAndAreaText()
|
||||
double *rp = renderPoints->GetPoint(0);
|
||||
text->SetDisplayPosition(rp[0] + 10, rp[1] - 20);
|
||||
double distance = 0.0;
|
||||
for (vtkIdType i = 1; i < BaseDataPoints->GetNumberOfPoints(); ++i)
|
||||
for (vtkIdType i = 0; i < BaseDataPoints->GetNumberOfPoints(); ++i)
|
||||
{
|
||||
double p1[3] = {0.};
|
||||
double p2[3] = {0.};
|
||||
BaseDataPoints->GetPoint(i, p1);
|
||||
BaseDataPoints->GetPoint(i - 1, p2);
|
||||
if (i+1<BaseDataPoints->GetNumberOfPoints())
|
||||
{
|
||||
BaseDataPoints->GetPoint(i + 1, p2);
|
||||
}
|
||||
else if (Closed){
|
||||
BaseDataPoints->GetPoint(0, p2);
|
||||
}
|
||||
|
||||
distance += std::sqrt(vtkMath::Distance2BetweenPoints(p1, p2));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user