本文整理汇总了C++中Lattice::accessCellPoints方法的典型用法代码示例。如果您正苦于以下问题:C++ Lattice::accessCellPoints方法的具体用法?C++ Lattice::accessCellPoints怎么用?C++ Lattice::accessCellPoints使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lattice
的用法示例。
在下文中一共展示了Lattice::accessCellPoints方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deform
void TaperDeformAction::deform(Lattice& lattice)
{
float taper;
gmtl::Vec3f cellPoint, move, min, max;
gmtl::Vec3i cellDivisions = lattice.getCellDivisions();
Lattice::Vector3d& cellPoints = lattice.accessCellPoints();
lattice.centerOrigin(min, max, move);
taper = (max[z] - min[z]) / taperFactor;
if (sign > 0)
{
for (int h = 0; h <= cellDivisions[0]; ++h)
for (int w = 0; w <= cellDivisions[1]; ++w)
for (int l = 0; l <= cellDivisions[2]; ++l)
{
lattice.moveTo(cellPoints[h][w][l], cellPoint, move);
// f(z) = (max z - z) / (max z - min z)
// z' = z
// x' = f(z) * x
cellPoint[x] *= ((max[z] - cellPoint[z]) / taper);
// y' = f(z) * y
cellPoint[y] *= ((max[z] - cellPoint[z]) / taper);
lattice.moveBack(cellPoint, cellPoints[h][w][l], move);
}
}
else
{
for (int h = 0; h <= cellDivisions[0]; ++h)
for (int w = 0; w <= cellDivisions[1]; ++w)
for (int l = 0; l <= cellDivisions[2]; ++l)
{
lattice.moveTo(cellPoints[h][w][l], cellPoint, move);
// f(z) = (max z - z) / (max z - min z)
// z' = z
// x' = f(z) * x
cellPoint[x] *= (((max[z]) + cellPoint[z]) / taper);
// y' = f(z) * y
cellPoint[y] *= (((max[z]) + cellPoint[z]) / taper);
lattice.moveBack(cellPoint, cellPoints[h][w][l], move);
}
}
}