@bokeh/bokehjs
Version:
Interactive, novel data visualization
32 lines • 1.19 kB
JavaScript
import { CoordinateTransform } from "../expressions/coordinate_transform";
import { Direction } from "../../core/enums";
import * as p from "../../core/properties";
export class PolarTransform extends CoordinateTransform {
static __name__ = "PolarTransform";
constructor(attrs) {
super(attrs);
}
static {
this.define(({}) => ({
radius: [p.DistanceSpec, { field: "radius" }],
angle: [p.AngleSpec, { field: "angle" }],
direction: [Direction, "anticlock"],
}));
}
_v_compute(source) {
const radius = this.properties.radius.uniform(source);
const angle = this.properties.angle.uniform(source);
const coeff = this.direction == "anticlock" ? -1 : 1;
const n = Math.min(radius.length, angle.length);
const x = new Float64Array(n);
const y = new Float64Array(n);
for (let i = 0; i < n; i++) {
const radius_i = radius.get(i);
const angle_i = angle.get(i) * coeff;
x[i] = radius_i * Math.cos(angle_i);
y[i] = radius_i * Math.sin(angle_i);
}
return { x, y };
}
}
//# sourceMappingURL=polar.js.map