| // | |
| // Copyright (c) Meta Platforms, Inc. and affiliates. | |
| // | |
| // This source code is licensed under the MIT license found in the | |
| // LICENSE file in the root directory of this source tree. | |
| // | |
| // @flow | |
| // @format | |
| // | |
| #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_SPRING_ANIMATION_H_ | |
| #define FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_SPRING_ANIMATION_H_ | |
| #include <Foundation/NSObject.h> | |
| // This simplified spring model is based off of a damped harmonic oscillator. | |
| // See: | |
| // https://en.wikipedia.org/wiki/Harmonic_oscillator#Damped_harmonic_oscillator | |
| // | |
| // This models the closed form of the second order differential equation which | |
| // happens to match the algorithm used by CASpringAnimation, a QuartzCore (iOS) | |
| // API that creates spring animations. | |
| @interface SpringAnimation : NSObject | |
| - (instancetype)initWithStiffness:(double)stiffness | |
| damping:(double)damping | |
| mass:(double)mass | |
| initialVelocity:(double)initialVelocity | |
| fromValue:(double)fromValue | |
| toValue:(double)toValue; | |
| - (double)curveFunction:(double)t; | |
| @property(nonatomic, assign, readonly) double stiffness; | |
| @property(nonatomic, assign, readonly) double damping; | |
| @property(nonatomic, assign, readonly) double mass; | |
| @property(nonatomic, assign, readonly) double initialVelocity; | |
| @property(nonatomic, assign) double fromValue; | |
| @property(nonatomic, assign) double toValue; | |
| @end | |
| #endif // FLUTTER_SHELL_PLATFORM_DARWIN_IOS_FRAMEWORK_SOURCE_SPRING_ANIMATION_H_ |