コード例 #1
0
ファイル: psmain.cpp プロジェクト: takaya0223/drawps
void Calculate()
{
	int i;
	double kx[4],kv[4];

	kx[0] = fx(v)*dt;
	kv[0] = fv(x)*dt;
	kx[1] = fx(v+kv[0]/2.0)*dt;
	kv[1] = fv(x+kx[0]/2.0)*dt;
	kx[2] = fx(v+kv[1]/2.0)*dt;
	kv[2] = fv(x+kx[1]/2.0)*dt;
	kx[3] = fx(v+kv[2])*dt;
	kv[3] = fv(x+kx[2])*dt;

	t += dt;
	x += (kx[0]+2.0*kx[1]+2.0*kx[2]+kx[3])/6.0;
	v += (kv[0]+2.0*kv[1]+2.0*kv[2]+kv[3])/6.0;

	T = m*pow((l*v),2.0)/2.0;
	U = g/l*(1.0-cos(x));
	E = T + U;

	for(i=0;i<GN-1;i++){
		graphT[i] = graphT[i+1];
		graphU[i] = graphU[i+1];
	}
	graphT[GN-1] = T;
	graphU[GN-1] = U;
}
コード例 #2
0
  // FIXME: why do we get 2 error messages
  template <typename ... T> void g(T &... t) { //expected-note3{{declared here}}
    f([&a(t)]()->decltype(auto) {
      return a;
    }() ...);
    
    auto L = [x = f([&a(t)]()->decltype(auto) { return a; }()...)]() { return x; };
    const int y = 10;
    auto M = [x = y, 
                &z = y](T& ... t) { }; 
    auto N = [x = y, 
                &z = y, n = f(t...), 
                o = f([&a(t)](T& ... t)->decltype(auto) { return a; }(t...)...), t...](T& ... s) { 
                  fv([&a(t)]()->decltype(auto) { 
                    return a;
                  }() ...);
                };                 
    auto N2 = [x = y,                     //expected-note3{{begins here}}
                &z = y, n = f(t...), 
                o = f([&a(t)](T& ... t)->decltype(auto) { return a; }(t...)...)](T& ... s) { 
                  fv([&a(t)]()->decltype(auto) { //expected-error 3{{captured}}
                    return a;
                  }() ...);
                };                 

  }
コード例 #3
0
ファイル: printdialog.cpp プロジェクト: Isaac96/eepe
void printDialog::printExpo()
{
    QString str = tr("<h2>Expo/Dr Settings</h2>");

    for(int i=0; i<4; i++)
    {
        str.append("<h3>" + getSourceStr(g_eeGeneral->stickMode, i+1) + "</h3>");
        //high, mid, low
        //left right / expo, dr
        str.append(fv(tr("Switch 1:"), getSWName(g_model->expoData[i].drSw1,0)));
        str.append(fv(tr("Switch 2:"), getSWName(g_model->expoData[i].drSw2,0)));
        str.append("<table border=1 cellspacing=0 cellpadding=3>");

        str.append("<tr>");
        str.append(doTC("&nbsp;"));
        str.append(doTC(tr("Expo Left"), "", true));
        str.append(doTC(tr("D/R Left"), "", true));
        str.append(doTC(tr("D/R Right"), "", true));
        str.append(doTC(tr("Expo Right"), "", true));
        str.append("</tr>");


        str.append("<tr>");
        str.append(doTC(tr("High"), "", true));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_HIGH][DR_EXPO][DR_LEFT]),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_HIGH][DR_WEIGHT][DR_LEFT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_HIGH][DR_WEIGHT][DR_RIGHT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_HIGH][DR_EXPO][DR_RIGHT]),"green"));
        str.append("</tr>");

        str.append("<tr>");
        str.append(doTC(tr("Mid"), "", true));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_MID][DR_EXPO][DR_LEFT]),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_MID][DR_WEIGHT][DR_LEFT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_MID][DR_WEIGHT][DR_RIGHT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_MID][DR_EXPO][DR_RIGHT]),"green"));
        str.append("</tr>");

        str.append("<tr>");
        str.append(doTC(tr("Low"), "", true));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_LOW][DR_EXPO][DR_LEFT]),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_LOW][DR_WEIGHT][DR_LEFT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_LOW][DR_WEIGHT][DR_RIGHT]+100),"green"));
        str.append(doTC(QString::number(g_model->expoData[i].expo[DR_LOW][DR_EXPO][DR_RIGHT]),"green"));
        str.append("</tr>");

        str.append("</table>");
    }
    str.append("<br><br>");
    te->append(str);
}
コード例 #4
0
ファイル: DllMain.cpp プロジェクト: myeang1/YDWE
static void ShowSplash(fs::path const& ydwe_path)
{
	fs::path splashPath = ydwe_path / L"bin" / L"splash.bmp";
	if (fs::exists(splashPath))
	{
		FILE* f = _wfopen(splashPath.c_str(), L"rb");
		if (f)
		{
			try {
				ydwe::win::simple_file_version fv((ydwe_path / "YDWE.exe").c_str());
				cimg_library::CImg<boost::uint8_t> splashImage = cimg_library::CImg<boost::uint8_t>::get_load_bmp(f);
				boost::uint8_t color[] = { 255, 255, 255 };
				splashImage.draw_text(10, 10, (boost::format("YDWE %1$d.%2$d.%3$d.%4$d") % fv.major % fv.minor % fv.revision % fv.build).str().c_str(), color, 0, 1, 20);
				cimg_library::CImgDisplay display(splashImage, "YDWE", 3, false, true);
				display.move(
					(cimg_library::CImgDisplay::screen_width() - display.width()) / 2,
					(cimg_library::CImgDisplay::screen_height() - display.height()) / 2
					).hide_mouse();
				display.show();
				Sleep(1000);
				display.show_mouse();
			} catch (...) { }
			
			fclose(f);
		}
	}
}
コード例 #5
0
ファイル: DllModule.cpp プロジェクト: benny5609/YDWE
bool DllModule::SearchPatch(fs::path& result, std::wstring const& fv_str)
{
	try {
		fs::directory_iterator end_itr;
		for (fs::directory_iterator itr(ydwe_path / L"share" / L"patch"); itr != end_itr; ++itr)
		{
			try {
				if (fs::is_directory(*itr))
				{
					if (fs::exists(*itr / "Game.dll") && fs::exists(*itr / "Patch.mpq"))
					{
						base::win::file_version fv((*itr / "Game.dll").c_str());
						if (fv_str == fv[L"FileVersion"])
						{
							result = *itr;
							return true;
						}
					}
				}
			}
			catch(...) {
			}
		}
	}
	catch(...) {
	}

	return false;
}
コード例 #6
0
ファイル: ekf.cpp プロジェクト: NBXApp/ekfslam
void EkfSlam::move(Mat R, Mat u, Mat n)
{
		Mat Rtemp = fv(R, u, n);

		// get jacobians
		Mat dfdr = df_dxb(R, u,n);
		Mat dfdn = df_dn(R, u,n);

		mState.at<double>(0) = Rtemp.at<double>(0);
		mState.at<double>(1) = Rtemp.at<double>(1);
		mState.at<double>(2) = Rtemp.at<double>(2);

		Mat q2 = q.clone();
		q2.at<double>(0) *= q2.at<double>(0);
		q2.at<double>(1) *= q2.at<double>(1);
		Mat N = Mat::diag(q2);

		// update covariance matrix

	if(Prm.rows) {
		Prr = dfdr*Prr*dfdr.t() + dfdn*N*dfdn.t();
		Prm = dfdr*Prm;
		Pmr = Prm.t();
	}
}
コード例 #7
0
ファイル: Mat44.cpp プロジェクト: wrdn/SeasonalGlobe
// Build rotation matrix angle_in_degrees about x,y,z specified axis e.g. 90 degrees about x axis is BuildRotationMatrix(90, 1,0,0)
Mat44 Mat44::BuildRotationMatrix(f32 angle_in_degrees, f32 x, f32 y, f32 z)
{
	float3 fv(x,y,z);
	fv.normalize();
	
	x = fv.x();
	y = fv.y();
	z = fv.z();

	f32 angle = DEGTORAD(angle_in_degrees);

	f32 c = cos(angle);
	f32 s = sin(angle);

	return Mat44
		(
		x*x*(1-c)+c,   // m11
		x*y*(1-c)-z*s, // m12
		x*z*(1-c)+y*s, // m13
		0,			   // m14

		y*x*(1-c)+z*s, // m21
		y*y*(1-c)+c,   // m22
		y*z*(1-c)-x*s, // m23
		0,			   // m24

		x*z*(1-c)-y*s, // m31 
		y*z*(1-c)+x*s, // m32
		z*z*(1-c)+c,   // m33
		0,			   // m34

		0, 0, 0, 1     // m41, m42, m43, m44
		);
};
コード例 #8
0
ファイル: annoy.cpp プロジェクト: edwindj/rcppannoy
 std::vector<int32_t> getNNsByVector(std::vector<double> dv, size_t n) {
     std::vector<float> fv(dv.size());
     std::copy(dv.begin(), dv.end(), fv.begin());
     std::vector<int32_t> result;
     ptr->get_nns_by_vector(&fv[0], n, -1, &result, NULL);
     return result;
 }
