Example #1
0
    public static bool Example_EvaluateUnitTorus(SpanF qx, SpanF qy, SpanF qz)
    {
        //		var qv = spanVectorScale (
        //			spanVector (qx, qy, qz),
        //			spanExactly (1.0)
        //			);
        var scaler = spanExactly(1.75);
        var qv     = spanVector(
            spanMult(qx, scaler),
            spanMult(qy, scaler),
            spanMult(qz, scaler));

        var plane = spanVectorNormalize(spanVector(qv.X, qv.Y, spanExactly(0)));
        var delta = spanVectorMagnitude(spanVectorSubtract(qv, plane));

        return(spanContains(delta, 1.0));


        //		var r = spanDivide (spanExactly (1.0), spanVectorMagnitude (qv));
        //		var up = spanVector (spanExactly (0), spanExactly (1), spanExactly (0));
        //		var c = spanVectorCross (qv, up);
        //		var m = spanVectorMagnitude (c);
        //
        //		var f = spanMult (m, r);
        //		return spanContains (f, 1.0);
    }
Example #2
0
 public static Cubic <float> spanColorSignedToRGB(SpanF v)
 {
     return(Cubic <float> .Create(
                spanColorChannelToFloat(spanColorSignedForRed(v)),
                spanColorChannelToFloat(spanColorSignedForGreen(v)),
                spanColorChannelToFloat(spanColorSignedForBlue(v))));
 }
Example #3
0
 public static SpanF spanDivide(SpanF _sa, SpanF _sb)
 {
     spanCheck(_sa);
     spanCheck(_sb);
     return(spanUnsorted4(_sa.From / _sb.From, _sa.From / _sb.To, _sa.To / _sb.From, _sa.To / _sb.To));
     //return spanUnsorted(_sa.From / _sb.From, _sa.To / _sb.To);
 }
Example #4
0
    // Span Creation Methods:

    public static SpanF span(double from, double to)
    {
        var ans = SpanF.Create(from, to);

        spanCheck(ans);
        return(ans);
    }
Example #5
0
 public static Cubic <SpanF> spanVectorScale(Cubic <SpanF> a, SpanF scl)
 {
     return(new Cubic <SpanF> (
                spanMult(a.X, scl),
                spanMult(a.Y, scl),
                spanMult(a.Z, scl)));
 }
Example #6
0
    public Color ColorFromChakraField(SpanF pct)
    {
        Color curColor = this.ChakraColor;

        curColor.a = Mathf.Clamp01((float)(((pct.From + pct.To) * 0.5) * 1.0));
        return(curColor);
    }
Example #7
0
 public static SpanF spanProjSpan(SpanOf <SpanF> _sproj, SpanF _sindex)
 {
     spanProjCheck(_sproj);
     spanCheck(_sindex);
     return(spanAdd(spanExactly(_sproj.From.To),
                    spanMult(_sproj.To, spanAdd(_sindex, spanExactly(-_sproj.From.From)))));
     //return spanAdd(_sproj.From, spanMult(_sproj.To, _sindex));
 }
Example #8
0
    public static SpanF spanGreaterThan(SpanF _sa, SpanF _sb)
    {
        WeakTODO();         // the line below is not good
        var cmpr = spanSubtract(_sa, _sb);
        var d    = ((((cmpr.From + cmpr.To) * 0.5) > 0.0) ? 1.0 : 0.0);

        return(span(d, d));
    }
Example #9
0
 public static SpanF spanBounded(SpanF _sa, SpanF _val)
 {
     spanCheck(_sa);
     spanCheck(_val);
     return(span(
                util_bounded(_sa.From, _val.From, _val.To),
                util_bounded(_sa.To, _val.From, _val.To)));
 }
Example #10
0
 public static SpanF spanClampRange(SpanF v, SpanF range)
 {
     spanCheck(v);
     spanCheck(range);
     return(span(
                spanClampValue(v.From, range),
                spanClampValue(v.To, range)));
 }
Example #11
0
    public static Color Example_SpanToColor(SpanF _s)
    {
        var f = Example_SingleToColor(_s.From);
        var m = Example_SingleToColor(util_spanCenter(_s));
        var t = Example_SingleToColor(_s.To);

        return(Color.Lerp(Color.Lerp(f, t, 0.5f), m, 0.5f));
    }
Example #12
0
    public static SpanF spanAbs(SpanF _s)
    {
        var ans = spanUnsorted(Math.Abs(_s.From), Math.Abs(_s.To));

        if (spanContains(_s, 0.0))
        {
            ans = spanIncluding(ans, 0.0);
        }
        return(ans);
    }
Example #13
0
    public static SpanOf <SpanF> spanProjFromDomainAndRange(SpanF _sdomain, SpanF _srange)
    {
        spanCheck(_sdomain);
        spanCheck(_srange);
        var delta = (_srange.To - _srange.From) / (_sdomain.To - _sdomain.From);

        return(new SpanOf <SpanF>(
                   spanCreateInvalid(_sdomain.From, _srange.From),
                   spanExactly(delta)));
    }
