private SineSpiral(SpiralInvoluteParam param) { _startPoint = param.startPoint; _baseRadius = param.baseRadius; _speed = param.speed; _endRadian = param.endRadian; _firstPhase = param.firstPhase; _totalLength = param.endRadian * _baseRadius; }
private static SpiralInvolute GetMoveControl(SpiralInvoluteParam moveParam) { foreach (var keyItem in _spiralPool.Keys) { if (SpiralInvoluteParam.IsEquals(keyItem, moveParam)) { return(_spiralPool[keyItem]); } } SpiralInvolute spiral = new SpiralInvolute(moveParam); _spiralPool[moveParam] = spiral; return(spiral); }
public static bool IsEquals(SpiralInvoluteParam res, SpiralInvoluteParam target) { if (res == null && target == null) { return(true); } if (res != null && target != null) { return(res.baseRadius == target.baseRadius && res.speed == target.speed && res.endRadian == target.endRadian && res.startPoint == target.startPoint && res.firstPhase == target.firstPhase); } else { return(false); } }
private SpiralInvolute(SpiralInvoluteParam param) { _baseRadius = param.baseRadius; _speed = param.speed; _endRadian = param.endRadian; float ds = Mathf.PI * 0.125f; Vector3 stpoint = Vector3.zero; _totalLength = 0; for (float radian = 0; radian < _endRadian; radian += ds) { Vector3 next = GetSpiralInvolutePoint(radian); if (radian != 0) { _totalLength += Vector3.Distance(stpoint, next); } stpoint = next; } }
private ConicCurve(SpiralInvoluteParam moveParam) { _baseRadius = moveParam.baseRadius; _speed = moveParam.speed; _endRadian = moveParam.endRadian; _startPoint = moveParam.startPoint; Vector3 stpoint = Vector3.zero; float ds = Mathf.PI * 0.125f; _totalLength = 0; for (float radian = 0; radian < _endRadian; radian += ds) { Vector3 next = GetArchimedeanSpiralPoint(radian); if (radian != 0) { _totalLength += Vector3.Distance(stpoint, next); } stpoint = next; } }
public static IMoveCtrl GetMoveControl(Hashtable hash) { SpiralInvoluteParam moveParam = new SpiralInvoluteParam(hash); return(GetMoveControl(moveParam)); }