本文整理汇总了C++中YsShellExt::AllPolygon方法的典型用法代码示例。如果您正苦于以下问题:C++ YsShellExt::AllPolygon方法的具体用法?C++ YsShellExt::AllPolygon怎么用?C++ YsShellExt::AllPolygon使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类YsShellExt
的用法示例。
在下文中一共展示了YsShellExt::AllPolygon方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/* static */ void FsLazyWindowApplication::YsShellToVtxNom(std::vector <float> &vtx,std::vector <float> &nom,std::vector <float> &col,const YsShellExt &shl)
{
vtx.clear();
nom.clear();
col.clear();
for(auto plHd : shl.AllPolygon())
{
auto plVtHd=shl.GetPolygonVertex(plHd);
if(3<=plVtHd.GetN())
{
auto plNom=shl.GetNormal(plHd);
for(auto vtHd : plVtHd)
{
auto vtPos=shl.GetVertexPosition(vtHd);
vtx.push_back(vtPos.xf());
vtx.push_back(vtPos.yf());
vtx.push_back(vtPos.zf());
nom.push_back(plNom.xf());
nom.push_back(plNom.yf());
nom.push_back(plNom.zf());
col.push_back(0);
col.push_back(0);
col.push_back(1);
col.push_back(0.5);
}
}
}
}
示例2: PickedTriangle
YsShell::PolygonHandle FsLazyWindowApplication::PickedTriangle(int mx,int my) const
{
YsVec3 o,v;
drawEnv.TransformScreenCoordTo3DLine(o,v,mx,my);
YsShell::PolygonHandle picked=nullptr;
double pickedDist=0.0;
for(auto plHd : shl.AllPolygon())
{
auto plVtHd=shl.GetPolygonVertex(plHd);
const YsVec3 tri[3]=
{
shl.GetVertexPosition(plVtHd[0]),
shl.GetVertexPosition(plVtHd[1]),
shl.GetVertexPosition(plVtHd[2]),
};
YsPlane pln;
pln.MakePlaneFromTriangle(tri[0],tri[1],tri[2]);
YsVec3 itsc;
if(YSOK==pln.GetIntersection(itsc,o,v))
{
auto side=YsCheckInsideTriangle3(itsc,tri);
if(YSINSIDE==side || YSBOUNDARY==side)
{
auto dist=(itsc-o)*v; // Gives distance
if(0.0<dist && (picked==nullptr || dist<pickedDist))
{
picked=plHd;
pickedDist=dist;
}
}
}
}
return picked;
}