Как повернуть штангу через точку начала? D3.js вращать точки прямой балки в центр круга
Я хочу, чтобы повернуть зеленый прямоугольника бар, чтобы указать на центр круга, как это сделать.
Код ниже как я рисую прямоугольник.
downNode = downNode
.data(_nodes)
.attr("id", function (d, i) {
return "nodeDown" + d.dbId;
})
.enter()
.append("rect")
.attr("class", "node").attr("class","downExpressed")
.attr("x", function (d) {
return Math.sin(Math.PI - (Math.max(0, Math.min(2 * Math.PI, x(d.dx)))+ Math.max(0, Math.min(2* Math.PI, x(d.dx + d.d_dx))))/2) * Math.max(0, y(d.dy+ d.d_dy)); })
.attr("height", function (d) {
var thea = Math.max(0, Math.min(2 * Math.PI, x(d.dx + d.d_dx))) - Math.max(0, Math.min(2 * Math.PI, x(d.dx)));
var r = Math.max(0, y(d.dy));
return Math.min(r * thea, Math.floor(_this.maxLevel));})
.attr("y", function (d) {
return Math.cos(Math.PI - (Math.max(0, Math.min(2 * Math.PI, x(d.dx)))+ Math.max(0, Math.min(2 * Math.PI, x(d.dx + d.d_dx))))/2) * Math.max(0, y(d.dy+ d.d_dy));})
.attr("width", function (d) {
return 1/2*Math.floor((d.expression.downs.length)/DownMax * (Math.max(0, y(d.dy + d.d_dy)) - Math.max(0, y(d.dy))));
})
Сначала я вычислить угол и г, а затем получить й позицию через г сов (Теа) у позиции г Sin (Теа);
но результат не указывает на центр, мне нужно повернуть его в исходную точку прямоугольника.
Любое предложение, спасибо.
Вы настраиваете X, Y, ширина, высота атрибуты, должны не вы, скорее, установив 'rotate' [трансформируют] (https: // developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform)? – Mark
Спасибо, внутренний красный использует функцию поворота, зеленый бар нужно надеть на внешнее кольцо, поэтому я рассчитываю его и не использую вращение. Наконец, я использую сложную гистограмму, вместо того, чтобы вставлять наружное кольцо и внутреннее кольцо – yongnan