コード例 #9
0
ファイル: PWFiltersDlg.cpp プロジェクト: soundsrc/pwsafe
bool CPWFiltersDlg::VerifyFilters()
{
  // Verify that the active filters have a criterion set
  if (UpdateData(TRUE) == FALSE)
    return false;

  // First non-History/non-Policy filters on the main filter dialog
  vFilterRows *pvFilterRows(NULL);
  switch (m_iType) {
  case DFTYPE_MAIN:
    pvFilterRows = &m_pfilters->vMfldata;
    break;
  case DFTYPE_PWHISTORY:
    pvFilterRows = &m_pfilters->vHfldata;
      break;
    case DFTYPE_PWPOLICY:
      pvFilterRows = &m_pfilters->vPfldata;
      break;
    case DFTYPE_ATTACHMENT:
      pvFilterRows = &m_pfilters->vAfldata;
      break;
    default:
      VERIFY(0);
  }

  CGeneralMsgBox gmb;
  CString cs_text;
  int iHistory(-1), iPolicy(-1), iAttachment(-1);
  FilterValidator fv(cs_text, iHistory, iPolicy, iAttachment);
  if (find_if(pvFilterRows->begin(), pvFilterRows->end(), fv) !=
    pvFilterRows->end()) {
    gmb.AfxMessageBox(cs_text);
    return false;
  }

  if (m_iType == DFTYPE_MAIN) {
    // Now check that the filters were correct on
    // History/Policy/Attachment sub-filter dialogs
    if (m_FilterLC.IsPWHIST_Set() && !m_FilterLC.IsHistoryGood()) {
      cs_text.Format(IDS_FILTERINCOMPLETE, iHistory + 1);
      gmb.AfxMessageBox(cs_text);
      return false;
    }
    if (m_FilterLC.IsPOLICY_Set() && !m_FilterLC.IsPolicyGood()) {
      cs_text.Format(IDS_FILTERINCOMPLETE, iPolicy + 1);
      gmb.AfxMessageBox(cs_text);
      return false;
    }
    if (m_FilterLC.IsAttachment_Set() && !m_FilterLC.IsAttachmentGood()) {
      cs_text.Format(IDS_FILTERINCOMPLETE, iPolicy + 1);
      gmb.AfxMessageBox(cs_text);
      return false;
    }
  }

  return true;
}
コード例 #10
0
ファイル: printdialog.cpp プロジェクト: chrisshum128/mbtx
void printDialog::printCurves()
{
    QString str = tr("<h2>Curves</h2>");

    str.append(fv(tr("5-point Curves"), ""));
    str.append("<table border=1 cellspacing=0 cellpadding=3>");
    str.append("<tr>");
    str.append(doTC("&nbsp;"));
    for(int i=0; i<5; i++) str.append(doTC(tr("pt %1").arg(i+1), "", true));
    str.append("</tr>");
    for(int i=0; i<MAX_CURVE5; i++)
    {
        str.append("<tr>");
        str.append(doTC(tr("Curve %1").arg(i+1), "", true));
        for(int j=0; j<5; j++)
            str.append(doTC(QString::number(g_model->curves5[i][j]),"green"));
        str.append("</tr>");
    }
    str.append("</table>");
    str.append("<br><br>");


    str.append(fv(tr("9-point Curves"), ""));
    str.append("<table border=1 cellspacing=0 cellpadding=3>");
    str.append("<tr>");
    str.append(doTC("&nbsp;"));
    for(int i=0; i<9; i++) str.append(doTC(tr("pt %1").arg(i+1), "", true));
    str.append("</tr>");
    for(int i=0; i<MAX_CURVE9; i++)
    {
        str.append("<tr>");
        str.append(doTC(tr("Curve %1").arg(i+1), "", true));
        for(int j=0; j<9; j++)
            str.append(doTC(QString::number(g_model->curves9[i][j]),"green"));
        str.append("</tr>");
    }
    str.append("</table>");



    str.append("<br><br>");
    te->append(str);
}
コード例 #11
0
ファイル: printdialog.cpp プロジェクト: Isaac96/eepe
void printDialog::printSetup()
{
    QString str = tr("<h2>General Model Settings</h2><br>");
    str.append(fv(tr("Name"), getModelName()));
    str.append(fv(tr("Timer"), getTimer()));  //value, mode, count up/down
    str.append(fv(tr("Protocol"), getProtocol())); //proto, numch, delay,
    str.append(fv(tr("Pulse Polarity"), g_model->pulsePol ? "NEG" : "POS"));
    str.append(fv(tr("Throttle Trim"), g_model->thrTrim ? tr("Enabled") : tr("Disabled")));
    str.append(fv(tr("Throttle Expo"), g_model->thrExpo ? tr("Enabled") : tr("Disabled")));
    str.append(fv(tr("Trim Switch"), getSWName(g_model->trimSw,0)));
    str.append(fv(tr("Trim Increment"), getTrimInc()));
    str.append(fv(tr("Center Beep"), getCenterBeep())); // specify which channels beep
    str.append("<br><br>");
    te->append(str);


}
コード例 #12
0
FaceGeometry PrimitiveGeometryBuilder::createFace(std::vector<tgt::vec3>& vertices, tgt::vec4 color) {
        FaceGeometry face;
        
        tgt::vec3 faceNormal = tgt::cross(vertices[1] - vertices[0], vertices[2] - vertices[0]);
        
        // Face vertices
        // TODO Replace faceNormal with vertex normals for smoother representation
        for (size_t i = 0; i < vertices.size(); i++) {
            VertexGeometry fv(vertices[i], tgt::vec3(0.f), color, faceNormal);
            face.addVertex(fv);
        }
        
        return face;
}
コード例 #13
0
void RConstants::setValue(std::string section, std::string name, SEXP value) {
    if(TYPEOF(value) != STRSXP) {
        Rcpp::NumericVector v(value);
        std::ostringstream strs;
        for(size_t i=0; i<v.size(); i++) {
            if(i>= c->lc->size) {
                std::cout << "Too many values. Add more layers \n";
                break;
            }

            if(i>0) strs << " ";
            strs << v[i];
        }
        writeOption(section, name, strs.str());
    } else {
        Rcpp::CharacterVector v(value);
        assert(v.size() > 0);
        std::string fv(v[0]);
        if(fv.find(' ') != std::string::npos) {
            if(v.size() > 1) {
                std::cout << "Too messy value\n";
                return;
            }
            std::vector<std::string> x = split(fv, ' ');
            std::string acc_str("");
            for(size_t i=0; i<x.size(); i++) {
                if(i>= c->lc->size) {
                    std::cout << "Too many values. Add more layers \n";
                    break;
                }

                if(i>0) acc_str += " ";
                acc_str += x[i];
            }
            writeOption(section, name, acc_str);
        } else {
            std::string acc_str("");
            for(size_t i=0; i<v.size(); i++) {
                if(i>= c->lc->size) {
                    std::cout << "Too many values. Add more layers \n";
                    break;
                }

                if(i>0) acc_str += " ";
                acc_str += v[i];
            }
            writeOption(section, name, acc_str);
        }
    }
}
コード例 #14
0
bool Dataset::findNext(void) {
  bool result;
  if (plist.empty()) return false;

  std::map<string,field_value>::const_iterator i;
  while (!eof()) {
    result = true;
    for (i=plist.begin();i!=plist.end();++i)
      if (fv(i->first.c_str()).get_asString() == i->second.get_asString()) {
	continue;
      }
      else {result = false; break;}
    if (result) { return result;}
    next();
  }
  return false;
}
コード例 #15
0
ファイル: FileReader.cpp プロジェクト: MindMil/XCSoar
void
DataFieldFileReader::ScanDirectoryTop(const TCHAR* filter)
{
  if (!loaded) {
    if (!postponed_patterns.full() &&
        _tcslen(filter) < PatternList::value_type::MAX_SIZE) {
      postponed_patterns.append() = filter;
      return;
    } else
      EnsureLoaded();
  }

  FileVisitor fv(*this);
  VisitDataFiles(filter, fv);

  Sort();
}
コード例 #16
0
ファイル: dlgPlanePolar.cpp プロジェクト: alon/xcsoar
static void
ImportClicked(gcc_unused WndButton &button)
{
  ComboList list;
  PolarFileVisitor fv(list);

  // Fill list
  VisitDataFiles(_T("*.plr"), fv);

  list.Sort();

  // let the user select
  int result = ComboPicker(UIGlobals::GetMainWindow(),
                           _("Load Polar From File"), list, NULL);
  if (result < 0)
    return;

  assert((unsigned)result < list.size());

  PolarInfo polar;
  const TCHAR* path = list[result].StringValue;
  PolarGlue::LoadFromFile(polar, path);

  plane.reference_mass = polar.reference_mass;
  plane.dry_mass = polar.reference_mass;
  plane.max_ballast = polar.max_ballast;

  if (positive(polar.wing_area))
    plane.wing_area = polar.wing_area;

  if (positive(polar.v_no))
    plane.max_speed = polar.v_no;

  plane.v1 = polar.v1;
  plane.v2 = polar.v2;
  plane.v3 = polar.v3;
  plane.w1 = polar.w1;
  plane.w2 = polar.w2;
  plane.w3 = polar.w3;

  plane.polar_name = list[result].StringValueFormatted;

  Update();
}
コード例 #17
0
void
PolarConfigPanel::LoadFromFile()
{
  ComboList list;
  PolarFileVisitor fv(list);

  // Fill list
  VisitDataFiles(_T("*.plr"), fv);

  // Sort list
  list.Sort();

  // Show selection dialog
  int result = ComboPicker(UIGlobals::GetMainWindow(),
                           _("Load Polar From File"), list, NULL);
  if (result >= 0) {
    const TCHAR* path = list[result].StringValue;
    PolarInfo polar;
    PolarGlue::LoadFromFile(polar, path);

    UpdatePolarPoints(polar.v1, polar.v2, polar.v3, polar.w1, polar.w2, polar.w3);

    LoadFormProperty(form, _T("prpPolarReferenceMass"), polar.reference_mass);
    LoadFormProperty(form, _T("prpPolarDryMass"), polar.reference_mass);
    LoadFormProperty(form, _T("prpPolarMaxBallast"), polar.max_ballast);

    if (positive(polar.wing_area))
      LoadFormProperty(form, _T("prpPolarWingArea"), polar.wing_area);

    if (positive(polar.v_no))
      LoadFormProperty(form, _T("prpMaxManoeuveringSpeed"), ugHorizontalSpeed,
                       polar.v_no);

    CommonInterface::SetComputerSettings().plane.polar_name =
        list[result].StringValueFormatted;
    UpdatePolarTitle();
    UpdatePolarInvalidLabel();
  }
}
コード例 #18
0
/**
 * Evaluates a function and returns the values as a vector
 *
 *
 * @param functionString :: the function string
 * @param xVal :: A vector of the x values
 * @param noiseScale :: A scaling factor for niose to be added to the data, 0=
 *no noise
 * @returns the calculated values
 */
