示例#1
0
sk_stroke_cap_t sk_paint_get_stroke_cap(const sk_paint_t* cpaint) {
    sk_stroke_cap_t ccap;
    if (find_c(AsPaint(*cpaint).getStrokeCap(), &ccap)) {
        ccap = BUTT_SK_STROKE_CAP;
    }
    return ccap;
}
示例#2
0
sk_stroke_join_t sk_paint_get_stroke_join(const sk_paint_t* cpaint) {
    sk_stroke_join_t cjoin;
    if (find_c(AsPaint(*cpaint).getStrokeJoin(), &cjoin)) {
        cjoin = MITER_SK_STROKE_JOIN;
    }
    return cjoin;
}
void TestEditorInterface::SwitchToFile(const std::wstring& path) {
	for (auto view : enum_range<ViewType>()) {
		auto& data = m_viewData[view];
		auto opt_it = find_c(data.fileList, path);
		if (opt_it) {
			data.activeFile = opt_it;
			m_activeView = view;
			return;
		}
	}
}
double c_correction(float mass, int snapnum)
{
  double c_original, c_new, Omega_new, Omega_original, ratio;

  c_original = 5 * pow(mass/10000., -0.1);
  Omega_new = Omega * 1./pow3(AA[snapnum]) / (Omega * 1./pow3(AA[snapnum]) + OmegaLambda);
  Omega_original = Omega_OriginalCosm * 1./pow3(AA_OriginalCosm[snapnum]) /
                  (Omega_OriginalCosm * 1./pow3(AA_OriginalCosm[snapnum]) + OmegaLambda_OriginalCosm);
  ratio = Omega_original/ Omega_new;
  c_new = find_c(c_original, ratio);

  return func_c(c_new) / func_c(c_original);
}
bool TestEditorInterface::OpenDocument(std::wstring filename) {
	filename = fs::canonical(filename);

	if (!fs::is_regular_file(filename))
		return false;

	for (auto view : enum_range<ViewType>()) {
		auto opt_it = find_c(m_viewData[view].fileList, filename);
		if (opt_it)
		   return true;
	}

	auto& data = ActiveViewData();
	auto p = data.fileList.insert(fs::canonical(filename));
	if (!data.activeFile)
		data.activeFile = p.first;
	return true;
}
void TestEditorInterface::ActivateDocument(const std::wstring& filepath, ViewType view) {
	auto& data = m_viewData[view];
	auto opt_it = find_c(data.fileList, filepath);
	if (opt_it)
		data.activeFile = opt_it;
}
// Propagate light through media
light_rays propagate(light_rays ray_diagram, double step_size, double max_vel,
                     dimensions origin, double radius,
                     std::ofstream &output){

    double index_p, theta, theta_p;
    double iratio, dotprod;

    // move simulation every timestep
    for (size_t i = 0; i < time_res; i++){
        for (size_t j = 0; j < lightnum; j++){
            ray_diagram.ray[j].x += ray_diagram.ray_vel[j].x * step_size; 
            ray_diagram.ray[j].y += ray_diagram.ray_vel[j].y * step_size;
            if (ray_diagram.index[j] != 
                check_n(ray_diagram.ray[j].x, ray_diagram.ray[j].y, 
                        origin, radius)){
                index_p = check_n(ray_diagram.ray[j].x,
                                  ray_diagram.ray[j].y, origin, radius);

                std::cout << index_p << '\t' << i << '\t' << j << '\n';

/*
                // Non vector form
                theta = atan2(ray_diagram.ray_vel[j].y, 
                              ray_diagram.ray_vel[j].x);
                theta_p = asin((ray_diagram.index[j] / index_p) * sin(theta));
                ray_diagram.ray_vel[j].y = max_vel * sin(theta_p);
                ray_diagram.ray_vel[j].x = max_vel * cos(theta_p);
*/

                // Vector form -- Solution by Gustorn!
                double r = ray_diagram.index[j] / index_p;
                double mag = std::sqrt(ray_diagram.ray_vel[j].x * 
                                       ray_diagram.ray_vel[j].x +
                                       ray_diagram.ray_vel[j].y * 
                                       ray_diagram.ray_vel[j].y); 


                double ix = ray_diagram.ray_vel[j].x / mag;
                double iy = ray_diagram.ray_vel[j].y / mag;

                // c for later; Normal was: [-1, 0]
                double c = find_c(ix, iy, origin, radius);

                double k = 1.0 - r * r * (1.0 - c * c);

                if (k < 0.0) {
                    // Do whatever
                } else {
                    double k1 = std::sqrt(k);
                    ray_diagram.ray_vel[j].x = r * ix - (r * c - k1);
                    ray_diagram.ray_vel[j].y = r * iy;
                }
                ray_diagram.index[j] = index_p;
            }

        }

/*
        output << ray_diagram.ray[5].x <<'\t'<< ray_diagram.ray[5].y << '\t'
               << ray_diagram.ray_vel[5].x <<'\t'<< ray_diagram.ray_vel[5].y
               << '\n';
*/

        for (size_t q = 0; q < lightnum; q++){
            output << ray_diagram.ray[q].x <<'\t'<< ray_diagram.ray[q].y << '\t'
                   << ray_diagram.ray_vel[q].x <<'\t'<< ray_diagram.ray_vel[q].y
                   << '\n';
        }

        output << '\n' << '\n';
    }

    return ray_diagram;
}