本文整理汇总了C++中Vector_3::squared_norm方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector_3::squared_norm方法的具体用法?C++ Vector_3::squared_norm怎么用?C++ Vector_3::squared_norm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector_3
的用法示例。
在下文中一共展示了Vector_3::squared_norm方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ene
//.........这里部分代码省略.........
// Initialize values of nodal_vals_pane to 0.
for ( int d=1; d<=ncomp; ++d) {
COM::DataItem *nvpi = ncomp==1?nodal_vals_pane:(nodal_vals_pane+d);
Real *p=reinterpret_cast<Real*>(nvpi->pointer());
for ( int j=0,s=nvpi->stride(),n=nvpi->size_of_real_items()*s; j<n; j+=s)
p[j] = 0.;
}
// Loop through the elements of the pane
Element_node_enumerator ene( &pane, 1);
for ( int j=pane.size_of_real_elements(); j>0; --j, ene.next()) {
ps.set( pnts, ene, 1);
elem_vals_evk.set( elem_vals_pane, ene);
nodal_vals_evk.set( nodal_vals_pane, ene);
nodal_weights_evk.set( weights_ptrs[i], ene, weights_strds[i]);
int ne=ene.size_of_edges();
int nn=ene.size_of_nodes();
Real w = 1.;
switch ( scheme) {
case E2N_USER:
case E2N_AREA:
if ( scheme == E2N_USER) {
// Use user specified weights.
elem_weights_evk.set( elem_weights_pane, ene);
w = elem_weights_evk[0];
} // Continue to the case of E2N_ONE
else {
Generic_element_2 e(ne, nn);
e.Jacobian( ps, nc, J);
const Vector_3<Real> v = Vector_3<Real>::cross_product( J[0], J[1]);
w = std::sqrt(v.squared_norm());
if ( ne==3) w*=0.5;
} // Continue to the case of E2N_ONE
case E2N_ONE: {
// Update nodal weights
for ( int k=0; k<nn; ++k)
nodal_weights_evk[k] += w;
// Update nodal sums
for ( int d=0; d<ncomp; ++d) {
Real t = w*elem_vals_evk(0,d);
for ( int k=0; k<nn; ++k)
nodal_vals_evk(k,d) += t;
}
break;
}
case E2N_ANGLE:
case E2N_SPHERE: {
for ( int k=0; k<ne; ++k) {
J[0] = ps[k==ne-1?0:k+1]-ps[k]; J[1] = ps[k?k-1:ne-1]-ps[k];
double s = std::sqrt((J[0]*J[0])*(J[1]*J[1]));
if ( s>0) {
double cosw = J[0]*J[1]/s;
if (cosw>1) cosw=1; else if ( cosw<-1) cosw=-1;
w = std::acos( cosw);
if ( scheme==SURF::E2N_SPHERE)
w = std::sin(w)/s;
// Update nodal weights
nodal_weights_evk[k] += w;
// Update nodal sums