std::vector<double>
CreateSampleWorkspace::evalFunction(const std::string &functionString,
                                    const std::vector<double> &xVal,
                                    double noiseScale = 0) {
  size_t xSize = xVal.size();
  // replace $PCx$ values
  std::string parsedFuncString = functionString;
  for (int x = 0; x <= 10; ++x) {
    // get the rough peak centre value
    int index = static_cast<int>((xSize / 10) * x);
    if ((x == 10) && (index > 0))
      --index;
    double replace_val = xVal[index];
    std::ostringstream tokenStream;
    tokenStream << "$PC" << x << "$";
    std::string token = tokenStream.str();
    std::string replaceStr = boost::lexical_cast<std::string>(replace_val);
    replaceAll(parsedFuncString, token, replaceStr);
  }

  IFunction_sptr func_sptr =
      FunctionFactory::Instance().createInitialized(parsedFuncString);
  FunctionDomain1DVector fd(xVal);
  FunctionValues fv(fd);
  func_sptr->function(fd, fv);

  std::vector<double> results;
  results.resize(xSize);
  for (size_t x = 0; x < xSize; ++x) {
    results[x] = fv.getCalculated(x);
    if (noiseScale != 0) {
      results[x] += ((m_randGen->nextValue() - 0.5) * noiseScale);
    }
    // no negative values please  - it messes up the error calculation
    results[x] = fabs(results[x]);
  }
  return results;
}
コード例 #19
0
void MotionModel::predict_state_and_covariance(VectorXd x_k_k, MatrixXd p_k_k, string type, double std_a,
	double std_alpha, VectorXd *X_km1_k, MatrixXd *P_km1_k)
{
	size_t x_k_size = x_k_k.size(), p_k_size = p_k_k.rows();
	double delta_t = 1, linear_acceleration_noise_covariance, angular_acceleration_noise_covariance;
	VectorXd Xv_km1_k(18), Pn_diag(6);
	MatrixXd F = MatrixXd::Identity(18,18), // The camera state size is assumed to be 18
		Pn, Q, G;

	// Camera motion prediction
	fv(x_k_k.head(18), delta_t, type, std_a, std_alpha, &Xv_km1_k);

	// Feature prediction
	(*X_km1_k).resize(x_k_size);
	// Add the feature points to the state vector after cam motion prediction
	(*X_km1_k) << Xv_km1_k, x_k_k.tail(x_k_size - 18);

	// State transition equation derivatives
	dfv_by_dxv(x_k_k.head(18), delta_t, type, &F);

	// State noise
	linear_acceleration_noise_covariance = (std_a * delta_t) * (std_a * delta_t);
	angular_acceleration_noise_covariance = (std_alpha * delta_t) * (std_alpha * delta_t);
	Pn_diag << linear_acceleration_noise_covariance, linear_acceleration_noise_covariance, linear_acceleration_noise_covariance, 
		angular_acceleration_noise_covariance, angular_acceleration_noise_covariance, angular_acceleration_noise_covariance;
	Pn = Pn_diag.asDiagonal();
	func_Q(x_k_k.head(18), Pn, delta_t, type, &G, &Q);

	// P_km1_k resize and update 
	// With the property of symmetry for the covariance matrix, only the Pxx and Pxy 
	// which means the camera state covariance and camera feature points covariance can be calculated
	(*P_km1_k).resize(p_k_size,p_k_size);
	(*P_km1_k).block(0,0,18,18) = F * p_k_k.block(0,0,18,18) * F.transpose() + Q;
	(*P_km1_k).block(0,18,18,p_k_size - 18) = F * p_k_k.block(0,18,18,p_k_size - 18);
	(*P_km1_k).block(18,0,p_k_size - 18,18) = p_k_k.block(18,0,p_k_size - 18,18) * F.transpose();
	(*P_km1_k).block(18,18,p_k_size - 18,p_k_size - 18) = p_k_k.block(18,18,p_k_size - 18,p_k_size - 18);

}
コード例 #20
0
ファイル: PlanePolarDialog.cpp プロジェクト: Adrien81/XCSoar
inline void
PlanePolarWidget::ImportClicked()
{
  ComboList list;
  PolarFileVisitor fv(list);

  // Fill list
  VisitDataFiles(_T("*.plr"), fv);

  list.Sort();

  // let the user select
  int result = ComboPicker(_("Load Polar From File"), list, NULL);
  if (result < 0)
    return;

  assert((unsigned)result < list.size());

  PolarInfo polar;
  const TCHAR* path = list[result].StringValue;
  PolarGlue::LoadFromFile(polar, path);

  plane.reference_mass = polar.reference_mass;
  plane.dry_mass = polar.reference_mass;
  plane.max_ballast = polar.max_ballast;

  if (positive(polar.wing_area))
    plane.wing_area = polar.wing_area;

  if (positive(polar.v_no))
    plane.max_speed = polar.v_no;

  plane.polar_shape = polar.shape;

  plane.polar_name = list[result].StringValueFormatted;

  Update();
}
コード例 #21
0
ファイル: env.c プロジェクト: berkus/moto
void
moto_setVarVal(MotoEnv *env, MotoVar *var, MotoVal *val) {
    moto_castVal(env,var->vs,val);

    /* If the MotoVar is a member var then we need to set the var in the MCI
    	which this var is a member of */

    if(var->isMemberVar) {
        switch (var->type->kind) {
        case INT32_TYPE:
            *(int32_t*)var->address = iv(var->vs);
            break;
        case INT64_TYPE:
            *(int64_t*)var->address = lv(var->vs);
            break;
        case FLOAT_TYPE:
            *(float*)var->address = fv(var->vs);
            break;
        case DOUBLE_TYPE:
            *(double*)var->address = dv(var->vs);
            break;
        case BOOLEAN_TYPE:
            *(unsigned char*)var->address = bv(var->vs);
            break;
        case BYTE_TYPE:
            *(signed char*)var->address = yv(var->vs);
            break;
        case CHAR_TYPE:
            *(char*)var->address = cv(var->vs);
            break;
        case REF_TYPE:
            *(void**)var->address = var->vs->refval.value;
            break;
        default:
            break;
        }
    }
}
コード例 #22
0
ファイル: pu.cpp プロジェクト: verylucky/PuppyLanguage
static void regfunc(Pu *L)
{
	PU_NUMBER fpos = (PU_NUMBER)TOKEN.optype;
	NEXT_TOKEN;
	if (TOKEN.type == VAR)
	{	
		__pu_value fv(L);
		fv.SetType(FUN);
		fv.numVal() = fpos;
		fv.userdata() = L->cur_nup;
 		if (L->cur_nup)
 		{
 			L->cur_nup->refcount++;
 		}
        __pu_value *got = reg_var(L, TOKEN.value.strVal());
        TOKEN.regvar = got;
        *got = fv;
		L->cur_token = L->funclist[(int)fv.numVal()].end;
		NEXT_TOKEN;
		return;
	}
	error(L, 29);
}
コード例 #23
0
ファイル: Video.cpp プロジェクト: prahz/Holum-Project
void Video::loadVideos() {
    const char *path = "/Users/Jobs/Documents/Xcode/HolumV0.1/HolumV0.1/Resource Files";
    string videoPath(path);
    struct dirent *entry;
    DIR *dp;
    
    dp = opendir(path);
    if(dp == NULL) {
        cout << "Errore 004: Il percorso della directory video non esiste o non è definito.";
        return -1;
    }
    
    while((entry = readdir(dp))) {
        string videoName = string(entry->d_name);
        int videoNameLen = strlen(videoName.c_str());
        if(checkExtension(videoName, videoNameLen)) {
            videoPath += "/" + videoName;
            FileVideo fv(videoPath, videoName.substr(0, videoName.find(".")));
            videoFiles.push_back(fv);
        }
    }
    
    closedir(dp);
}
コード例 #24
0
ファイル: frmprim.cpp プロジェクト: msandiford/Freemacs
    void operator()(Mint& interp, bool is_active, const MintArgList& args) {
        if (args.size() > 3) {
            bool found;
            const MintString& formName = args[1].getValue();
            MintString fv(interp.getForm(formName, &found));
            if (found) {
                MintArgList::const_iterator first = args.begin();
                std::advance(first, 2);
#ifdef USE_ARGS_SLIST
                MintArgList::const_iterator last = args.begin();
                std::advance(last, args.size() - 1);
#else
                MintArgList::const_iterator last = args.end();
                --last;
#endif
                // FIXME: Dodgy magic numbers and hardcoded types
                umintchar_t insch = 0x80;
                for (MintArgList::const_iterator i = first; i != last; ++i, ++insch) {
                    const MintString& av = i->getValue();
                    if (!av.empty()) {
                        const char* avp = av.c_str();
                        for (MintString::size_type pos = fv.find(avp, 0);
                             pos != MintString::npos; pos = fv.find(avp, pos + 1)) {
#ifdef USE_MINTSTRING_ROPE
                            fv.replace(pos, av.size(), static_cast<char>(insch));
#else
                            fv.replace(pos, av.size(), 1, static_cast<char>(insch));
#endif
                        } // for
                    } // if
                } // for
                interp.setFormValue(formName, fv);
            } // if
        } // if
        interp.returnNull(is_active);
    } // operator()
