2015-01-26 5 views
0

카메라에서 스트리밍 비디오를받는 이미지면이 있습니다. 그 이미지를 카메라 앞에 놓아서 화면을 가득 채우려고합니다. 그러나 카메라에서 이미지까지 거리를 계산하는 데 문제가 있습니다.VTK 카메라로 물체로 뷰포트 채우기

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)); 

나는 거리가 정확할 것이라고 생각할 것이다.

답변

1

거리 계산에 적합한 공식을 얻으면 큰 도움이됩니다.

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

질문에 "닫히면"이 답변을 수락 할 수 있습니까? –

+0

@DavidDoria 24 시간 기다려야합니다. –