コード例 #1
0
 private SineSpiral(SpiralInvoluteParam param)
 {
     _startPoint  = param.startPoint;
     _baseRadius  = param.baseRadius;
     _speed       = param.speed;
     _endRadian   = param.endRadian;
     _firstPhase  = param.firstPhase;
     _totalLength = param.endRadian * _baseRadius;
 }
コード例 #2
0
    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);
    }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
    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;
        }
    }
コード例 #5
0
    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;
        }
    }
コード例 #6
0
    public static IMoveCtrl GetMoveControl(Hashtable hash)
    {
        SpiralInvoluteParam moveParam = new SpiralInvoluteParam(hash);

        return(GetMoveControl(moveParam));
    }