------------------------------------------------------------------------------
| 170 | |
| 171 | //------------------------------------------------------------------------------ |
| 172 | double vtkAxisFollower::AutoScale( |
| 173 | vtkViewport* viewport, vtkCamera* camera, double screenSize, double position[3]) |
| 174 | { |
| 175 | double newScale = 0.0; |
| 176 | |
| 177 | if (!viewport) |
| 178 | { |
| 179 | std::cerr << "Invalid or nullptr viewport \n"; |
| 180 | return newScale; |
| 181 | } |
| 182 | |
| 183 | if (!camera) |
| 184 | { |
| 185 | std::cerr << "Invalid or nullptr camera \n"; |
| 186 | return newScale; |
| 187 | } |
| 188 | |
| 189 | if (!position) |
| 190 | { |
| 191 | std::cerr << "Invalid or nullptr position \n"; |
| 192 | return newScale; |
| 193 | } |
| 194 | |
| 195 | double factor = 1; |
| 196 | if (viewport->GetSize()[1] > 0) |
| 197 | { |
| 198 | factor = 2.0 * screenSize * tan(vtkMath::RadiansFromDegrees(camera->GetViewAngle() / 2.0)) / |
| 199 | viewport->GetSize()[1]; |
| 200 | } |
| 201 | |
| 202 | double dist = sqrt(vtkMath::Distance2BetweenPoints(position, camera->GetPosition())); |
| 203 | newScale = factor * dist; |
| 204 | |
| 205 | return newScale; |
| 206 | } |
| 207 | |
| 208 | //------------------------------------------------------------------------------ |
| 209 | void vtkAxisFollower::ComputeTransformMatrix(vtkRenderer* ren) |
no test coverage detected