コード例 #25
0
ファイル: lindep.cpp プロジェクト: aurelioarranz/hermes
bool test_lin_indep(Shapeset *shapeset) {
	_F_
	printf("I. linear independency\n");

	UMFPackMatrix mat;
	UMFPackVector rhs;
	UMFPackLinearSolver solver(&mat, &rhs);

	ShapeFunction fu(shapeset), fv(shapeset);

	int n =
		Hex::NUM_VERTICES * 1 +			// 1 vertex fn
		Hex::NUM_EDGES * shapeset->get_num_edge_fns(H3D_MAX_ELEMENT_ORDER) +
		Hex::NUM_FACES * shapeset->get_num_face_fns(order2_t(H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER)) +
		shapeset->get_num_bubble_fns(Ord3(H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER));

	printf("number of functions = %d\n", n);

	int *fn_idx = new int [n];
	int m = 0;
	// vertex fns
	for (int i = 0; i < Hex::NUM_VERTICES; i++, m++)
		fn_idx[m] = shapeset->get_vertex_index(i);
	// edge fns
	for (int i = 0; i < Hex::NUM_EDGES; i++) {
		int order = H3D_MAX_ELEMENT_ORDER;
		int *edge_idx = shapeset->get_edge_indices(i, 0, order);
		for (int j = 0; j < shapeset->get_num_edge_fns(order); j++, m++)
			fn_idx[m] = edge_idx[j];
	}
	// face fns
	for (int i = 0; i < Hex::NUM_FACES; i++) {
		order2_t order(H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER);
		int *face_idx = shapeset->get_face_indices(i, 0, order);
		for (int j = 0; j < shapeset->get_num_face_fns(order); j++, m++)
			fn_idx[m] = face_idx[j];
	}
	// bubble
	Ord3 order(H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER, H3D_MAX_ELEMENT_ORDER);
	int *bubble_idx = shapeset->get_bubble_indices(order);
	for (int j = 0; j < shapeset->get_num_bubble_fns(order); j++, m++)
		fn_idx[m] = bubble_idx[j];


	// precalc structure
	mat.prealloc(n);
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			mat.pre_add_ij(i, j);
	mat.alloc();
	rhs.alloc(n);

	printf("assembling matrix ");

	for (int i = 0; i < n; i++) {
		fu.set_active_shape(fn_idx[i]);

		printf(".");
		fflush(stdout);			// prevent caching of output (to see that it did not freeze)

		for (int j = 0; j < n; j++) {
			fv.set_active_shape(fn_idx[j]);

			double value = l2_product(&fu, &fv);

			mat.add(i, j, value);
		}
	}
	printf("\n");

	for (int i = 0; i < n; i++)
		rhs.add(i, 0.0);

	printf("solving matrix\n");

	// solve the system
	if (solver.solve()) {
		double *sln = solver.get_solution();
		bool indep = true;
		for (int i = 1; i < n + 1; i++) {
			if (sln[i] >= EPS) {
				indep = false;
				break;
			}
		}

		if (indep)
			printf("ok\n");
		else
			printf("Shape functions are not linearly independent\n");
	}
	else {
		printf("Shape functions are not linearly independent\n");
	}

	delete [] fn_idx;

	return true;
}
コード例 #26
0
void mexFunction(int nlhs, mxArray  *plhs[], int nrhs, const mxArray  *prhs[])
{	
	long i;
	
	/* check input args */
	
	if (nrhs < 5)
	{
		mexErrMsgTxt("Local constant prediction : Time series, dim, delay, length to predict, number of NN must be given, mode (0-3) and metric factor is optional\n");
		return;
	}
	
	/* handle matrix and parameter I/O */
	
	long mode = 0;		
	double metric_factor = 1;		// can be choosen out of ]0,1],   1 means : use exact euclidian metric
	
	
	const long N = mxGetM(prhs[0]) * mxGetN(prhs[0]);	
	double* const ts = (double *)mxGetPr(prhs[0]);

	const long dim = (long) *((double *)mxGetPr(prhs[1]));
	const long delay = (long) *((double *)mxGetPr(prhs[2]));

	const long length 	= (long) *((double *)mxGetPr(prhs[3]));
	const long NNR  	= (long) *((double *)mxGetPr(prhs[4]));
	
	if (nrhs > 5) mode  = (long) *((double *)mxGetPr(prhs[5])); 	// averaging mode
	if (nrhs > 6) metric_factor  = (double) *((double *)mxGetPr(prhs[6])); 	// weighting factor for exponential weighted euclidian metric
	
	if (dim < 1) {
		mexErrMsgTxt("Embedding dimension must be greater zero");
		return;
	}		
	if (delay < 1) {
		mexErrMsgTxt("Time delay must be greater zero");
		return;
	}		
	if (length < 1) {
		mexErrMsgTxt("Length must be greater zero");
		return;
	}		 
	if (NNR < 1) {
		mexErrMsgTxt("Number of nearest neighbors must be greater zero");
		return;
	}		
	if  ((metric_factor < 0) || (metric_factor > 1)) {
		mexErrMsgTxt("Metric factor must be out of ]0,1]");
		return;
	}		
	
	exp_weighted_euclidian_distance metric(metric_factor);
	
	embedded_time_series_point_set<exp_weighted_euclidian_distance> dummy(N, dim, delay, ts, metric);
	
	if (dummy.size() < 1) {
		mexErrMsgTxt("Time series must to short for given parameters");
		return;
	}			
	mexPrintf("Length of input time series     : %d\n", N);
	mexPrintf("Length of prediction            : %d\n", length);
	mexPrintf("Reconstruction dimension        : %d\n", dim);
	mexPrintf("Reconstruction delay            : %d\n", delay);
	mexPrintf("Number of reconstruction points : %d\n", dummy.size());	
	mexPrintf("Number of nearest neighbors     : %d\n", NNR);
	mexPrintf("Metric factor                   : %lf\n", metric_factor);
		
	plhs[0] = mxCreateDoubleMatrix(N + length, 1, mxREAL);
	double* const x = (double *) mxGetPr(plhs[0]);
	
	embedded_time_series_point_set<exp_weighted_euclidian_distance> points(N + length, dim, delay, x, metric);
	
	copy(ts, ts + N, x);	// copy time series samples to output
	
	ATRIA<embedded_time_series_point_set < exp_weighted_euclidian_distance > > searcher(points, length + 1);	
	nn_predictor< ATRIA<embedded_time_series_point_set < exp_weighted_euclidian_distance > > > predictor(searcher);

	if (predictor.geterr()) {	
		mexErrMsgTxt("Error preparing predictor : Inconsistent parameters given ?");
		return;
	}	 
										
	switch(mode) {
		case 1 :
		{
			mexPrintf("Local constant prediction using direct weighting\n");
		
			biquadratic_weight wg;
			direct_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > fv(points);	
			local_approx< direct_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > , biquadratic_weight> approximator(fv , wg);
		
			for (long t = 0; t < length; t++) {
				x[N + t] = predictor.predict(NNR + 1, points.point_begin(t + dummy.size()-1), approximator, - 1, -1);
			}
			break;
		}	
		case 2 :
		{
			mexPrintf("Local constant prediction using integrated mean\n");
			constant_weight wg;
			integrated_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > fv(points);	
			local_approx< integrated_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > , constant_weight> approximator(fv , wg);
					
			for (long t = 0; t < length; t++) {
				x[N + t] = x[N + t - 1]  + predictor.predict(NNR, points.point_begin(t + dummy.size()-1), approximator, - 1, -1);
			}
			break;
		}
		case 3 :
		{
			mexPrintf("Local constant prediction using integrated weighting\n");
			biquadratic_weight wg;
			integrated_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > fv(points);	
			local_approx< integrated_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > , biquadratic_weight> approximator(fv , wg);
		
			for (long t = 0; t < length; t++) {
				x[N + t] = x[N + t - 1]  + predictor.predict(NNR + 1, points.point_begin(t + dummy.size()-1), approximator, - 1, -1);
			}
			break;
		}		
		default : 
		{
			mexPrintf("Local constant prediction using direct mean\n");
			constant_weight wg;
			direct_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > fv(points);	
			local_approx< direct_prediction<embedded_time_series_point_set < exp_weighted_euclidian_distance > > , constant_weight> approximator(fv , wg);
					
			for (long t = 0; t < length; t++) {
				x[N + t] = predictor.predict(NNR, points.point_begin(t + dummy.size()-1), approximator, - 1, -1);
			}
			break;
		}	
	}
}	
コード例 #27
0
void UltraEyeRenderer::drawHenshinInstruction()
{
	XuSkeletonJointInfo jrh, jh, jre;
	m_henshinDetector->getUserDetector()->getSkeletonJointInfo(XU_SKEL_RIGHT_HAND, &jrh);
	m_henshinDetector->getUserDetector()->getSkeletonJointInfo(XU_SKEL_HEAD, &jh);
	m_henshinDetector->getUserDetector()->getSkeletonJointInfo(XU_SKEL_RIGHT_ELBOW, &jre);

	if (!isConfident(jrh) || !isConfident(jh) || !isConfident(jre)) return;

	const float CIRCLE_RADIUS = 100;

	XV3 fv(m_henshinDetector->getUserDetector()->getForwardVector());
	XV3 uv(m_henshinDetector->getUserDetector()->getUpVector());
	XV3 armDirection((jrh.position - jre.position).normalize());
	XV3 adjustedRightHand(jrh.position + armDirection * 30); // slightly move to the fingertip side
	XV3 adjustedHead(jh.position + fv * 100); // slightly move forward
	XV3 arrowTip(adjustedRightHand.interpolate(adjustedHead, 0.95f));
	XV3 arrowBottom(adjustedRightHand.interpolate(adjustedHead, 0.0f));
	float len = (arrowTip - arrowBottom).magnitude();
	XV3 triangleBottom(arrowBottom.interpolate(arrowTip, 0.8f));
	XV3 triangleOpening = (arrowTip - arrowBottom).cross(armDirection).normalize() * len * 0.1f;
	XV3 arrowPlaneNorm = (arrowTip - arrowBottom).cross(triangleOpening).normalize();
	XV3 triangleEnd1(triangleBottom + triangleOpening);
	XV3 triangleEnd2(triangleBottom - triangleOpening);

	float maxAlpha = cramp((len - 50.0f) / 150.0f, 0, 1);
	float blinkSpeed = 1000.0f / std::max(len - 100.0f, 100.f);
	m_phase += m_ticker.tick() * blinkSpeed;
	float alpha = square(std::sin(m_phase)) * maxAlpha;

	M3DVector4f arrowColor = { 0.7f, 0.0f, 0.0f, alpha };
	m_rctx->shaderMan->UseStockShader(GLT_SHADER_FLAT, m_rctx->transform.GetModelViewProjectionMatrix(), arrowColor);

	const float THICKNESS = 2;
	glDisable(GL_DEPTH_TEST);
	glLineWidth(getPointSize() * THICKNESS);
	glPointSize(getPointSize() * THICKNESS);

	glBegin(GL_LINES);
	if (len > CIRCLE_RADIUS) {
		glVertex3fv(XV3toM3D(arrowBottom + (arrowTip - arrowBottom).normalize() * CIRCLE_RADIUS));
		glVertex3fv(XV3toM3D(arrowTip));
	}
	glVertex3fv(XV3toM3D(arrowTip));
	glVertex3fv(XV3toM3D(triangleEnd1));
	glVertex3fv(XV3toM3D(arrowTip));
	glVertex3fv(XV3toM3D(triangleEnd2));
	glEnd();

	glBegin(GL_LINE_LOOP);
	XV3 r0((arrowTip - arrowBottom).normalize() * CIRCLE_RADIUS);
	GLFrame f;
	f.SetForwardVector(0, 0, 1); // invert Z
	const int SEGMENTS = 24;
	const float STEP_ANGLE = float(M_PI * 2 / SEGMENTS);
	for (int i = 0; i < SEGMENTS; i++) {
		f.RotateLocal(STEP_ANGLE, arrowPlaneNorm.X, arrowPlaneNorm.Y, arrowPlaneNorm.Z);
		M3DVector3f r;
		f.TransformPoint(XV3toM3D(r0), r);
		glVertex3fv(XV3toM3D(arrowBottom + r));
	}
	glEnd();

	if (m_isNewUser) {
		XV3 p(-0.95f, 0.80f, 0.0f), s(0.001f, 0.0015f, 1.0f);
		renderStrokeText(m_rctx, "Put your Ultra Eye On! Now!", p, s, 3.0f, arrowColor);
	}

	glEnable(GL_DEPTH_TEST);
}
コード例 #28
0
ファイル: node.cpp プロジェクト: BackupTheBerlios/swiftc-svn
void Module::vectorizeFcts()
{
    FctVectorizer fv(ctxt_);
}
コード例 #29
0
ファイル: test.cpp プロジェクト: gusext/KeyRemap4MacBook
TEST(pqrs_xml_compiler_filter_vector, filter_vector)
{
    pqrs::xml_compiler::symbol_map s;
    s.add("ApplicationType", "APP1", 1);
    s.add("ApplicationType", "APP2", 2);
    s.add("ApplicationType", "APP3", 3);
    s.add("DeviceVendor", "VENDOR1", 10);
    s.add("DeviceVendor", "VENDOR2", 20);
    s.add("DeviceVendor", "VENDOR3", 30);
    s.add("DeviceProduct", "PRODUCT1", 100);
    s.add("DeviceProduct", "PRODUCT2", 200);
    s.add("DeviceProduct", "PRODUCT3", 300);
    s.add("ConfigIndex", "config1", 1000);
    s.add("ConfigIndex", "config2", 2000);
    s.add("ConfigIndex", "config3", 3000);
    s.add("ModifierFlag", "MOD1", 0x1000);
    s.add("ModifierFlag", "MOD2", 0x2000);
    s.add("ModifierFlag", "MOD3", 0x4000);

    std::string xml("<?xml version=\"1.0\"?>"
                    "<item>"
                    "  <only>APP1,APP3</only>"
                    "  <only><!-- empty --></only>"
                    "  <only>,,</only>"
                    "  <not><!-- XXX --->APP2</not>"
                    "  <identifier>sample</identifier>"
                    "  <device_only>DeviceVendor::VENDOR1, DeviceProduct::PRODUCT1, </device_only>"
                    "  <device_not>"
                    "    DeviceVendor::VENDOR3,,,,"
                    "    DeviceProduct::PRODUCT3,"
                    "  </device_not>"
                    "  <config_only>config1,config2</config_only>"
                    "  <config_not>config3</config_not>"
                    "  <modifier_only>ModifierFlag::MOD1 ||| ModifierFlag::MOD3</modifier_only>"
                    "  <modifier_not> ModifierFlag::MOD2 </modifier_not>"
                    "</item>");
    std::stringstream istream(xml, std::stringstream::in);

    pqrs::xml_compiler xml_compiler("data/system_xml", "data/private_xml");

    int flags = boost::property_tree::xml_parser::no_comments;
    boost::property_tree::ptree pt;
    boost::property_tree::read_xml(istream, pt, flags);

    pqrs::string::replacement replacement;

    for (auto& it : pt) {
        pqrs::xml_compiler::filter_vector fv(s);
        fv.traverse(pqrs::xml_compiler::extracted_ptree(xml_compiler, replacement, it.second, ""));

        std::vector<uint32_t> expected;

        // <only>APP1,APP3</only>
        expected.push_back(3); // count
        expected.push_back(BRIDGE_FILTERTYPE_APPLICATION_ONLY);
        expected.push_back(1); // APP1
        expected.push_back(3); // APP3

        // <only><!-- empty --></only>"
        // <only>,,</only>"
        // ***IGNORED***

        // <not>APP2</not>
        expected.push_back(2); // count
        expected.push_back(BRIDGE_FILTERTYPE_APPLICATION_NOT);
        expected.push_back(2); // APP2

        // <device_only>DeviceVendor::VENDOR1, DeviceProduct::PRODUCT1, </device_only>
        expected.push_back(3); // count
        expected.push_back(BRIDGE_FILTERTYPE_DEVICE_ONLY);
        expected.push_back(10);
        expected.push_back(100);

        // <device_not>DeviceVendor::VENDOR3, DeviceProduct::PRODUCT3, </device_not>
        expected.push_back(3); // count
        expected.push_back(BRIDGE_FILTERTYPE_DEVICE_NOT);
        expected.push_back(30);
        expected.push_back(300);

        // <config_only>config1,config2</config_only>
        expected.push_back(3); // count
        expected.push_back(BRIDGE_FILTERTYPE_CONFIG_ONLY);
        expected.push_back(1000);
        expected.push_back(2000);

        // <config_not>config3</config_not>
        expected.push_back(2); // count
        expected.push_back(BRIDGE_FILTERTYPE_CONFIG_NOT);
        expected.push_back(3000);

        // <modifier_only>ModifierFlag::MOD1 ||| ModifierFlag::MOD3</modifier_only>
        expected.push_back(2);
        expected.push_back(BRIDGE_FILTERTYPE_MODIFIER_ONLY);
        expected.push_back(0x1000 | 0x4000);

        // <modifier_not> ModifierFlag::MOD2 </modifier_not>
        expected.push_back(2);
        expected.push_back(BRIDGE_FILTERTYPE_MODIFIER_NOT);
        expected.push_back(0x2000);

        EXPECT_EQ(expected, fv.get());
    }
}
コード例 #30
0
ファイル: financial.hpp プロジェクト: vadz/lmi.new
 long double operator()(long double i)
     {
     return fv(first_, last_, i) - x_;
     }