public void SetFoundSurface(SurfType st, bool b) { if (foundSurfaces.ContainsKey(st)) { foundSurfaces.Remove(st); } foundSurfaces.Add(st, b); }
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); }
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; }
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; } } }
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."); } }
//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)); }