本文整理汇总了C++中CMol::Query_Angle方法的典型用法代码示例。如果您正苦于以下问题:C++ CMol::Query_Angle方法的具体用法?C++ CMol::Query_Angle怎么用?C++ CMol::Query_Angle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMol
的用法示例。
在下文中一共展示了CMol::Query_Angle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Geo_Constraint_Angle
double Geo_Constraint_Angle(unsigned n, const double *x, double *grad, void *data)
{
int ia, ib, ic, iPos;
double theta, theta0, g[3][3];
CMol* pMol;
GEO_FIX_ANGLE *Geo_Fix_theta;
Geo_Fix_theta = (GEO_FIX_ANGLE*)data;
pMol = (CMol*)(Geo_Fix_theta->pMol);
ia = Geo_Fix_theta->ia;
ib = Geo_Fix_theta->ib;
ic = Geo_Fix_theta->ic;
theta0 = Geo_Fix_theta->theta0;
if(grad) {
theta = pMol->Query_Angle(ia, ib, ic, 1, g);
memset(grad, 0, sizeof(double)*n);
iPos = 3 * ia;
grad[iPos ] = g[0][0];
grad[iPos+1] = g[0][1];
grad[iPos+2] = g[0][2];
iPos = 3 * ib;
grad[iPos ] = g[1][0];
grad[iPos+1] = g[1][1];
grad[iPos+2] = g[1][2];
iPos = 3 * ic;
grad[iPos ] = g[2][0];
grad[iPos+1] = g[2][1];
grad[iPos+2] = g[2][2];
}
else {
theta = pMol->Query_Angle(ia, ib, ic, 0, g);
}
return (theta - theta0);
}