本文整理汇总了C++中osg::Vec4::w方法的典型用法代码示例。如果您正苦于以下问题:C++ Vec4::w方法的具体用法?C++ Vec4::w怎么用?C++ Vec4::w使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Vec4
的用法示例。
在下文中一共展示了Vec4::w方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calcCoordReprojTrans
osg::Vec2 calcCoordReprojTrans(const osg::Vec3 &vert,const osg::Matrix &trans,const osg::Matrix &viewProj,const osg::Vec2 &size,const osg::Vec4 &ratio){
osg::Vec4 v(vert.x(),vert.y(),vert.z(),1.0);
v=v*trans;
v=v*viewProj;
v.x() /= v.w();
v.y() /= v.w();
v.z() /= v.w();
v.w() /= v.w();
//std::cout << "Pre shift " << v << std::endl;
v.x() /= size.x();;
v.y() /= size.y();
v.x() -= (ratio.x()/size.x());
v.y() -= (ratio.y()/size.y());
//std::cout << "Post shift " << v << std::endl;
// std::cout << "PP shift " << v << std::endl;
osg::Vec2 tc(v.x(),v.y());
tc.x() *= ratio.z();
tc.y() *=ratio.w();
//tc.x()*=ratio.x();
//tc.y()*=ratio.y();
tc.x()/=(ratio.z());
tc.y()/=(ratio.w());
return tc;
}
示例2: getFloat
osg::Vec4 ConfigManager::getVec4(std::string attributeX, std::string attributeY,
std::string attributeZ, std::string attributeW, std::string path,
osg::Vec4 def, bool * found)
{
bool hasEntry = false;
bool isFound;
osg::Vec4 result;
result.x() = getFloat(attributeX,path,def.x(),&isFound);
if(isFound)
{
hasEntry = true;
}
result.y() = getFloat(attributeY,path,def.y(),&isFound);
if(isFound)
{
hasEntry = true;
}
result.z() = getFloat(attributeZ,path,def.z(),&isFound);
if(isFound)
{
hasEntry = true;
}
result.w() = getFloat(attributeW,path,def.w(),&isFound);
if(isFound)
{
hasEntry = true;
}
if(found)
{
*found = hasEntry;
}
return result;
}
示例3: drawPlane
void ConicSectionPlugin::drawPlane(osg::Vec4 eq)
{
//if (showClipplane_->getState())
//{
//helper plane
Vec3 normal = Vec3(eq.x(), eq.y(), eq.z());
normal.normalize();
Vec3 point = normal * -eq.w();
point = point + normal * 0.003;
helperPlane_->update(normal, point);
Vec3 intersect[6];
osg::BoundingBox bboxCompl = cover->getBBox(Cone_.get());
int numIntersect = helperPlane_->getBoxIntersectionPoints(bboxCompl, intersect);
if (numIntersect > 0)
{
for (int i = 0; i < numIntersect; i++)
{
(*polyCoords_)[i] = intersect[i];
}
for (int i = numIntersect; i < 6; i++)
{
(*polyCoords_)[i] = (*polyCoords_)[numIntersect - 1];
}
}
(*polyNormal_)[0].set(normal[0], normal[1], normal[2]);
plane_->dirtyBound();
//}
}
示例4: getValue
bool HeightFieldLayer::getValue(unsigned int i, unsigned int j, osg::Vec4& value) const
{
value.x() = _heightField->getHeight(i,j);
value.y() = _defaultValue.y();
value.z() = _defaultValue.z();
value.w() = _defaultValue.w();
return true;
}
示例5: writeFloat
void DataOutputStream::writeVec4(const osg::Vec4& v){
writeFloat(v.x());
writeFloat(v.y());
writeFloat(v.z());
writeFloat(v.w());
if (_verboseOutput) std::cout<<"read/writeVec4() ["<<v<<"]"<<std::endl;
}
示例6: setPosition
void Light::setPosition(const osg::Vec4 &position)
{
_lightSource->getLight()->setPosition(position);
if(position.w() == 0.0f)
_isDirectional = true;
else
_isDirectional = false;
updateViewableObject();
refresh();
}
示例7: getElement
bool Uniform::getElement( unsigned int index, osg::Vec4& v4 ) const
{
if( index>=getNumElements() || !isCompatibleType(FLOAT_VEC4) ) return false;
unsigned int j = index * getTypeNumComponents(getType());
v4.x() = (*_floatArray)[j];
v4.y() = (*_floatArray)[j+1];
v4.z() = (*_floatArray)[j+2];
v4.w() = (*_floatArray)[j+3];
return true;
}
示例8:
btVector4
osgbCollision::asBtVector4( const osg::Vec4& v )
{
return btVector4( v.x(), v.y(), v.z(), v.w() );
}
示例9: toE
Eigen::Vector4f toE(const osg::Vec4 &v) const {
return Eigen::Vector4f(v.x(), v.y(), v.z(), v.w());
}
示例10: sectionString
std::string ConicSectionPlugin::sectionString(osg::Vec4 eq)
{
stringstream equation;
equation << coTranslator::coTranslate("Gleichung: ");
equation << std::fixed << std::setprecision(2);
double ax, bx, cx, dx, ex, fx;
if (!isNull(eq.z()))
{
double z2 = eq.z() * eq.z();
ax = 1 - ((eq.x() * eq.x()) / z2);
bx = 1 - (eq.y() * eq.y() / z2);
cx = 2 * eq.x() * eq.y() / z2;
dx = 2 * eq.x() * eq.w() / z2;
ex = 2 * eq.y() * eq.w() / z2;
fx = eq.w() * eq.w() / z2;
if (!isNull(ax))
equation << ax << "x^2 ";
if (bx > 0)
equation << "+" << bx << "y^2 ";
else if (bx < 0)
equation << bx << "y^2 ";
if (cx > 0)
equation << "+" << cx << "xy ";
else if (cx < 0)
equation << cx << "xy ";
if (dx > 0)
equation << "+" << dx << "x ";
else if (dx < 0)
equation << dx << "x ";
if (ex > 0)
equation << "+" << ex << "y ";
else if (ex < 0)
equation << ex << "y ";
if (fx > 0)
equation << "+" << fx << " = 0";
else if (fx < 0)
equation << fx << " = 0 ";
else
equation << " = 0 ";
}
else if (!isNull(eq.x()))
{
double a2 = eq.x() * eq.x();
ax = 1 + ((eq.y() * eq.y()) / a2);
bx = (eq.z() * eq.z() / a2) - 1;
cx = 2 * eq.y() * eq.z() / a2;
dx = 2 * eq.y() * eq.w() / a2;
ex = 2 * eq.z() * eq.w() / a2;
fx = eq.w() * eq.w() / a2;
if (!isNull(ax))
equation << ax << "y^2 ";
if (bx > 0)
equation << "+" << bx << "z^2 ";
else if (bx < 0)
equation << bx << "z^2 ";
if (cx > 0)
equation << "+" << cx << "yz ";
else if (cx < 0)
equation << cx << "yz ";
if (dx > 0)
equation << "+" << dx << "y ";
else if (dx < 0)
equation << dx << "y ";
if (ex > 0)
equation << "+" << ex << "z ";
else if (ex < 0)
equation << ex << "z ";
if (fx > 0)
equation << "+" << fx << " = 0";
else if (fx < 0)
equation << fx << " = 0 ";
else
equation << " = 0 ";
}
else if (!isNull(eq.y()))
{
double b2 = eq.y() * eq.y();
ax = 1 + ((eq.x() * eq.x()) / b2);
bx = (eq.z() * eq.z() / b2) - 1;
cx = 2 * eq.x() * eq.z() / b2;
dx = 2 * eq.x() * eq.w() / b2;
ex = 2 * eq.z() * eq.w() / b2;
fx = eq.w() * eq.w() / b2;
if (!isNull(ax))
equation << ax << "x^2 ";
if (bx > 0)
equation << "+" << bx << "z^2 ";
else if (bx < 0)
equation << bx << "z^2 ";
if (cx > 0)
equation << "+" << cx << "xz ";
else if (cx < 0)
equation << cx << "xz ";
if (dx > 0)
equation << "+" << dx << "x ";
//.........这里部分代码省略.........
示例11: print
void print(osg::Vec4 & v, std::string label)
{
std::cerr << label << " x: " << v.x() << " y: " << v.y() << " z: " << v.z()
<< " w: " << v.w() << std::endl;
}