本文整理汇总了C++中geom::Vec3f::data方法的典型用法代码示例。如果您正苦于以下问题:C++ Vec3f::data方法的具体用法?C++ Vec3f::data怎么用?C++ Vec3f::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类geom::Vec3f
的用法示例。
在下文中一共展示了Vec3f::data方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char **argv)
{
// interface:
QApplication app(argc, argv);
MyQT sqt;
if (argc>1)
sqt.NBP = atoi(argv[1]);
sqt.setHelpMsg("Param :size of grid (number of objects)\nMpuse (with shift):\n"
" -click on object: selection\n -left click on frame: constraint 3d Rotation/Translation/Scale\n"
" -right click on frame :free 2D Rotation/Translation\nKeys:\n x/y/z lock/unlock translation\n a/b/c lock/unlock rotation\n s/t/u lock/unlock scaling");
// bounding box
Geom::Vec3f lPosObj = Geom::Vec3f(0.0f,0.0f,0.0f);
float lWidthObj = sqt.NBP*4.0f;
// envoit info BB a l'interface
sqt.setParamObject(lWidthObj,lPosObj.data());
// show final pour premier redraw
sqt.show();
// et on attend la fin.
return app.exec();
return 0;
}
示例2: setLightPosition
void ShaderPhong::setLightPosition(const Geom::Vec3f& lightPos)
{
bind();
glUniform3fv(*m_unif_lightPos,1,lightPos.data());
m_lightPos = lightPos;
unbind();
}
示例3: setLightPosition
void ShaderExplodeSmoothVolumes::setLightPosition(const Geom::Vec3f& lp)
{
m_light_pos = lp;
bind();
glUniform3fv(*m_unif_lightPos,1,lp.data());
unbind();
}
示例4: createMap
void MyQT::createMap()
{
// Dart d1 = Algo::Modelisation::createTetrahedron<PFP>(myMap);
// Dart d2 = d1;
position = myMap.addAttribute<PFP::VEC3, VERTEX>("position");
Algo::Modelisation::Polyhedron<PFP> prim1(myMap, position);
prim1.cylinder_topo(256, 256, true, true); // topo of sphere is a closed cylinder
prim1.embedSphere(2.0f);
// Dart d2 = d1;
// position[d2] = PFP::VEC3(1, 0, 0);
// d2 = PHI1(d2);
// position[d2] = PFP::VEC3(-1, 0, 0);
// d2 = PHI1(d2);
// position[d2] = PFP::VEC3(0, 2, 0);
// d2 = PHI<211>(d2);
// position[d2] = PFP::VEC3(0, 1, 2);
Algo::Modelisation::Polyhedron<PFP> prim2(myMap, position);
prim2.cylinder_topo(256, 256, true, true); // topo of sphere is a closed cylinder
prim2.embedSphere(2.0f);
Geom::Matrix44f trf;
trf.identity();
Geom::translate<float>(5.0f, 0.0, 0.0, trf);
prim2.transform(trf);
xd1 = prim2.getDart();
// xd1 = Algo::Modelisation::Polyhedron<PFP>::createTetra(myMap);
// Dart xd2 = xd1;
//
// position[xd2] = PFP::VEC3(5, 0, 0);
// xd2 = PHI1(xd2);
// position[xd2] = PFP::VEC3(3, 0, 0);
// xd2 = PHI1(xd2);
// position[xd2] = PFP::VEC3(4, 2, 0);
// xd2 = PHI<211>(xd2);
// position[xd2] = PFP::VEC3(4, 1, 2);
// bounding box of scene
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
float lWidthObj = std::max<PFP::REAL>(std::max<PFP::REAL>(bb.size(0), bb.size(1)), bb.size(2));
Geom::Vec3f lPosObj = (bb.min() + bb.max()) / PFP::REAL(2);
// send BB info to interface for centering on GL screen
setParamObject(lWidthObj, lPosObj.data());
// first show for be sure that GL context is binded
show();
// render the topo of the map without boundary darts
SelectorDartNoBoundary<PFP::MAP> nb(myMap);
m_render_topo->updateData<PFP>(myMap, position, 0.9f, 0.9f,nb);
}
示例5: setEyePosition
void ShaderPhong::setEyePosition(const Geom::Vec3f& eyePos)
{
if (m_with_eyepos)
{
bind();
glUniform3fv(*m_unif_eyePos,1,eyePos.data());
m_eyePos = eyePos;
unbind();
}
}
示例6: setParams
void ShaderExplodeSmoothVolumes::setParams(float explV, float explF, const Geom::Vec4f& ambiant, const Geom::Vec3f& lightPos, const Geom::Vec4f& plane)
{
bind();
m_explodeV = explV;
glUniform1f(*m_unif_explodeV, explV);
m_explodeF = explF;
glUniform1f(*m_unif_explodeF, explF);
m_ambiant = ambiant;
glUniform4fv(*m_unif_ambiant, 1, ambiant.data());
m_light_pos = lightPos;
glUniform3fv(*m_unif_lightPos, 1, lightPos.data());
m_plane = plane;
glUniform4fv(*m_unif_plane, 1, m_plane.data());
unbind();
}
示例7: createMap
void MyQT::createMap()
{
// creation of a new attribute on vertices of type 3D vector for position.
// a handler to this attribute is returned
position = myMap.addAttribute<VEC3, VERTEX, MAP>("position");
// creation of 2 new faces: 1 triangle and 1 square
Dart d1 = myMap.newFace(3);
Dart d2 = myMap.newFace(4);
// sew these faces along one of their edge
myMap.sewFaces(d1, d2);
// affect position by moving in the map
position[d1] = VEC3(0, 0, 0);
position[PHI1(d1)] = VEC3(2, 0, 0);
position[PHI_1(d1)] = VEC3(1, 2, 0);
position[PHI<11>(d2)] = VEC3(0, -2, 0);
position[PHI_1(d2)] = VEC3(2, -2, 0);
// bounding box of scene
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
float lWidthObj = std::max<PFP::REAL>(std::max<PFP::REAL>(bb.size(0), bb.size(1)), bb.size(2));
Geom::Vec3f lPosObj = (bb.min() + bb.max()) / PFP::REAL(2);
show();
// send BB info to interface for centering on GL screen
setParamObject(lWidthObj, lPosObj.data());
// first show for be sure that GL context is binded
show();
// render the topo of the map without boundary darts
m_render_topo->setInitialBoundaryDartsColor(0,1,0);
m_render_topo->updateDataGMap<PFP>(myMap, position, 0.9f, 0.9f,true);
}
示例8: main
//.........这里部分代码省略.........
float alpha = (4.0f*6.283f / NB)*i;
float radius = 1.2f*(NB-i);
position[d3] = PFP::VEC3(radius*cos(alpha) - 2*NB+8, radius*sin(alpha), z);
d3 = myMap.phi1(d3);
}
for (int i = NB-1; i>=0; --i)
{
float z = 3.0f*float(rand()-RAND_MAX/2)/float(RAND_MAX);
float alpha = (4.0f*6.283f / NB)*i;
float radius = (NB-i);
position[d3] = PFP::VEC3(radius*cos(alpha) - 2*NB+8, radius*sin(alpha), z);
d3 = myMap.phi1(d3);
}
//CIRCLE
Dart d6 = myMap.newFace(NB);
for (int i = 0; i<NB; ++i)
{
float z = 3.0f*float(rand()-RAND_MAX/2)/float(RAND_MAX);
float alpha = (6.283f / NB)*i;
float radius = NB;
position[d6] = PFP::VEC3(radius*cos(alpha) + 2*NB+8, radius*sin(alpha), z);
d6 = myMap.phi1(d6);
}
// pour comparer les 2 versions (oreille et basique)
//#define NBB 100
// for (int j = 0; j<10000; ++j)
// {
// Dart d6 = myMap.newFace(NBB);
// for (int i = 0; i<NBB; ++i)
// {
// float alpha = (6.283f / NB)*i;
// float radius = NB;
// position[d6] = PFP::VEC3(radius*cos(alpha) + 2*NB+8, radius*sin(alpha), 0.1f*j);
// d6 = myMap.phi1(d6);
// }
// }
Geom::Vec3f V1(3,3,3);
V1.normalize();
Geom::Vec3f V2 = V1 ^ Geom::Vec3f(0,0,-1);
Geom::Vec3f V3 = V1 ^ V2;
V1 *= 50.0f;
V2 *= 50.0f;
Dart d5 = myMap.newFace(74);
for (int i=0; i<74;++i)
{
float a = float(rand()-RAND_MAX/2)/float(RAND_MAX) * 0.25f;
position[d5] = PFP::VEC3(0.0,60.0,0.0f) + Ifont[2*i] * V1 + Ifont[2*i+1]*V2 + a*V3;
d5 = myMap.phi1(d5);
}
Dart d9 = myMap.newFace(174);
for (int i=0; i<174;++i)
{
float a = float(rand()-RAND_MAX/2)/float(RAND_MAX) * 0.25f;
position[d9] = PFP::VEC3(60.0,60.0,0.0f) + Gfont[2*i] * V1 + Gfont[2*i+1]*V2 + a*V3;
d9 = myMap.phi1(d9);
}
// interface:
QApplication app(argc, argv);
MyQT sqt;
// message d'aide
sqt.setHelpMsg("Concave face rendering (ears method):\n"
"a show all trianglesfaces\n"
"a show none trianglesfaces\n"
"+ / - show trinagles order rendering (ears creation)");
// bounding box
Geom::BoundingBox<PFP::VEC3> bb = Algo::Geometry::computeBoundingBox<PFP>(myMap, position);
float lWidthObj = std::max<PFP::REAL>(std::max<PFP::REAL>(bb.size(0), bb.size(1)), bb.size(2));
Geom::Vec3f lPosObj = (bb.min() + bb.max()) / PFP::REAL(2);
// envoit info BB a l'interface
sqt.setParamObject(lWidthObj, lPosObj.data());
// show 1 pour GL context
sqt.show();
// update du VBO position (context GL necessaire)
sqt.m_positionVBO->updateData(position);
// update des primitives du renderer
sqt.m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::TRIANGLES, &position);
sqt.m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::LINES, &position);
sqt.m_render->initPrimitives<PFP>(myMap, allDarts, Algo::Render::GL2::POINTS, &position);
// show final pour premier redraw
sqt.show();
// et on attend la fin.
return app.exec();
}