일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- windows7
- WSDL
- 아이맥
- Number
- 아이폰
- VISTA
- 7932
- Mobile
- java
- 애플
- c#
- screen
- ObjectiveC
- mac
- iPhone
- 볼링
- 맥
- 윈도구7
- Objective-C
- 윈도구
- 설치
- install
- 형식
- 퇴사
- 오브젝티브C
- windows
- 윈도우즈7
- 링크
- WebService
- cagr48com
- Today
- Total
A colossal Dreamer: GR鐵塔-天生我材
드래그(Pan, drag) 동작에서 관성유지에 대한 수학적 접근 본문
패닝이벤트 처리를 위한 수식
-상식으로도해결가능하지만-
입력종료시에 속도(v0)일 때,
시간(t1)동안 등감속하여, 멈추는 경우
이동거리는 (1/2)*v0*t1
여기서 가속도는 v0->0 으로 v0와 t1 으로 표현 가능하다.
문장으로 정리하면,
등감속 이동거리는
입력종료시의 속도(v0)로 감속시간(t1) 동안
이동한 거리의 절반이다.
아래 이미지는 수식으로 증명한 과정.
Swift code: Panning -> Moving with a Moment
@objc func panGestureAction(_ gesture: UIPanGestureRecognizer!) {
print("\(#function) v:\(gesture.velocity(in: self.view))")
guard gesture.state != .began else {
gesture.setTranslation(CGPoint.zero, in: self.view)
return
}
// 드래그 시작 후 기준좌표계에서 이동 거리
let movingPoint: CGPoint = gesture.translation(in: self.view)
if gesture.state == .ended {
// 애니메이션 듀레이션
let panMomentDuration: TimeInterval = 0.15
// 시작속도 v0
let velocity_v0 = gesture.velocity(in: self.view)
// 듀레이션 t1
let duration_t1 = CGFloat(panMomentDuration)
// 관성이동거리
let momentDistance = velocity_v0.scaling(duration_t1/2.0)
// 최종 변경된 위치
let endCenter = self.playerContainerView.center
.adding(distance: movingPoint)
.adding(distance: momentDistance)
UIView.animate(withDuration: panMomentDuration,
delay: 0.0,
options: [.beginFromCurrentState,
.curveEaseOut],
animations: {
self.playerContainerView.transform = .identity
self.playerContainerView.center = endCenter
},
completion: nil)
} else {
let movingTransform = CGAffineTransform(translationX: movingPoint.x,
y: movingPoint.y)
self.playerContainerView.transform = movingTransform
}
}
'낙농일기' 카테고리의 다른 글
선진문물 공동작업(WWDC LAB) 참여 지원 좀 해주세요. (0) | 2018.04.05 |
---|---|
UIViewController - presentedViewController vs presentingViewController (0) | 2018.04.02 |
QA과정(SDK->앱->빌드->QA->기획) 사과 농사꾼에게 일이 몰리다. (0) | 2018.01.25 |
새로운 신형 농기계를 수령하다. (2) | 2018.01.09 |
친구를 만드는 간단한 방법. (0) | 2018.01.04 |