ArtContourFx() : m_colorIndex(L"1,2,3") , m_keepColor(false) , m_keepLine(false) , m_includeAlpha(true) , m_density(0.0) , m_distance(DoublePair(30.0, 30.0)) , m_randomness(true) , m_orientation(DoublePair(0.0, 180.0)) , m_size(DoublePair(30.0, 30.0)) { bindParam(this, "Color_Index", m_colorIndex); bindParam(this, "Keep_color", m_keepColor); bindParam(this, "Keep_Line", m_keepLine); bindParam(this, "Include_Alpha", m_includeAlpha); bindParam(this, "Density", m_density); bindParam(this, "Distance", m_distance); bindParam(this, "Randomness", m_randomness); bindParam(this, "Orientation", m_orientation); bindParam(this, "Size", m_size); addInputPort("Source", m_input); addInputPort("Controller", m_controller); m_density->setValueRange(0.0, 100.0); m_distance->getMin()->setValueRange(0.0, 1000.0); m_distance->getMax()->setValueRange(0.0, 1000.0); m_orientation->getMin()->setValueRange(-180.0, 180.0); m_orientation->getMax()->setValueRange(-180.0, 180.0); m_orientation->getMin()->setMeasureName("angle"); m_orientation->getMax()->setMeasureName("angle"); m_size->getMin()->setValueRange(0.0, 1000.0); m_size->getMax()->setValueRange(0.0, 1000.0); }
void NegativeBinomialRand<double>::Fit(const std::vector<int> &sample) { /// Check positivity of sample if (!allElementsAreNonNegative(sample)) throw std::invalid_argument(fitErrorDescription(WRONG_SAMPLE, NON_NEGATIVITY_VIOLATION)); /// Initial guess by method of moments DoublePair stats = GetSampleMeanAndVariance(sample); double mean = stats.first, variance = stats.second; /// Method can't be applied in the case of too small variance if (variance <= mean) throw std::invalid_argument(fitErrorDescription(NOT_APPLICABLE, TOO_SMALL_VARIANCE)); double guess = mean * mean / (variance - mean); size_t n = sample.size(); if (!RandMath::findRoot([sample, mean, n] (double x) { double first = 0.0, second = 0.0; for (const double & var : sample) { first += RandMath::digamma(var + x); second += RandMath::trigamma(var + x); } first -= n * (RandMath::digammamLog(x) + std::log(x + mean)); second -= n * (RandMath::trigamma(x) - mean / (x * (mean + x))); return DoublePair(first, second); }, guess)) throw std::runtime_error(fitErrorDescription(UNDEFINED_ERROR, "Error in root-finding algorithm")); if (guess <= 0.0) throw std::runtime_error(fitErrorDescription(WRONG_RETURN, "Number should be positive, but returned value is " + toStringWithPrecision(guess))); SetParameters(guess, guess / (guess + mean)); }
RGBMCutFx() : m_r_range(DoublePair(0., 255.)), m_g_range(DoublePair(0., 255.)), m_b_range(DoublePair(0., 255.)), m_m_range(DoublePair(0., 255.)) { bindParam(this, "r_range", m_r_range); bindParam(this, "g_range", m_g_range); bindParam(this, "b_range", m_b_range); bindParam(this, "m_range", m_m_range); m_r_range->getMin()->setValueRange(0., 255.); m_g_range->getMin()->setValueRange(0., 255.); m_b_range->getMin()->setValueRange(0., 255.); m_m_range->getMin()->setValueRange(0., 255.); m_r_range->getMax()->setValueRange(0., 255.); m_g_range->getMax()->setValueRange(0., 255.); m_b_range->getMax()->setValueRange(0., 255.); m_m_range->getMax()->setValueRange(0., 255.); addInputPort("Source", m_input); }
PrayerTimes::DoublePair PrayerTimes::sun_position(double jd) { double d = jd - 2451545.0; double g = TrigHelper::fix_angle(357.529 + 0.98560028 * d); double q = TrigHelper::fix_angle(280.459 + 0.98564736 * d); double l = TrigHelper::fix_angle(q + 1.915 * TrigHelper::dsin(g) + 0.020 * TrigHelper::dsin(2 * g)); // double r = 1.00014 - 0.01671 * dcos(g) - 0.00014 * dcos(2 * g); double e = 23.439 - 0.00000036 * d; double dd = TrigHelper::darcsin(TrigHelper::dsin(e) * TrigHelper::dsin(l)); double ra = TrigHelper::darctan2(TrigHelper::dcos(e) * TrigHelper::dsin(l), TrigHelper::dcos(l)) / 15.0; ra = TrigHelper::fix_hour(ra); double eq_t = q / 15.0 - ra; return DoublePair(dd, eq_t); }
Iwa_TiledParticlesFx::Iwa_TiledParticlesFx() : m_source("Texture"), m_control("Control"), source_ctrl_val(0), bright_thres_val(25), center_val(TPointD(0.0, 0.0)), length_val(5.0), height_val(4.0), maxnum_val(10.0), lifetime_val(DoublePair(100., 100.)), lifetime_ctrl_val(0), column_lifetime_val(false), startpos_val(1), randseed_val(1), gravity_val(0.0), g_angle_val(0.0), gravity_ctrl_val(0), friction_val(0.0), friction_ctrl_val(0), windint_val(0.0), windangle_val(0.0), swingmode_val(new TIntEnumParam(SWING_RANDOM, "Random")), randomx_val(DoublePair(0., 0.)), randomy_val(DoublePair(0., 0.)), randomx_ctrl_val(0), randomy_ctrl_val(0), swing_val(DoublePair(0., 0.)), speed_val(DoublePair(0., 10.)), speed_ctrl_val(0), speeda_val(DoublePair(0., 0.)), speeda_ctrl_val(0), speeda_use_gradient_val(false), speedscale_val(false), toplayer_val(new TIntEnumParam(TOP_YOUNGER, "Younger")), mass_val(DoublePair(1., 1.)), scale_val(DoublePair(100., 100.)), scale_ctrl_val(0), scale_ctrl_all_val(false), rot_val(DoublePair(0., 0.)), rot_ctrl_val(0), trail_val(DoublePair(0., 0.)), trailstep_val(0.0), rotswingmode_val(new TIntEnumParam(SWING_RANDOM, "Random")), rotspeed_val(0.0), rotsca_val(DoublePair(0., 0.)), rotswing_val(DoublePair(0., 0.)), pathaim_val(false), opacity_val(DoublePair(0., 100.)), opacity_ctrl_val(0), trailopacity_val(DoublePair(0., 100.)), scalestep_val(DoublePair(0., 0.)), scalestep_ctrl_val(0), fadein_val(0.0), fadeout_val(0.0), animation_val(new TIntEnumParam(ANIM_HOLD, "Hold Frame")), step_val(1), gencol_ctrl_val(0), gencol_spread_val(0.0), genfadecol_val(0.0), fincol_ctrl_val(0), fincol_spread_val(0.0), finrangecol_val(0.0), finfadecol_val(0.0), foutcol_ctrl_val(0), foutcol_spread_val(0.0), foutrangecol_val(0.0), foutfadecol_val(0.0) , source_gradation_val(false), pick_color_for_every_frame_val(false) /*- 計算モード (背景+粒子/粒子/背景/照明された粒子 -*/ , iw_rendermode_val(new TIntEnumParam(REND_ALL, "All")) /*- 粒子に貼られる絵の素材 -*/ , base_ctrl_val(0) /*- カールノイズ的な動きを与える -*/ , curl_val(0.0) /*- 手前奥でコントロールを立体化してみる -*/ , curl_ctrl_1_val(0), curl_ctrl_2_val(0) /*- 粒子敷き詰め作戦。粒子を正三角形で敷き詰めたときの、 正三角形の一辺の長さをインチで指定する -*/ , iw_triangleSize(15.0) /*- ひらひら回転 -*/ , flap_ctrl_val(0), iw_flap_velocity_val(0.0) /*- 回転角速度 -*/ , iw_flap_dir_sensitivity_val(1.0) /*- 回転軸感度 -*/ /*- ひらひら粒子に照明を当てる -*/ , iw_light_theta_val(60.0) /*- 光源の方向(Degree)-*/ , iw_light_phi_val(45.0) /*- 光源の傾き(Degree)-*/ /*- 読み込みマージン -*/ , margin_val(0.0) /*- 重力を徐々に与えるためのフレーム長 -*/ , iw_gravityBufferFrame_val(0) { addInputPort("Texture1", new TRasterFxPort, 0); addInputPort("Control1", new TRasterFxPort, 1); length_val->setMeasureName("fxLength"); height_val->setMeasureName("fxLength"); center_val->getX()->setMeasureName("fxLength"); center_val->getY()->setMeasureName("fxLength"); bindParam(this, "source_ctrl", source_ctrl_val); bindParam(this, "bright_thres", bright_thres_val); bright_thres_val->setValueRange(0, 255); bindParam(this, "center", center_val); bindParam(this, "length", length_val); length_val->setValueRange(1.0, (std::numeric_limits<double>::max)()); bindParam(this, "height", height_val); height_val->setValueRange(1.0, (std::numeric_limits<double>::max)()); bindParam(this, "birth_rate", maxnum_val); maxnum_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "lifetime", lifetime_val); lifetime_val->getMin()->setValueRange(0., +3000.); lifetime_val->getMax()->setValueRange(0., +3000.); bindParam(this, "lifetime_ctrl", lifetime_ctrl_val); bindParam(this, "column_lifetime", column_lifetime_val); bindParam(this, "starting_frame", startpos_val); bindParam(this, "random_seed", randseed_val); bindParam(this, "gravity", gravity_val); gravity_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "gravity_angle", g_angle_val); g_angle_val->setMeasureName("angle"); bindParam(this, "gravity_ctrl", gravity_ctrl_val); bindParam(this, "friction", friction_val); bindParam(this, "friction_ctrl", friction_ctrl_val); bindParam(this, "wind", windint_val); bindParam(this, "wind_angle", windangle_val); windangle_val->setMeasureName("angle"); bindParam(this, "swing_mode", swingmode_val); swingmode_val->addItem(SWING_SMOOTH, "Smooth"); bindParam(this, "scattering_x", randomx_val); randomx_val->getMin()->setMeasureName("fxLength"); randomx_val->getMax()->setMeasureName("fxLength"); randomx_val->getMin()->setValueRange(-1000., +1000.); randomx_val->getMax()->setValueRange(-1000., +1000.); bindParam(this, "scattering_y", randomy_val); randomy_val->getMin()->setMeasureName("fxLength"); randomy_val->getMax()->setMeasureName("fxLength"); randomy_val->getMin()->setValueRange(-1000., +1000.); randomy_val->getMax()->setValueRange(-1000., +1000.); bindParam(this, "scattering_x_ctrl", randomx_ctrl_val); bindParam(this, "scattering_y_ctrl", randomy_ctrl_val); bindParam(this, "swing", swing_val); swing_val->getMin()->setValueRange(-1000., +1000.); swing_val->getMax()->setValueRange(-1000., +1000.); speed_val->getMin()->setMeasureName("fxLength"); speed_val->getMax()->setMeasureName("fxLength"); bindParam(this, "speed", speed_val); speed_val->getMin()->setValueRange(-1000., +1000.); speed_val->getMax()->setValueRange(-1000., +1000.); bindParam(this, "speed_ctrl", speed_ctrl_val); bindParam(this, "speed_angle", speeda_val); speeda_val->getMin()->setValueRange(-1000., +1000.); speeda_val->getMax()->setValueRange(-1000., +1000.); speeda_val->getMin()->setMeasureName("angle"); speeda_val->getMax()->setMeasureName("angle"); bindParam(this, "speeda_ctrl", speeda_ctrl_val); bindParam(this, "speeda_use_gradient", speeda_use_gradient_val); bindParam(this, "speed_size", speedscale_val); bindParam(this, "top_layer", toplayer_val); toplayer_val->addItem(TOP_OLDER, "Older"); toplayer_val->addItem(TOP_SMALLER, "Smaller"); toplayer_val->addItem(TOP_BIGGER, "Bigger"); toplayer_val->addItem(TOP_RANDOM, "Random"); bindParam(this, "mass", mass_val); mass_val->getMin()->setValueRange(0., +1000.); mass_val->getMax()->setValueRange(0., +1000.); bindParam(this, "scale", scale_val); scale_val->getMin()->setValueRange(0., +1000.); scale_val->getMax()->setValueRange(0., +1000.); bindParam(this, "scale_ctrl", scale_ctrl_val); bindParam(this, "scale_ctrl_all", scale_ctrl_all_val); bindParam(this, "rot", rot_val); rot_val->getMin()->setValueRange(-1000., +1000.); rot_val->getMax()->setValueRange(-1000., +1000.); rot_val->getMin()->setMeasureName("angle"); rot_val->getMax()->setMeasureName("angle"); bindParam(this, "rot_ctrl", rot_ctrl_val); bindParam(this, "trail", trail_val); trail_val->getMin()->setValueRange(0., +1000.); trail_val->getMax()->setValueRange(0., +1000.); bindParam(this, "trail_step", trailstep_val); trailstep_val->setValueRange(1.0, (std::numeric_limits<double>::max)()); bindParam(this, "spin_swing_mode", rotswingmode_val); rotswingmode_val->addItem(SWING_SMOOTH, "Smooth"); bindParam(this, "spin_speed", rotspeed_val); rotspeed_val->setMeasureName("angle"); bindParam(this, "spin_random", rotsca_val); rotsca_val->getMin()->setValueRange(-1000., +1000.); rotsca_val->getMax()->setValueRange(-1000., +1000.); rotsca_val->getMin()->setMeasureName("angle"); rotsca_val->getMax()->setMeasureName("angle"); bindParam(this, "spin_swing", rotswing_val); rotswing_val->getMin()->setValueRange(-1000., +1000.); rotswing_val->getMax()->setValueRange(-1000., +1000.); rotswing_val->getMin()->setMeasureName("angle"); rotswing_val->getMax()->setMeasureName("angle"); bindParam(this, "path_aim", pathaim_val); bindParam(this, "opacity", opacity_val); opacity_val->getMin()->setValueRange(0., +100.); opacity_val->getMax()->setValueRange(0., +100.); bindParam(this, "opacity_ctrl", opacity_ctrl_val); bindParam(this, "trail_opacity", trailopacity_val); trailopacity_val->getMin()->setValueRange(0., +100.); trailopacity_val->getMax()->setValueRange(0., +100.); bindParam(this, "scale_step", scalestep_val); bindParam(this, "scale_step_ctrl", scalestep_ctrl_val); scalestep_val->getMin()->setValueRange(-100., +100.); scalestep_val->getMax()->setValueRange(-100., +100.); bindParam(this, "fade_in", fadein_val); bindParam(this, "fade_out", fadeout_val); bindParam(this, "animation", animation_val); animation_val->addItem(ANIM_RANDOM, "Random Frame"); animation_val->addItem(ANIM_CYCLE, "Column"); animation_val->addItem(ANIM_R_CYCLE, "Column - Random Start"); animation_val->addItem(ANIM_SR_CYCLE, "Column Swing - Random Start"); bindParam(this, "step", step_val); step_val->setValueRange(1, (std::numeric_limits<int>::max)()); TSpectrum::ColorKey colors[] = { TSpectrum::ColorKey(0, TPixel32::Red), TSpectrum::ColorKey(1, TPixel32::Red)}; gencol_val = TSpectrumParamP(tArrayCount(colors), colors); bindParam(this, "birth_color", gencol_val); bindParam(this, "birth_color_ctrl", gencol_ctrl_val); bindParam(this, "birth_color_spread", gencol_spread_val); gencol_spread_val->setValueRange(0.0, (std::numeric_limits<int>::max)()); bindParam(this, "birth_color_fade", genfadecol_val); genfadecol_val->setValueRange(0.0, 100.0); TSpectrum::ColorKey colors1[] = { TSpectrum::ColorKey(0, TPixel32::Green), TSpectrum::ColorKey(1, TPixel32::Green)}; fincol_val = TSpectrumParamP(tArrayCount(colors1), colors1); bindParam(this, "fadein_color", fincol_val); bindParam(this, "fadein_color_ctrl", fincol_ctrl_val); bindParam(this, "fadein_color_spread", fincol_spread_val); fincol_spread_val->setValueRange(0.0, (std::numeric_limits<int>::max)()); bindParam(this, "fadein_color_range", finrangecol_val); finrangecol_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "fadein_color_fade", finfadecol_val); finfadecol_val->setValueRange(0.0, 100.0); TSpectrum::ColorKey colors2[] = { TSpectrum::ColorKey(0, TPixel32::Blue), TSpectrum::ColorKey(1, TPixel32::Blue)}; foutcol_val = TSpectrumParamP(tArrayCount(colors2), colors2); bindParam(this, "fadeout_color", foutcol_val); bindParam(this, "fadeout_color_ctrl", foutcol_ctrl_val); bindParam(this, "fadeout_color_spread", foutcol_spread_val); foutcol_spread_val->setValueRange(0.0, (std::numeric_limits<int>::max)()); bindParam(this, "fadeout_color_range", foutrangecol_val); foutrangecol_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "fadeout_color_fade", foutfadecol_val); foutfadecol_val->setValueRange(0.0, 100.0); bindParam(this, "source_gradation", source_gradation_val); bindParam(this, "pick_color_for_every_frame", pick_color_for_every_frame_val); /*- 計算モード (背景+粒子/粒子/背景/照明された粒子) -*/ bindParam(this, "rendermode", iw_rendermode_val); iw_rendermode_val->addItem(REND_PARTICLES, "Particles"); iw_rendermode_val->addItem(REND_BG, "Background"); iw_rendermode_val->addItem(REND_ILLUMINATED, "Illuminated"); /*- 粒子に貼られる絵の素材 -*/ bindParam(this, "base_ctrl", base_ctrl_val); bindParam(this, "curl", curl_val); curl_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "curl_ctrl", curl_ctrl_1_val); bindParam(this, "curl_ctrl_2", curl_ctrl_2_val); /*- 粒子敷き詰め作戦。粒子を正三角形で敷き詰めたときの、 正三角形の一辺の長さをインチで指定する -*/ bindParam(this, "triangleSize", iw_triangleSize); iw_triangleSize->setValueRange(0.1, 100); iw_triangleSize->setMeasureName("fxLength"); /*- ひらひら回転 -*/ bindParam(this, "flap_ctrl", flap_ctrl_val); bindParam(this, "flap_velocity", iw_flap_velocity_val); iw_flap_velocity_val->setValueRange(0.0, (std::numeric_limits<double>::max)()); bindParam(this, "flap_dir_sensitivity", iw_flap_dir_sensitivity_val); iw_flap_dir_sensitivity_val->setValueRange(0.0, 1.0); /*- ひらひら粒子に照明を当てる -*/ bindParam(this, "light_theta", iw_light_theta_val); iw_light_theta_val->setValueRange(-1000.0, 1000.0); bindParam(this, "light_phi", iw_light_phi_val); iw_light_phi_val->setValueRange(-1000.0, 1000.0); /*- 読み込みマージン -*/ margin_val->setMeasureName("fxLength"); bindParam(this, "margin", margin_val); margin_val->setValueRange(0, (std::numeric_limits<double>::max)()); /*- 重力を徐々に与えるためのフレーム長 -*/ bindParam(this, "gravityBufferFrame", iw_gravityBufferFrame_val); }
int intersect(const TQuadratic &q, const TSegment &s, std::vector<DoublePair> &intersections, bool firstIsQuad) { int solutionNumber = 0; // Note the line `a*x+b*y+c = 0` we search for solutions // di a*x(t)+b*y(t)+c=0 in [0,1] double a = s.getP0().y - s.getP1().y, b = s.getP1().x - s.getP0().x, c = -(a * s.getP0().x + b * s.getP0().y); // se il segmento e' un punto if (0.0 == a && 0.0 == b) { double outParForQuad = q.getT(s.getP0()); if (areAlmostEqual(q.getPoint(outParForQuad), s.getP0())) { if (firstIsQuad) intersections.push_back(DoublePair(outParForQuad, 0)); else intersections.push_back(DoublePair(0, outParForQuad)); return 1; } return 0; } if (q.getP2() - q.getP1() == q.getP1() - q.getP0()) { // the second is a segment.... if (firstIsQuad) return intersect(TSegment(q.getP0(), q.getP2()), s, intersections); else return intersect(s, TSegment(q.getP0(), q.getP2()), intersections); } std::vector<TPointD> bez, pol; bez.push_back(q.getP0()); bez.push_back(q.getP1()); bez.push_back(q.getP2()); bezier2poly(bez, pol); std::vector<double> poly_1(3, 0), sol; poly_1[0] = a * pol[0].x + b * pol[0].y + c; poly_1[1] = a * pol[1].x + b * pol[1].y; poly_1[2] = a * pol[2].x + b * pol[2].y; if (!(rootFinding(poly_1, sol))) return 0; double segmentPar, solution; TPointD v10(s.getP1() - s.getP0()); for (UINT i = 0; i < sol.size(); ++i) { solution = sol[i]; if ((0.0 <= solution && solution <= 1.0) || areAlmostEqual(solution, 0.0, 1e-6) || areAlmostEqual(solution, 1.0, 1e-6)) { segmentPar = (q.getPoint(solution) - s.getP0()) * v10 / (v10 * v10); if ((0.0 <= segmentPar && segmentPar <= 1.0) || areAlmostEqual(segmentPar, 0.0, 1e-6) || areAlmostEqual(segmentPar, 1.0, 1e-6)) { TPointD p1 = q.getPoint(solution); TPointD p2 = s.getPoint(segmentPar); assert(areAlmostEqual(p1, p2, 1e-1)); if (firstIsQuad) intersections.push_back(DoublePair(solution, segmentPar)); else intersections.push_back(DoublePair(segmentPar, solution)); solutionNumber++; } } } return solutionNumber; }
int intersect(const TPointD &p1, const TPointD &p2, const TPointD &p3, const TPointD &p4, std::vector<DoublePair> &intersections) { // This algorithm is presented in Graphics Geems III pag 199 static double Ax, Bx, Ay, By, Cx, Cy, d, f, e; static double x1lo, x1hi, y1lo, y1hi; Ax = p2.x - p1.x; Bx = p3.x - p4.x; // test delle BBox if (Ax < 0.0) { x1lo = p2.x; x1hi = p1.x; } else { x1lo = p1.x; x1hi = p2.x; } if (Bx > 0.0) { if (x1hi < p4.x || x1lo > p3.x) return 0; } else if (x1hi < p3.x || x1lo > p4.x) return 0; Ay = p2.y - p1.y; By = p3.y - p4.y; if (Ay < 0) { y1lo = p2.y; y1hi = p1.y; } else { y1lo = p1.y; y1hi = p2.y; } if (By > 0) { if (y1hi < p4.y || y1lo > p3.y) return 0; } else if (y1hi < p3.y || y1lo > p4.y) return 0; Cx = p1.x - p3.x; Cy = p1.y - p3.y; d = By * Cx - Bx * Cy; f = Ay * Bx - Ax * By; e = Ax * Cy - Ay * Cx; if (f > 0) { if (d < 0) return 0; if (!areAlmostEqual(d, f)) if (d > f) return 0; if (e < 0) return 0; if (!areAlmostEqual(e, f)) if (e > f) return 0; } else if (f < 0) { if (d > 0) return 0; if (!areAlmostEqual(d, f)) if (d < f) return 0; if (e > 0) return 0; if (!areAlmostEqual(e, f)) if (e < f) return 0; } else { if (d < 0 || d > 1 || e < 0 || e > 1) return 0; if (p1 == p2 && p3 == p4) { intersections.push_back(DoublePair(0, 0)); return 1; } // Check that the segments are not on the same line. if (!cross(p2 - p1, p4 - p1)) { // Calculation of Barycentric combinations. double distp2p1 = norm2(p2 - p1); double distp3p4 = norm2(p3 - p4); double dist2_p3p1 = norm2(p3 - p1); double dist2_p4p1 = norm2(p4 - p1); double dist2_p3p2 = norm2(p3 - p2); double dist2_p4p2 = norm2(p4 - p2); int intersection = 0; // Calculation of the first two solutions. double vol1; if (distp3p4) { distp3p4 = sqrt(distp3p4); vol1 = (p1 - p3) * normalize(p4 - p3); if (vol1 >= 0 && vol1 <= distp3p4) // Barycentric combinations valid { intersections.push_back(DoublePair(0.0, vol1 / distp3p4)); ++intersection; } vol1 = (p2 - p3) * normalize(p4 - p3); if (vol1 >= 0 && vol1 <= distp3p4) { intersections.push_back(DoublePair(1.0, vol1 / distp3p4)); ++intersection; } } if (distp2p1) { distp2p1 = sqrt(distp2p1); vol1 = (p3 - p1) * normalize(p2 - p1); if (dist2_p3p2 && dist2_p3p1) if (vol1 >= 0 && vol1 <= distp2p1) { intersections.push_back(DoublePair(vol1 / distp2p1, 0.0)); ++intersection; } vol1 = (p4 - p1) * normalize(p2 - p1); if (dist2_p4p2 && dist2_p4p1) if (vol1 >= 0 && vol1 <= distp2p1) { intersections.push_back(DoublePair(vol1 / distp2p1, 1.0)); ++intersection; } } return intersection; } return -1; } double par_s = d / f; double par_t = e / f; intersections.push_back(DoublePair(par_s, par_t)); return 1; }
DoublePair TRangeParam::getValue(double frame) const { return DoublePair(m_data->m_min->getValue(frame), m_data->m_max->getValue(frame)); }
DoublePair TRangeParam::getDefaultValue() const { return DoublePair(m_data->m_min->getDefaultValue(), m_data->m_max->getDefaultValue()); }
ino_level_rgba() : m_red_in(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_red_out(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_red_gamma(1.0 * ino::param_range()), m_gre_in(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_gre_out(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_gre_gamma(1.0 * ino::param_range()), m_blu_in(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_blu_out(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_blu_gamma(1.0 * ino::param_range()), m_alp_in(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_alp_out(DoublePair( 0.0 * ino::param_range(), 1.0 * ino::param_range())), m_alp_gamma(1.0 * ino::param_range()) , m_anti_alias(true), m_ref_mode(new TIntEnumParam(0, "Red")) { addInputPort("Source", this->m_input); addInputPort("Reference", this->m_refer); bindParam(this, "red_in", this->m_red_in); bindParam(this, "red_out", this->m_red_out); bindParam(this, "red_gamma", this->m_red_gamma); bindParam(this, "gre_in", this->m_gre_in); bindParam(this, "gre_out", this->m_gre_out); bindParam(this, "gre_gamma", this->m_gre_gamma); bindParam(this, "blu_in", this->m_blu_in); bindParam(this, "blu_out", this->m_blu_out); bindParam(this, "blu_gamma", this->m_blu_gamma); bindParam(this, "alp_in", this->m_alp_in); bindParam(this, "alp_out", this->m_alp_out); bindParam(this, "alp_gamma", this->m_alp_gamma); bindParam(this, "anti_alias", this->m_anti_alias); bindParam(this, "reference", this->m_ref_mode); this->m_red_in->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_red_in->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_red_out->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_red_out->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_red_gamma->setValueRange( 0.1 * ino::param_range(), 10.0 * ino::param_range()); /* red_gamma値 */ this->m_gre_in->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_gre_in->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_gre_out->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_gre_out->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_gre_gamma->setValueRange( 0.1 * ino::param_range(), 10.0 * ino::param_range()); /* gre_gamma値 */ this->m_blu_in->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_blu_in->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_blu_out->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_blu_out->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_blu_gamma->setValueRange( 0.1 * ino::param_range(), 10.0 * ino::param_range()); /* blu_gamma値 */ this->m_alp_in->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_alp_in->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_alp_out->getMin()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_alp_out->getMax()->setValueRange( 0.0 * ino::param_range(), 1.0 * ino::param_range()); this->m_alp_gamma->setValueRange( 0.1 * ino::param_range(), 10.0 * ino::param_range()); /* alp_gamma値 */ this->m_ref_mode->addItem(1, "Green"); this->m_ref_mode->addItem(2, "Blue"); this->m_ref_mode->addItem(3, "Alpha"); this->m_ref_mode->addItem(4, "Luminance"); this->m_ref_mode->addItem(-1, "Nothing"); }