本文整理汇总了C++中YsShellExt::AddPolygon方法的典型用法代码示例。如果您正苦于以下问题:C++ YsShellExt::AddPolygon方法的具体用法?C++ YsShellExt::AddPolygon怎么用?C++ YsShellExt::AddPolygon使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类YsShellExt
的用法示例。
在下文中一共展示了YsShellExt::AddPolygon方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: VtxNomToYsShell
void FsLazyWindowApplication::VtxNomToYsShell(YsShellExt &shl,const std::vector <float> &vtx,const std::vector <float> &nom)
{
PrepareLatticeForConnection(ltc,vtx);
shl.CleanUp();
for(int i=0; i<vtx.size()/9; ++i)
{
const YsVec3 plNom(nom[i*9],nom[i*9+1],nom[i*9+2]);
const YsVec3 vtPos[3]=
{
YsVec3(vtx[i*9 ],vtx[i*9+1],vtx[i*9+2]),
YsVec3(vtx[i*9+3],vtx[i*9+4],vtx[i*9+5]),
YsVec3(vtx[i*9+6],vtx[i*9+7],vtx[i*9+8]),
};
YsShell::VertexHandle vtHd[3];
for(int i=0; i<3; ++i)
{
vtHd[i]=nullptr;
auto idx=ltc.GetBlockIndex(vtPos[i]);
if(true==ltc.IsInRange(idx))
{
for(auto tstVtHd : ltc.Elem(idx.x(),idx.y(),idx.z()))
{
if(shl.GetVertexPosition(tstVtHd)==vtPos[i])
{
vtHd[i]=tstVtHd;
break;
}
}
}
if(nullptr==vtHd[i])
{
vtHd[i]=shl.AddVertex(vtPos[i]);
if(true==ltc.IsInRange(idx))
{
ltc.Elem(idx.x(),idx.y(),idx.z()).push_back(vtHd[i]);
}
}
}
YsShell::PolygonHandle plHd;
plHd=shl.AddPolygon(3,vtHd);
shl.SetPolygonNormal(plHd,plNom);
}
}