#include <Inventor/nodes/SoTransform.h>SoTransform - Узел, задающий 3D геометрические трансформацииЭтот узел задаёт неоднородные трансформации, вращения и перемещения. Все трансформации происходят вокруг текущей точки начала координат. C++ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <Inventor/Win/SoWin.h>
#include <Inventor/Win/viewers/SoWinExaminerViewer.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoCube.h>
#include <Inventor/nodes/SoTransform.h>
#include <Inventor/nodes/SoBaseColor.h>
#include "SoAutoPtr.h"
#include <math.h>
int main(int argc, char* argv[])
{
HWND wnd = SoWin::init( "example" );
SoAutoPtr<SoSeparator> root;
SoAutoPtr<SoCube> cube;
SoAutoPtr<SoBaseColor> colors[3];
colors[0]->rgb = SbColor(1.0f, 0, 0);
colors[1]->rgb = SbColor(0, 1.0f, 0);
colors[2]->rgb = SbColor(0, 0, 1.0f);
SoAutoPtr<SoTransform> transform;
transform->translation = SbVec3f(4.0f, 0, 0);
transform->rotation.setValue( SbVec3f(0,0,1.0f), float(40.0*M_PI/180.0) );
for( int i = 0; i < 9; ++i )
{
root->addChild(transform);
root->addChild( colors[i%3] );
root->addChild(cube);
}
SoWinExaminerViewer * viewer = new SoWinExaminerViewer(wnd);
viewer->setSceneGraph( root );
viewer->setSize( SbVec2s(800, 600) );
viewer->show();
SoWin::mainLoop();
return 0;
}
|