Как рассчитать координатную точку x, y (внутренней окружности) между двумя точками на окружности окружности? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть две точки на окружности (x1, y1, x2, y2). Я хочу найти середину точек, но с меньшим радиусом круга. как показано в pi c, необходимо вычислить точки X0 и Y0. и этот процесс может быть повторяющимся, иногда переходя во внутренний круг. enter image description here

я использовал этот пример из потока stackoverflow для вычисления точек X1, Y1 и X2, Y2.

drawPoint(r, currentPoint, totalPoints) {  
    var startPt = {'x':-1,'y':-1,'a':0}
    var theta = ((Math.PI*2) / totalPoints);
    var angle = (theta * currentPoint);
    startPt.a = angle
    startPt.x = (r * Math.cos(angle));
    startPt.y = (r * Math.sin(angle));

    return startPt;
}

Теперь мне нужно было найти точки воображаемого круга X0, Y0. Я рассчитал угол на окружности, используя углы из точек X1 и X2 и применив известный радиус меньшего круга, я попытался получить точки внутреннего круга (мнимые) X0, Y0.

getNewEnd(endPt,angle,newSmallRadius){
    endPt.x = (newSmallRadius * Math.cos(angle));
    endPt.y = (newSmallRadius * Math.sin(angle));
}

ОБНОВЛЕНИЕ Найдена проблема. проблема заключалась в предоставлении радиуса, спасибо за ответ.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Возможно, вам нужен следующий подход:

midX = (x1 + x2) / 2
midY = (y1 + y2) / 2
len = sqrt(midX*midX + midY*midY)
x0 = r * midX / len
y0 = r * midY / len

Теперь (x0,y0) лежит в биссектрисе старых точек на расстоянии r от начала координат

0 голосов
/ 03 апреля 2020

В данном случае внутренний круг:
x0 = x1 + x2 / 2
y0 = y1 + y2 / 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...