|
- void computeTextCoords(osg::Vec2Array& texCoors,osg::ref_ptr<osg::Vec3Array> pts)
- {
-
- osg::Vec3 v0 = pts->at(0);
- osg::Vec3 v1 = pts->at(1);
- osg::Vec3 v2 = pts->at(2);
-
- osg::Vec2 tv0 = texCoors.at(0);
- osg::Vec2 tv1 = texCoors.at(1);
- osg::Vec2 tv2 = texCoors.at(2);
-
- osg::Vec3 vec1 = v1 - v0;
- osg::Vec3 vec2 = v2 - v0;
-
- float len1 = vec1.length();
- float len2 = vec2.length();
-
- osg::Vec2 tvec1 = tv1 - tv0;
- osg::Vec2 tvec2 = tv2 - tv0;
-
- tvec1 /= len1;
- tvec2 /= len2;
- //下面{}里是什么意思?
- {
- vec2.normalize();
-
- float d = vec1 * vec2;
- v1 -= vec2 * d;
- vec1 = v1 - v0;
- len1 = vec1.length();
-
- tv1 -= tvec2 * d;
- tvec1 = tv1 - tv0;
- tvec1 /= len1;
-
- vec1.normalize();
- }
-
- std::vector<int> offsets;
- for(unsigned int i = 3; i < pts->size(); i++)
- {
- osg::Vec3 vec = pts->at(i) - v0;
- float d1 = vec * vec1;
- float d2 = vec * vec2;
- osg::Vec2 t = tv0 + tvec1 * d1 + tvec2 * d2;
- texCoors[i]= t;;
- }
-
- }
复制代码 |
|