Exemple #1
0
 public void SetFoundSurface(SurfType st, bool b)
 {
     if (foundSurfaces.ContainsKey(st))
     {
         foundSurfaces.Remove(st);
     }
     foundSurfaces.Add(st, b);
 }
Exemple #2
0
        public bool IsFoundSurface(SurfType st)
        {
            bool b;

            if (!foundSurfaces.TryGetValue(st, out b))
            {
                throw new KeyNotFoundException("In IsFoundSurface(...) the surface type is not treated");
            }
            return(b);
        }
Exemple #3
0
 public AKT_NurbsSurface(AKT_NurbsCurve[] edgesOuter, AKT_NurbsCurve[][]  edgesInner, IEnumerable <Tuple <AKT_NurbsPoint, int, int> > nodes, int u_count, int v_count, int u_degree, int v_degree, SurfType st)
 {
     this.u_count    = u_count;
     this.v_count    = v_count;
     this.nodes      = nodes;
     this.u_degree   = u_degree;
     this.v_degree   = v_degree;
     this.edgesOuter = edgesOuter;
     this.edgesInner = edgesInner;
     this.surfType   = st;
 }
Exemple #4
0
        public void StartBallModify(SurfType st, long thisTime)
        {
            switch (st)
            {
            case SurfType.Ice:
            {
                SetState(BallState.Sliding, true);
                if (Math.Round(xyrotatorAnim.GetAnimation(0).GetCurrentSpeed(thisTime)) == 0)
                {
                    double d = 1;
                    if (!movingRight)
                    {
                        d *= -1;
                    }

                    xyrotatorAnim.ChangeAnimator(
                        0,
                        new LinearUnboundedAnimator(
                            Math.Round(centerX),
                            thisTime,
                            d * 0.256
                            )
                        );
                }
                break;
            }

            case SurfType.Forced:
            {
                SetState(BallState.GroundForced, true);
                break;
            }

            case SurfType.Fire:
            {
                if (!IsStateAlso(BallState.Burning))
                {
                    Console.WriteLine("BurnBabyBurn.");
                    SetState(BallState.Burning, true);
                    double l = Math.Max(lifeAnim.CalculateValue(thisTime) - 27, 0);
                    lifeAnim =
                        new LinearBoundedAnimator(
                            l,
                            thisTime,
                            -83 * 0.001 / Constants.SecsToDieBurnt,
                            l,
                            0
                            );
                }
                break;
            }
            }
        }
Exemple #5
0
 private BallState surface2state(SurfType type)
 {
     if (type == SurfType.Fire)
     {
         return(BallState.Burning);
     }
     else if (type == SurfType.Forced)
     {
         return(BallState.GroundForced);
     }
     else if (type == SurfType.Ice)
     {
         return(BallState.Sliding);
     }
     else
     {
         throw new Exception("In ContactSurface.surface2state(...) the input type is unexpected.");
     }
 }
Exemple #6
0
        //public void SetControlPoint(AKT_NurbsPoint pnt, int u, int v)
        //{
        //    AKT_NurbsPoint[] p = new AKT_NurbsPoint[] { pnt };
        //    if (Points == null || Points.Count() == 0)
        //    {
        //        this.points = p;
        //    }
        //    else
        //    {
        //        this.points = this.points.Concat(p).ToArray();
        //    }
        //}

        public static AKT_NurbsSurface PlaneSurface(AKT_Interval u, AKT_Interval v, SurfType st)
        {
            AKT_NurbsPoint p00 = new AKT_NurbsPoint(new AKT_Point3d(u.T0, v.T0, 0), 1);
            AKT_NurbsPoint p01 = new AKT_NurbsPoint(new AKT_Point3d(u.T0, v.T1, 0), 1);
            AKT_NurbsPoint p10 = new AKT_NurbsPoint(new AKT_Point3d(u.T1, v.T0, 0), 1);
            AKT_NurbsPoint p11 = new AKT_NurbsPoint(new AKT_Point3d(u.T1, v.T1, 0), 1);

            List <Tuple <AKT_NurbsPoint, int, int> > tups = new List <Tuple <AKT_NurbsPoint, int, int> >();

            tups.Add(new Tuple <AKT_NurbsPoint, int, int>(p00, 0, 0));
            tups.Add(new Tuple <AKT_NurbsPoint, int, int>(p01, 0, 1));
            tups.Add(new Tuple <AKT_NurbsPoint, int, int>(p10, 1, 0));
            tups.Add(new Tuple <AKT_NurbsPoint, int, int>(p11, 1, 1));

            AKT_NurbsCurve e1 = new AKT_NurbsCurve(new AKT_NurbsPoint[] { p00, p01 }, 2, CurveType.Line, new AKT_Interval(0, 1));
            AKT_NurbsCurve e2 = new AKT_NurbsCurve(new AKT_NurbsPoint[] { p01, p11 }, 2, CurveType.Line, new AKT_Interval(0, 1));
            AKT_NurbsCurve e3 = new AKT_NurbsCurve(new AKT_NurbsPoint[] { p11, p10 }, 2, CurveType.Line, new AKT_Interval(0, 1));
            AKT_NurbsCurve e4 = new AKT_NurbsCurve(new AKT_NurbsPoint[] { p10, p00 }, 2, CurveType.Line, new AKT_Interval(0, 1));

            AKT_NurbsCurve[] edgeOuter = new AKT_NurbsCurve[] { e1, e2, e3, e4 };

            return(new AKT_NurbsSurface(edgeOuter, new  AKT_NurbsCurve[0][], tups, 2, 2, 3, 3, st));
        }