53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
export var CLOCK_WIDTH = 220;
|
|
export var CLOCK_HOUR_WIDTH = 36;
|
|
var clockCenter = {
|
|
x: CLOCK_WIDTH / 2,
|
|
y: CLOCK_WIDTH / 2
|
|
};
|
|
var baseClockPoint = {
|
|
x: clockCenter.x,
|
|
y: 0
|
|
};
|
|
var cx = baseClockPoint.x - clockCenter.x;
|
|
var cy = baseClockPoint.y - clockCenter.y;
|
|
var rad2deg = function rad2deg(rad) {
|
|
return rad * (180 / Math.PI);
|
|
};
|
|
var getAngleValue = function getAngleValue(step, offsetX, offsetY) {
|
|
var x = offsetX - clockCenter.x;
|
|
var y = offsetY - clockCenter.y;
|
|
var atan = Math.atan2(cx, cy) - Math.atan2(x, y);
|
|
var deg = rad2deg(atan);
|
|
deg = Math.round(deg / step) * step;
|
|
deg %= 360;
|
|
var value = Math.floor(deg / step) || 0;
|
|
var delta = Math.pow(x, 2) + Math.pow(y, 2);
|
|
var distance = Math.sqrt(delta);
|
|
return {
|
|
value: value,
|
|
distance: distance
|
|
};
|
|
};
|
|
export var getMinutes = function getMinutes(offsetX, offsetY) {
|
|
var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
var angleStep = step * 6;
|
|
var _getAngleValue = getAngleValue(angleStep, offsetX, offsetY),
|
|
value = _getAngleValue.value;
|
|
value = value * step % 60;
|
|
return value;
|
|
};
|
|
export var getHours = function getHours(offsetX, offsetY, ampm) {
|
|
var _getAngleValue2 = getAngleValue(30, offsetX, offsetY),
|
|
value = _getAngleValue2.value,
|
|
distance = _getAngleValue2.distance;
|
|
var hour = value || 12;
|
|
if (!ampm) {
|
|
if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {
|
|
hour += 12;
|
|
hour %= 24;
|
|
}
|
|
} else {
|
|
hour %= 12;
|
|
}
|
|
return hour;
|
|
}; |