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


C++ vec3::squaredNorm方法代码示例

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


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

示例1: bilateral

void cloth::bilateral(phys::system& system) {
  using namespace math;
  core::each( boost::edges(mesh), [&](const mesh_type::edge_descriptor& e) {
      natural i = boost::source(e, mesh);
      natural j = boost::target(e, mesh);
	
      auto info = mesh[e];
	
      const vec3 diff = dofs[i].g() - dofs[j].g(); 
      
      if( diff.norm() < 1e-5 ) core::log("ALARRRM");
      
      const vec3 n = diff.normalized();
      
      auto& J = system.constraint.bilateral.matrix;

      real norm = 2 * std::sqrt( 2 * diff.squaredNorm() );
      
      real scale = 1/norm;
      
      J(info.key, &dofs[i]) = scale * 2 * diff.transpose(); //  n.transpose();
      J(info.key, &dofs[j]) = -2 * scale * diff.transpose(); // - n.transpose();
      
      auto& b = system.constraint.bilateral.values;
      b(info.key).setZero();
      
      auto& c = system.constraint.bilateral.corrections;
      c(info.key).setConstant( scale * (info.rest * info.rest - diff.squaredNorm())  );
      
    });
  
}
开发者ID:Jorjor70,项目名称:meuh,代码行数:32,代码来源:cloth.cpp


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