VectorXd math_ext::interpolate_y(const VectorXd &x_in, const VectorXd &y_in, const VectorXd &y_out) { const int n=x_in.size(), m=y_out.size(); VectorXd x_out(m); for(int n1=0;n1<m;++n1) { if(y_out(n1)<=y_in(0)) { //x_out(n1)=x_in(0)+(y_out(n1)-y_in(0))*(x_in(1)-x_in(0))/(y_in(1)-y_in(0)); x_out(n1)=x_in(0); continue; } else if(y_out(n1)>=y_in(n-1)) { //x_out(n1)=x_in(n-1)+(y_out(n1)-y_in(n-1))*(x_in(n-2)-x_in(n-1))/(y_in(n-2)-y_in(n-1)); x_out(n1)=x_in(n-1); continue; } for(int n2=1;n2<n;++n2) { if(y_out(n1)>y_in(n2-1) && y_out(n1)<=y_in(n2)) { x_out(n1)=x_in(n2-1)+(x_in(n2)-x_in(n2-1))*(y_out(n1)-y_in(n2-1))/(y_in(n2)-y_in(n2-1)); break; } else continue; } } return(x_out); }
// ---------------------------------------------------------------------- // ---------------------------------------------------------------------- const QString QmvTuple::htmlLabel() { QString label; QTextOStream x_out(&label); // remove plurals QString title = parentClass()->relationTitle() ; title.replace( QRegExp("s$"), "" ); x_out << "<table width=100% cellpadding=0 cellspacing=0>"; x_out << QString("<tr><th bgcolor=yellow align=left colspan=2>%1 Details</th></tr>") .arg( title); QmvAttList attlist = parent_class->sortedAttlist( "mtat_view_order", QmvClass::NoBlank|QmvClass::NoSystem|QmvClass::NoZero ); for (QmvAttribute * at_ptr = attlist.first(); at_ptr != 0; at_ptr = attlist.next()) { QString value = attributeValue(at_ptr->attributeName()); switch ( at_ptr->inputMethod() ) { case QmvAttribute::Colour: // strip the alpha value (expecting form .. #AARRGGBB value.replace(1, 2, ""); x_out << QString("<tr><td>%1:</td><td bgcolor=%2></td></tr>") .arg(at_ptr->attributeTitle()) .arg(value); break; default: x_out << QString("<tr><td>%1:</td><td><strong>%2</strong></td></tr>") .arg(at_ptr->attributeTitle()) .arg(value); break; } } x_out << "</table>"; return label; }