package com.duguang.baseanimation.ui.canvas.chart.util; /** * Created by Dacer on 11/14/13. */ public class PieHelper { private float start; private float end; private float targetStart; private float targetEnd; int velocity = 5; public PieHelper(float startDegree, float endDegree, PieHelper targetPie){ start = startDegree; end = endDegree; targetStart = targetPie.getStart(); targetEnd = targetPie.getEnd(); } public PieHelper(int startHour,int startMin,int endHour,int endMin){ start = 270+startHour*15+startMin*15/60; end = 270+endHour*15+endMin*15/60; while(end<start){ end+=360; } } public PieHelper(int startHour,int startMin,int startSec,int endHour,int endMin,int endSec){ start = 270+startHour*15+startMin*15/60+startSec*15/3600; end = 270+endHour*15+endMin*15/60+endSec*15/3600; while(end<start){ end+=360; } } public PieHelper(float startDegree,float endDegree){ start = startDegree; end = endDegree; while(end<start){ end+=360; } } PieHelper setTarget(float targetStart,float targetEnd){ this.targetStart = targetStart; this.targetEnd = targetEnd; return this; } PieHelper setTarget(PieHelper targetPie){ targetStart = targetPie.getStart(); targetEnd = targetPie.getEnd(); return this; } boolean isAtRest(){ return (start==targetStart)&&(end==targetEnd); } void update(){ start = updateSelf(start, targetStart, velocity); end = updateSelf(end, targetEnd, velocity); } public float getSweep(){ return end-start; } public float getStart(){ return start; } public float getEnd(){ return end; } private float updateSelf(float origin, float target, int velocity){ if (origin < target) { origin += velocity; } else if (origin > target){ origin-= velocity; } if(Math.abs(target-origin)<velocity){ origin = target; } return origin; } }