本文整理汇总了C++中Rect2::getLo方法的典型用法代码示例。如果您正苦于以下问题:C++ Rect2::getLo方法的具体用法?C++ Rect2::getLo怎么用?C++ Rect2::getLo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Rect2
的用法示例。
在下文中一共展示了Rect2::getLo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
// mesh = m, dir = vector(1, 0, 0)
void Intersector::init()
{
int i, j, k;
const vector<MeshVertex> &vtc = mesh->vertices;
const vector<MeshEdge> &edg = mesh->edges;
dir = dir.normalize();
getBasis(dir, v1, v2);
// 建立一个以dir, v1, v2为坐标轴的坐标系
// dir(1, 0, 0) v1(0, 0, 1) v2(0, -1, 0)
points.resize(vtc.size());
sNormals.resize(edg.size() / 3);
for(i = 0; i < (int)vtc.size(); ++i) {
// *表示内积
points[i] = Vector2(vtc[i].pos * v1, vtc[i].pos * v2);
}
bounds = Rect2(points.begin(), points.end());
// points数组存储的是每个顶点在v1和v2方向上的投影,bounds是这些投影的二维包围盒
triangles.resize(cells * cells);
for(i = 0; i < (int)edg.size(); i += 3) {
Rect2 triRect;
for(j = 0; j < 3; ++j)
triRect |= Rect2(points[edg[i + j].vertex]);
int fromx, fromy, tox, toy;
getIndex(triRect.getLo(), fromx, fromy);
getIndex(triRect.getHi(), tox, toy);
// 得到的fromx, fromy分别是将bounds分为200*200的网格后,其包围盒左下角在整个网格(bounds)中的x,y方向上的网格索引号
// tox, toy是三角形包围盒右上角在网格中的索引号
for(j = fromy; j <= toy; ++j) for(k = fromx; k <= tox; ++k) {
triangles[j * cells + k].push_back(i);
}
// triangles中存储的是与这些网格有交点的三角面片
Vector3 cross = (vtc[edg[i + 1].vertex].pos - vtc[edg[i].vertex].pos) % (vtc[edg[i + 2].vertex].pos - vtc[edg[i].vertex].pos);
j = i / 3;
// j为面片的索引号
sNormals[j] = cross.normalize();
if(fabs(sNormals[j] * dir) <= 1e-8)
sNormals[j] = Vector3(); //zero if coplanar
else
sNormals[j] = sNormals[j] / (sNormals[j] * dir); //prescaled for intersection
// sNormals[j]为平面的法向在dir方向上的投影
}
}