#include "stdafx.h"
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkCamera.h"
#include "vtkCommand.h"
#include "vtkLight.h"
#include <iostream>
using namespace std;
//class vtkMyCallback:public vtkCommand
//{
//public:
// static vtkMyCallback *New()
// {return new vtkMyCallback;}
// virtual void Execute(vtkObject *caller,unsigned long,void*)
// {
// vtkRenderer* renderer = reinterpret_cast<vtkRenderer*>(caller);
// cout<<renderer->GetActiveCamera()->GetPosition()[0]<<""
// <<renderer->GetActiveCamera()->GetPosition()[1]<<""
// <<renderer->GetActiveCamera()->GetPosition()[2]<<"\n";
// }
//};
int _tmain(int argc, _TCHAR* argv[])
{
vtkConeSource *cone = vtkConeSource::New();
cone->SetHeight(3.0);
cone->SetRadius(1.0);
cone->SetResolution(10);
vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New();
coneMapper->SetInputConnection(cone->GetOutputPort());
vtkActor* coneActor = vtkActor::New();
coneActor->SetMapper(coneMapper);
vtkRenderer* ren1 = vtkRenderer::New();
ren1->AddActor(coneActor);
ren1->SetTwoSidedLighting(100);
// ren1->TwoSidedLightingOn();
ren1->SetBackground(0.1,0.2,0.4);
/*vtkLight* light = vtkLight::New();
light->SetFocalPoint(0,0,0);
light->SetPosition(-0.8,0.8,1);
ren1->AddLight(light);*/
vtkRenderWindow* renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
renWin->SetSize(300,300);
int i;
// while(true)renWin->Render();
//for(;;);
vtkCamera* vc;
// vc = ren1->GetActiveCamera();
// double d = vc->GetDistance();
// cout<<d<<endl;
int t = 0;
// vtkMyCallback* mol = vtkMyCallback::New();
// ren1->AddObserver(vtkCommand::StartEvent,mol);
// mol->Delete();
while(true)
{
renWin->Render();
vc = ren1->GetActiveCamera();
// vc->SetDistance(6);
// double d = vc->GetDistance();
// cout<<d<<endl;
// vc->Azimuth(1);
vc->Roll(10);
vc->Elevation(5);
vc->SetClippingRange(0.294411,2944.11);
// vc->SetPosition(0,0,10);
// vc->Zoom(1.1);
vc->SetViewUp(10,1,0);
if(t==0)
{
t++;
ostream& os = cout;
}
// vc->Azimuth(1);
}
cone->Delete();
coneMapper->Delete();
coneActor->Delete();
ren1->Delete();
renWin->Delete();
return 0;
}