2 * Copyright (C) 2012, 2013 Canonical, Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 property real amplitude: 0
22 property int totalCount
23 property int ballIndex
25 var t = amplitude / 0.6
27 return units.gu(0.25) + units.gu(5) * t
29 visible: amplitude != 0
35 // TODO This formula has hardocded values everywhere :D
37 var dampenAfterThisIndex = 7
38 if (ballIndex < dampenAfterThisIndex) {
39 t = (totalCount - ballIndex) / totalCount
40 return Math.pow(t, 4);
42 t = (totalCount - dampenAfterThisIndex) / totalCount
45 return 0.09 + t * (totalCount - ballIndex) / (totalCount - dampenAfterThisIndex)
49 property double orbitRadius: ((parent.width - units.gu(6)) / 2)
50 x: -(width / 2) + (parent.width / 2) + orbitRadius * Math.sin((ballIndex / totalCount) * (2 * Math.PI))
51 y: -(height / 2) + (parent.height / 2) - orbitRadius * Math.cos((ballIndex / totalCount) * (2 * Math.PI))