Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - (void)testEasing {
- double steps = 10;
- double start = 0;
- double end = 100;
- NSLog(@"Test %0.f to %0.f", start, end);
- for (double i = 0; i < steps; i++) {
- [self easeInOut:i b:start c:end d:steps];
- }
- start = 100;
- end = 0;
- NSLog(@"Test %0.f to %0.f", start, end);
- for (double i = 0; i < steps; i++) {
- [self easeInOut:i b:start c:end d:steps];
- }
- }
- // Source: http://gizma.com/easing/
- - (double)easeInOut:(double)t b:(double)b c:(double)c d:(double)d {
- if (t>d) return c;
- BOOL reverse = NO;
- if (c < b) {
- reverse = YES;
- double newc = b;
- b = c;
- c = newc;
- }
- NSInteger logStep = (NSInteger)t;
- double result;
- t /= d/2;
- if (t < 1) {
- result = c/2*t*t*t + b;
- if (reverse) result = c - result;
- NSLog(@"%ld: %f = %f/2*%f*%f*%f + %f", (long)logStep, result, c, t, t, t, b);
- return result;
- };
- t -= 2;
- result = c/2*(t*t*t + 2) + b;
- if (reverse) result = c - result;
- NSLog(@"%ld: %f = %f/2*(%f*%f*%f + 2) + %f", (long)logStep, result, c, t, t, t, b);
- return result;
- }
- // Resulting output
- //
- // Test 0 to 100
- // 0: 0.000000 = 100.000000/2*0.000000*0.000000*0.000000 + 0.000000
- // 1: 0.400000 = 100.000000/2*0.200000*0.200000*0.200000 + 0.000000
- // 2: 3.200000 = 100.000000/2*0.400000*0.400000*0.400000 + 0.000000
- // 3: 10.800000 = 100.000000/2*0.600000*0.600000*0.600000 + 0.000000
- // 4: 25.600000 = 100.000000/2*0.800000*0.800000*0.800000 + 0.000000
- // 5: 50.000000 = 100.000000/2*(-1.000000*-1.000000*-1.000000 + 2) + 0.000000
- // 6: 74.400000 = 100.000000/2*(-0.800000*-0.800000*-0.800000 + 2) + 0.000000
- // 7: 89.200000 = 100.000000/2*(-0.600000*-0.600000*-0.600000 + 2) + 0.000000
- // 8: 96.800000 = 100.000000/2*(-0.400000*-0.400000*-0.400000 + 2) + 0.000000
- // 9: 99.600000 = 100.000000/2*(-0.200000*-0.200000*-0.200000 + 2) + 0.000000
- //
- // Test 100 to 0
- // 0: 100.000000 = 100.000000/2*0.000000*0.000000*0.000000 + 0.000000
- // 1: 99.600000 = 100.000000/2*0.200000*0.200000*0.200000 + 0.000000
- // 2: 96.800000 = 100.000000/2*0.400000*0.400000*0.400000 + 0.000000
- // 3: 89.200000 = 100.000000/2*0.600000*0.600000*0.600000 + 0.000000
- // 4: 74.400000 = 100.000000/2*0.800000*0.800000*0.800000 + 0.000000
- // 5: 50.000000 = 100.000000/2*(-1.000000*-1.000000*-1.000000 + 2) + 0.000000
- // 6: 25.600000 = 100.000000/2*(-0.800000*-0.800000*-0.800000 + 2) + 0.000000
- // 7: 10.800000 = 100.000000/2*(-0.600000*-0.600000*-0.600000 + 2) + 0.000000
- // 8: 3.200000 = 100.000000/2*(-0.400000*-0.400000*-0.400000 + 2) + 0.000000
- // 9: 0.400000 = 100.000000/2*(-0.200000*-0.200000*-0.200000 + 2) + 0.000000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement