feat (wip): implementing camera zooming and panning functionality

This commit is contained in:
djaidjai committed 2024-05-05 21:45:02 +02:00
1 parent cd87f383c9
commit 4d743a42c1
14 files changed
+180 -22

No files matched your search

+13
View File
@@ -3,6 +3,7 @@
#include <vtkImageActor.h>
#include <vtkImageData.h>
#include <vtkImageReader2.h>
#include <vtkTransformFilter.h>
using std::string;
@@ -24,6 +25,13 @@ void BackgroundImage::updateImage() {
imageReader->Update();
imageData = imageReader->GetOutput();
// TODO: transform the iamge to the range [-1,1] and center it on (0,0)/
// This will allow the backgorundImage to share a camera with our other layers.
// Facilitating the cameraMovement callback.
// vtkSmartPointer<vtkTransformFilter> transformFilter = createCartographicTransformFilter();
// transformFilter->SetInputData(imageData);
vtkNew<vtkImageActor> imageActor;
imageActor->SetInputData(imageData);
@@ -60,3 +68,8 @@ void BackgroundImage::setImagePath(string imagePath) {
this->imagePath = imagePath;
updateImage();
}
void BackgroundImage::setCamera(vtkCamera *cam) {
// TODO: fix the camera for this layer so this intentionally empty override can be removed.
}
+3
View File
@@ -32,6 +32,9 @@ public:
* @param imagePath : String to the path of the new image to use.
*/
void setImagePath(std::string imagePath);
void setCamera(vtkCamera *cam) override;
};
#endif
+3 -3
View File
@@ -65,13 +65,13 @@ void EGlyphLayer::readCoordinates() {
this->direction->SetNumberOfTuples(numLats*numLons);
points->Allocate(numLats*numLons);
auto camera = createNormalisedCamera();
ren->SetActiveCamera(camera);
// auto camera = createNormalisedCamera();
// ren->SetActiveCamera(camera);
int i = 0;
for (double lat : lats) {
for (double lon : lons) {
cout << "lon: " << lon << " lat: " << lat << endl;
// cout << "lon: " << lon << " lat: " << lat << endl;
direction->SetTuple3(i, 0.45, 0.90, 0); //FIXME: read this info from file
points->InsertPoint(i++, lon, lat, 0);
// see also https://vtk.org/doc/nightly/html/classvtkPolyDataMapper2D.html
+2 -1
View File
@@ -42,7 +42,8 @@ LGlyphLayer::LGlyphLayer() {
auto camera = createNormalisedCamera();
ren->SetActiveCamera(camera);
auto transform = createCartographicTransformFilter();
// TODO: this line seemed to do nothing?
// auto transform = createCartographicTransformFilter();
vtkSmartPointer<vtkTransformFilter> transformFilter = createCartographicTransformFilter();
transformFilter->SetInputData(data);
+5
View File
@@ -15,3 +15,8 @@ void Layer::updateData(int t) {
void Layer::addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
// By default, do nothing
}
void Layer::setCamera(vtkCamera *camera) {
this->getLayer()->SetActiveCamera(camera);
}
+5
View File
@@ -27,6 +27,11 @@ public:
* @param interactor : pointer to the interactor that observers can be added to.
*/
virtual void addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor);
/** Sets the active camera for the vtkRenderer associated with this layer.
* Used to share one camera between multiple layers.
*/
virtual void setCamera(vtkCamera *camera);
};
#endif
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.