@toast-ui/chart
Version:
TOAST UI Application: Chart
36 lines (35 loc) • 977 B
JavaScript
const RAD = Math.PI / 180;
const ANGLE_90 = 90;
export const ANGLE_CANDIDATES = [0, 25, 45, 65, 85, 90];
/**
* Calculate adjacent.
*
* H : Hypotenuse
* A : Adjacent
* O : Opposite
* D : Degree
*
* /|
* / |
* H / | O
* / |
* /\ D |
* -----
* A
*/
function calculateAdjacent(degree, hypotenuse) {
return Math.cos(degree * RAD) * hypotenuse;
}
function calculateOpposite(degree, hypotenuse) {
return Math.sin(degree * RAD) * hypotenuse;
}
export function calculateRotatedWidth(degree, width, height) {
const centerHalf = calculateAdjacent(degree, width / 2);
const sideHalf = calculateAdjacent(ANGLE_90 - degree, height / 2);
return (centerHalf + sideHalf) * 2;
}
export function calculateRotatedHeight(degree, width, height) {
const centerHalf = calculateOpposite(degree, width / 2);
const sideHalf = calculateOpposite(ANGLE_90 - degree, height / 2);
return (centerHalf + sideHalf) * 2;
}