【问题标题】:VTK Position Camera to Fill Viewport with ObjectVTK 定位相机以用对象填充视口
【发布时间】:2015-01-26 09:08:55
【问题描述】:

我有一个从相机接收流式视频的图像平面。我正在尝试将该图像放在相机前面,使其充满屏幕。但是,我无法计算相机与图像之间的距离。

auto camera = this->renderer()->camera();
double *origin = imageData->GetOrigin();
int *extent = imageData->GetExtent();
double *spacing = imageData->GetSpacing();
double viewportHeight = this->renderer()->camera()->viewport()->height();

this->Internal->cameraImagePlaneRepresentation()->setImageData(imageData);

double imageCenterX = origin[0] + 0.5f * (extent[0] + extent[1]) * spacing[0];
double imageCenterY = origin[1] + 0.5f * (extent[2] + extent[3]) * spacing[1];
double imageWidth = (extent[1] - extent[0] + 1.f) * spacing[0];
double imageHeight = (extent[3] - extent[2] + 1.f) * spacing[1];

double viewAngleRadians = degreesToRadians(camera->viewAngle());
double hypotenuse = imageHeight / viewAngleRadians;
double distance = tan(viewAngleRadians * 0.5f) * hypotenuse;

camera->setFocalPoint(vesVector3f(imageCenterX, imageCenterY, 0.f));
camera->setPosition(vesVector3f(imageCenterX, imageCenterY, distance));

我认为距离是正确的,但它偏离了一个数量级。

【问题讨论】:

  • 不是斜边 = imageHeight / sin(viewAngleRadians) ????

标签: c++ ios vtk


【解决方案1】:

如果你掌握了计算距离的正确公式,这将大有帮助。

double viewAngleRadians = degreesToRadians(camera->viewAngle());
double distance = imageHeight / viewAngleRadians;

【讨论】:

  • 您能否接受这个答案,以便问题“关闭”?
  • @DavidDoria 你得等24小时。
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 2014-06-23
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
相关资源
最近更新 更多