Вращение точки на окружности с известным радиусом и положением

Наличие круга А ( Икс а , у а ) радиуса р и точка на окружности Б ( Икс б , у б ) , как мы можем повернуть точку на известный угол α (радианы или градусы, это не имеет большого значения) на окружности, поэтому мы получим новую точку на окружности С ( Икс с , у с ) , как на картинке ниже?

Как рассчитать С координаты?

Здесь угол поворота 90 . В этом примере Икс б "=" Икс а , у б "=" р , α "=" 90 . Из изображения мы видим, что Икс с "=" р и у с "=" у а .

Тем не менее, я хочу общее решение для любого А , Б , р и α .

Вы знакомы с матрицей вращения? Смена происхождения?
@Shailesh Я что-то видел в Википедии, но не очень понял. Кажется, я знаю, что означает изменение происхождения.
В любом случае Брент дал полный ответ. Я пытался привести тебя к этому.

Ответы (2)

Давайте рассмотрим более простую задачу. Предположим, у вас есть ситуация, изображенная на рисунке ниже:

введите описание изображения здесь

Тогда, учитывая угол α , координаты точки С являются:

С Икс "=" р потому что α и С у "=" р грех α

где р это радиус окружности.

Теперь давайте рассмотрим немного более сложную задачу, изображенную ниже:

введите описание изображения здесь

Это очень похоже на ситуацию выше. Фактически,

С Икс "=" р потому что ( α + β ) и С у "=" р грех ( α + β )

Используя тригонометрические соотношения грех ( α + β ) "=" грех α потому что β + грех β потому что α и потому что ( α + β ) "=" потому что α потому что β грех α грех β , мы можем записать вышеизложенное следующим образом:

С Икс "=" р потому что α потому что β р грех α грех β и С у "=" р грех α потому что β + р грех β потому что α

Но подождите... Взглянув на предыдущую ситуацию и заменив С с Б и α с β , Мы видим, что

Б Икс "=" р потому что β и Б у "=" р грех β

Следовательно, мы можем написать

С Икс "=" Б Икс потому что α Б у грех α и С у "=" Б Икс грех α + Б у потому что α

Но вместо этого вы хотите следующее:

введите описание изображения здесь

Ну, мы можем просто двигать все жестко по вектору О А так что А теперь является началом системы координат, и мы получаем ситуацию чуть выше. Это равносильно вычитанию А от обоих Б и С получить Б и С выше, и мы находим

С Икс А Икс "=" ( Б Икс А Икс ) потому что α ( Б у А у ) грех α
С у А у "=" ( Б Икс А Икс ) грех α + ( Б у А у ) потому что α

Затем, наконец,

С Икс "=" А Икс + ( Б Икс А Икс ) потому что α ( Б у А у ) грех α
С у "=" А у + ( Б Икс А Икс ) грех α + ( Б у А у ) потому что α

Это тоже полезно, но я не понимаю там радиус р исчезли в окончательном решении. Там тоже не должно быть?
Это! Он спрятан в координатах А и Б . Например, Б Икс А Икс "=" р потому что β .
Хороший! Проголосовал за вас!
Спасибо. Жаль, что я слишком долго делал фотографии. Я надеялся, что мой ответ будет принят, но Брент меня опередил. ржу не могу
О, последнее: мой ракурс α является минусом вашего, так как у меня есть местонахождение Б и С обменялись по отношению к вашей фотографии.
Принял ваш ответ, так как он более подробный. Жаль, что SE не позволяет принимать несколько ответов. :)
Очень жаль. Спасибо!
Какой смысл усложнять пример до α и β, а потом составлять формулы вместо использования уже работающих р ( с о с α ) , р ( с я н β ) ?

Это называется аффинным преобразованием. По сути, идея состоит в том, чтобы временно сместить нашу окружность так, чтобы она была сосредоточена вокруг начала координат, применить матрицу вращения к точке, как это делается в линейной алгебре, а затем сместить ее обратно. Используя обозначение, которое у вас есть в вашей задаче, а также добавив

М "=" ( потому что ( α ) грех ( α ) грех ( α ) потому что ( α ) )
Для представления поворота против часовой стрелки на угол α (если вы хотите по часовой стрелке, как показано на картинке, просто поменяйте местами грех ( α ) с грех ( α ) ), это преобразование определяется выражением:
С "=" М ( Б А ) + А
где А , Б , С являются векторами, представляющими их соответствующие точки.

где A,B,C — векторы, представляющие соответствующие точки. -- как построить эти векторы? Кроме того, как умножить М ( Б А ) ?
Например, на вашей картинке есть А как точка ( Икс а , у а ) , так что это будет вектор ( Икс а у а ) . Умножение М ( Б А ) делается с помощью матричного умножения: en.wikipedia.org/wiki/…
Ах, звучит хорошо! Фактически, это умножение двух матриц. Большое спасибо!