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