当前位置: 首页>>代码示例>>C++>>正文


C++ VectorXs::segment方法代码示例

本文整理汇总了C++中VectorXs::segment方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorXs::segment方法的具体用法?C++ VectorXs::segment怎么用?C++ VectorXs::segment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VectorXs的用法示例。


在下文中一共展示了VectorXs::segment方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: addGradEToTotal

void SpringForce::addGradEToTotal( const VectorXs& x, const VectorXs& v, const VectorXs& m, VectorXs& gradE )
{
  assert( x.size() == v.size() );
  assert( x.size() == gradE.size() );
  assert( x.size()%2 == 0 );
  assert( m_endpoints.first >= 0 );  assert( m_endpoints.first < x.size()/2 );
  assert( m_endpoints.second >= 0 ); assert( m_endpoints.second < x.size()/2 );

  //GET PARTICLES
  int size = 2;
  int xistart = m_endpoints.first*2;
  int xjstart = m_endpoints.second*2;  
  VectorXs xi = x.segment(xistart, size);
  VectorXs xj = x.segment(xjstart, size);
	
  //SPRING FORCE
  VectorXs nhat = xi-xj;  
  double lxixj = nhat.norm();
  nhat /= lxixj;	
  VectorXs dxiU = m_k*(lxixj-m_l0)*nhat;
  VectorXs dxjU = -dxiU;  
    
  //SPRING DAMPING FORCE 
  VectorXs vi = v.segment(xistart, size);
  VectorXs vj = v.segment(xjstart, size);
  double lvivj = (vi-vj).dot(nhat);
  dxiU += m_b * nhat * lvivj; //F-
  dxjU += -m_b * nhat * lvivj; //F+
	
  //CHANGE SYSTEM
  gradE[xistart+0] += dxiU[0];
  gradE[xistart+1] += dxiU[1];	
  gradE[xjstart+0] += dxjU[0];
  gradE[xjstart+1] += dxjU[1];
}
开发者ID:xunilrj,项目名称:sandbox,代码行数:35,代码来源:SpringForce.cpp

示例2:

DrakeSystem::VectorXs CascadeSystem::getX1(const VectorXs &x) const {
  DrakeSystem::VectorXs x1(sys1->state_frame->getDim());
  x1 << x.head(sys1->continuous_state_frame->getDim()),
        x.segment(sys1->state_frame->getDim(),sys1->discrete_state_frame->getDim());
  return x1;
}
开发者ID:friend0,项目名称:drake,代码行数:6,代码来源:DrakeSystem.cpp


注:本文中的VectorXs::segment方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。