plotly.js
Version:
The open source javascript graphing library that powers plotly
76 lines (60 loc) • 1.87 kB
JavaScript
// Wrapper functions to handle paper-referenced shapes, which have no axis
function d2l(v, axis) {
return axis ? axis.d2l(v) : v;
}
function l2d(v, axis) {
return axis ? axis.l2d(v) : v;
}
function x0Fn(shape) { return shape.x0; }
function x1Fn(shape) { return shape.x1; }
function y0Fn(shape) { return shape.y0; }
function y1Fn(shape) { return shape.y1; }
function x0shiftFn(shape) { return shape.x0shift || 0; }
function x1shiftFn(shape) { return shape.x1shift || 0; }
function y0shiftFn(shape) { return shape.y0shift || 0; }
function y1shiftFn(shape) { return shape.y1shift || 0; }
function dxFn(shape, xa) {
return d2l(shape.x1, xa) + x1shiftFn(shape) - d2l(shape.x0, xa) - x0shiftFn(shape);
}
function dyFn(shape, xa, ya) {
return d2l(shape.y1, ya) + y1shiftFn(shape) - d2l(shape.y0, ya) - y0shiftFn(shape);
}
function widthFn(shape, xa) {
return Math.abs(dxFn(shape, xa));
}
function heightFn(shape, xa, ya) {
return Math.abs(dyFn(shape, xa, ya));
}
function lengthFn(shape, xa, ya) {
return (shape.type !== 'line') ? undefined :
Math.sqrt(
Math.pow(dxFn(shape, xa), 2) +
Math.pow(dyFn(shape, xa, ya), 2)
);
}
function xcenterFn(shape, xa) {
return l2d((d2l(shape.x1, xa) + x1shiftFn(shape) + d2l(shape.x0, xa) + x0shiftFn(shape)) / 2, xa);
}
function ycenterFn(shape, xa, ya) {
return l2d((d2l(shape.y1, ya) + y1shiftFn(shape) + d2l(shape.y0, ya) + y0shiftFn(shape)) / 2, ya);
}
function slopeFn(shape, xa, ya) {
return (shape.type !== 'line') ? undefined : (
dyFn(shape, xa, ya) / dxFn(shape, xa)
);
}
module.exports = {
x0: x0Fn,
x1: x1Fn,
y0: y0Fn,
y1: y1Fn,
slope: slopeFn,
dx: dxFn,
dy: dyFn,
width: widthFn,
height: heightFn,
length: lengthFn,
xcenter: xcenterFn,
ycenter: ycenterFn,
};
;