const h = 200
const k = 450
const r = 100
* simple helper function to draw a circle
* @param {number} h horizontal center of the circle
* @param {number} k vertical center of the circle
* @return {Actions[]} list of actions for touchAction command
*/
export function circleAction (h, k) {
let theta = 0
let prev = { action: 'press', x: h + r * Math.cos(theta), y: k + r * Math.sin(theta) }
const actions = []
actions.push(prev)
for (; theta < 2*Math.PI; theta+=2*Math.PI/36) {
const next = { x: h + r * Math.cos(theta), y: k + r * Math.sin(theta) }
actions.push({ action: 'moveTo', x: next.x - prev.x, y: next.y - prev.y })
prev = next
}
actions.push('release')
return actions
}
* helper function to draw an arc
* @param {number} start start point
* @param {number} end end point
* @return {Actions[]} list of action for touchAction command
*/
export function arcAction(start, end) {
let theta = start
let prev = { action: 'press', x: h + r * Math.cos(theta), y: k + r * Math.sin(theta) }
const actions = []
actions.push(prev)
for (; theta < end; theta += 2 * Math.PI / 100) {
const next = { x: h + r * Math.cos(theta), y: k + r * Math.sin(theta) }
actions.push({ action: 'moveTo', x: next.x - prev.x, y: next.y - prev.y })
prev = next
}
actions.push('release')
return actions
}
* helper function to draw an curved arc
* @param {number} start start point
* @param {number} end end point
* @return {Actions[]} list of action for touchAction command
*/
export function innerArcAction(start, end) {
let theta = start
const step = 4 * Math.PI / 100
let prev = { action: 'press', x: h - r * Math.cos(theta), y: k + r * Math.sin(theta) }
const actions = []
actions.push(prev)
for (; theta < end; theta += step) {
const rad = 7.5991 * Math.pow(theta - start - Math.PI, 2) + 25
const next = { x: h - rad * Math.cos(theta), y: k + rad * Math.sin(theta) }
actions.push({ action: 'moveTo', x: next.x - prev.x, y: next.y - prev.y })
prev = next
}
actions.push('release')
return actions
}