Возвращение местоположения в окружности круга - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь сделать аппроксимацию окружности, которая представляет собой правильный многоугольник с N углами, используя d3.js.

Моя идея состояла в том, чтобы всегда иметь круг на заднем плане и использовать функцию «трансформировать», чтобы перемещаться вокругкруг и получить позицию (х, у), которую я бы перешел к многоугольнику.

Например, если бы я должен был разделить круг на 3 части, он стал бы треугольником.При этом я бы 3 раза вращался внутри круга, начиная с (0,0), и возвращал бы положение двух других точек на окружности окружности.

Моя проблема в том, что функция "преобразования" выполняетне верните мне топор, координату у.

var svg = d3.select('svg');
var originX = 200;
var originY = 200;
var outerCircleRadius = 60;


var outerCircle = svg.append("circle").attr({
    cx: originX,
    cy: originY,
    r: outerCircleRadius,
    fill: "none",
    stroke: "black"
});

var chairOriginX = originX + ((outerCircleRadius) * Math.sin(0));
var chairOriginY = originY - ((outerCircleRadius) * Math.cos(0));

var chairWidth = 20;

console.log(chairOriginX);
console.log(chairOriginY);

var chair = svg.append("rect").attr({
    x: chairOriginX - (chairWidth / 2),
    y: chairOriginY - (chairWidth / 2),
    width: chairWidth,
    opacity: 1,
    height: 20,
    fill: "none",
    stroke: "blue"
});


var chairOriginX2 = originX + ((outerCircleRadius) * Math.sin(0));
var chairOriginY2 = originY - ((outerCircleRadius) * Math.cos(0));
console.log(chairOriginX2);
console.log(chairOriginY2);


var chair2 = svg.append("rect").attr({
    x: chairOriginX2 - (chairWidth / 2),
    y: chairOriginY2 - (chairWidth / 2),
    width: chairWidth,
    opacity: 1,
    height: 50,
    fill: "none",
    stroke: "red"
});

var n_number = 5
var n_angles = 360/n_number
var angle_start=0;
var angle_next;

chair2.attr("transform", "rotate(" + (angle_start+n_angles+n_angles) + ", 200, 200)");
console.log(chair2.attr("transform", "rotate(" + (angle_start+n_angles+n_angles) + ", 200, 200)"));



var chairOriginX3 = originX + ((outerCircleRadius) * Math.sin(0));
var chairOriginY3 = originY - ((outerCircleRadius) * Math.cos(0));
console.log(chairOriginX3);
console.log(chairOriginY3);

var chair3 = svg.append("rect").attr({
    x: chairOriginX3 - (chairWidth / 2),
    y: chairOriginY3 - (chairWidth / 2),
    width: chairWidth,
    opacity: 1,
    height: 50,
    fill: "none",
    stroke: "black"
});

var n_number = 5
var n_angles = 360/n_number
var angle_start=0;
var angle_next;

chair3.attr("transform", "rotate(" + (angle_start+n_angles+n_angles+n_angles) + ", 200, 200)");
console.log(chair3.attr("transform", "rotate(" + (angle_start+n_angles+n_angles+n_angles) + ", 200, 200)"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...