Example #14
0
    /*
     * function spanColorSignedForGreen(v) {
     *      return v.boundedBy(span(-1.0, 1.0)).times(exactly(Math.PI)).cos().times(exactly(0.5)).add(exactly(0.5));
     * }
     *
     * function spanColorSignedForRed(v) {
     *      return spanColorSignedForGreen(v.add(exactly(-0.5)).times(exactly(1.0)));
     * }
     *
     * function spanColorSignedForBlue(v) {
     *      return spanColorSignedForGreen(v.add(exactly(0.5)).times(exactly(1.0)));
     * }
     */

    // Example Math Stuff:

    public static bool Example_EvaluateUnitCircle(SpanF qx, SpanF qy, SpanF qz)
    {
        //return qz.To > qy.To;
        //return spanContains (spanAdd (spanMult (qx, qx), spanMult (qy, qy)), 1);
        return(spanContains(
                   spanAdd(spanAdd(
                               spanMult(qx, qx),
                               spanMult(qy, qy)
                               ), spanMult(qz, qz))
                   , 1));
    }
Example #15
0
    public static SpanF spanATan2(SpanF _y, SpanF _x)
    {
        WeakTODO();

        return(spanUnsorted4(
                   Math.Atan2(_y.From, _x.From),
                   Math.Atan2(_y.From, _x.To),
                   Math.Atan2(_y.To, _x.From),
                   Math.Atan2(_y.To, _x.To)
                   ));
    }
Example #16
0
    void ContextMenu_TestColorSystem()
    {
        int    maxi = 10;
        double dm   = 1.0 / maxi;

        for (int i = -maxi; i < maxi; i++)
        {
            var fi = ((double)i) / ((double)(maxi / 2));
            var s  = SpanF.Create(fi, fi + dm);
            var g  = SpanAPI.spanColorSignedForGreen(s);
            Debug.Log("s=g: " + s + "=" + g);
        }
    }
Example #17
0
 public static void spanCheck(SpanF chk)
 {
     if (double.IsInfinity(chk.From) || double.IsInfinity(chk.To))
     {
         return;
     }
     if (double.IsNaN(chk.From) || double.IsNaN(chk.To))
     {
         return;
         //throw new ArgumentOutOfRangeException("Span contains NaN: " + chk.ToString() );
     }
     if ((chk.To >= chk.From))
     {
     }
     else
     {
         throw new ArgumentOutOfRangeException("Not a valid span!: " + chk.ToString());
     }
 }
Example #18
0
    public static SpanF spanSin(SpanF _s)
    {
        spanCheck(_s);

        var ans = spanUnsorted(Math.Sin(_s.From), Math.Sin(_s.To));

        // TODO: Optimize, this walks through the critcal points ensuring they are in the interval:
        var cycleLength = Math.PI / 4.0;
        var unitFrom    = _s.From / cycleLength;
        var unitTo      = Math.Min(_s.To / cycleLength, unitFrom + (cycleLength * 6));

        while (Math.Floor(unitFrom) < Math.Floor(unitTo))
        {
            unitFrom = Math.Floor(unitFrom) + 1;
            var curVal = Math.Sin(unitFrom * cycleLength);
            ans = spanIncluding(ans, curVal);
        }

        return(ans);
    }
Example #19
0
 public static double util_spanCenter(SpanF _s)
 {
     return((_s.From + _s.To) * 0.5f);
 }
Example #20
0
 public SpanF times(SpanF other)
 {
     return(SpanAPI.spanMult(this, other));
 }
Example #21
0
    public static Cubic <SpanF> Example_FieldFromParticle(Cubic <SpanF> pos, Cubic <SpanF> particle, SpanF charge)
    {
        var r1       = spanVectorSubtract(pos, particle);
        var invSqrR1 = spanDivide(spanExactly(1), spanVectorDot(r1, r1));
        var nr       = spanVectorNormalize(r1);
        var ans      = spanVectorScale(nr, spanMult(charge, invSqrR1));

        return(ans);
    }
Example #22
0
 public SpanF minus(SpanF other)
 {
     return(SpanAPI.spanSubtract(this, other));
 }
Example #23
0
 public static SpanF spanIncluding(SpanF _s, double _val)
 {
     spanCheck(_s);
     return(span(Math.Min(_s.From, _val), Math.Max(_s.To, _val)));
 }
Example #24
0
 public SpanF add(SpanF other)
 {
     return(SpanAPI.spanAdd(this, other));
 }
Example #25
0
 public static SpanF spanSqrt(SpanF _s)
 {
     spanCheck(_s);
     return(span(util_sqrtSigned(_s.From), util_sqrtSigned(_s.To)));
 }
Example #26
0
 public static float spanColorChannelToFloat(SpanF v)
 {
     return((float)(v.To + v.From) * 0.5f);
 }
Example #27
0
 public static SpanF spanColorSignedForBlue(SpanF v)
 {
     return(spanColorSignedForGreen(v.add(SpanF.exactly(0.5)).times(SpanF.exactly(1.0))));
 }
Example #28
0
    // Color System:

    public static SpanF spanColorSignedForGreen(SpanF v)
    {
        return(v.boundedBy(span(-1.0, 1.0)).times(SpanF.exactly(Math.PI)).cos().times(SpanF.exactly(0.5)).add(SpanF.exactly(0.5)));
    }
Example #29
0
 public SpanF boundedBy(SpanF range)
 {
     return(SpanAPI.spanBounded(this, range));
 }
Example #30
0
    // Span Vector Operations

    public static Cubic <SpanF> spanVector(SpanF x, SpanF y, SpanF z)
    {
        return(new Cubic <SpanF> (x, y, z));
    }