Как найти координаты окружности
Перейти к содержимому

Как найти координаты окружности

  • автор:

Как вычислить координаты всех точек лежащих на окружности

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

Предположим мне нужны координаты 360 точек на окружности, по одной на каждый градус поворота Есть предположение:

int x = (int)Math.Cos(2 * Math.PI * i / n) * R + x[0]; int y = (int)Math.Sin(2 * Math.PI * i / n) * R + y[0]; 

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

Где i — номер точки, n — кол-во точек = 360, R — радиус, x[0] и y[0] — координаты центра окружности Вот только таким способом вычисляются только эти четыре точки: Как пройтись по всем 360-ти точкам?

Отслеживать
задан 5 мая 2016 в 16:36
zaki hatfild zaki hatfild
403 5 5 серебряных знаков 16 16 бронзовых знаков

вы сами кастуете в int, он не может принимать значения с плавающей запятой (а именно они вам и нужны).

5 мая 2016 в 17:11
работает, спасибо. час просидел, как обычно в общем
5 мая 2016 в 17:12
@zakihatfild, вы бы приложили ответ, вдруг кто не поймёт )
5 мая 2016 в 19:20

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

int x = (int)Math.Cos(2 * Math.PI * i / n) * R + x[0]; int y = (int)Math.Sin(2 * Math.PI * i / n) * R + y[0]; 

Я предполагаю, что нужны именно целочисленные координаты. В таком случае следует выполнять округление после умножения на радиус.

int x = (int)(Math.Cos(2 * Math.PI * i / n) * R + 0.5) + x0; int y = (int)(Math.Sin(2 * Math.PI * i / n) * R + 0.5) + y0; 

Это по-прежнему не гарантирует, что получатся все 360 точек, но теперь их не всегда будет 4.

4 of 360 when radius is 1 76 of 360 when radius is 10 140 of 360 when radius is 20 268 of 360 when radius is 40 356 of 360 when radius is 80 360 of 360 when radius is 90 360 of 360 when radius is 100 

Если же целочисленные координаты не требуются, то вместо int следует использовать double:

double x = Math.Cos(2 * Math.PI * i / n) * R + x0; double y = Math.Sin(2 * Math.PI * i / n) * R + y0; 

Как найти координаты точек на дуге зная координаты точек хорды?

5ee5c9cf391dd645565503.jpeg

Добрый день друзья!
Помогите решить такую задачу. Есть координаты точек отрезка АВ, через который проходит окружность, то есть по сути это координаты хорды. Знаем также радиус окружности R. Как найти координаты промежуточных точек на дуге, которые делят дугу на 1/4, 1/2 и 3/4?
Заранее спасибо!

  • Вопрос задан более трёх лет назад
  • 2888 просмотров

Комментировать
Решения вопроса 1
Программист на «си с крестами» и не только

По теореме Пифагора находим расстояние от центра до хорды: d = sqrt(R² − [(x2−x1)² + (y2−y1)²]/4).
Находим середину отрезка AB (назовём её (x3, y3)). Находим направляющий вектор отрезка AB (x4,y4) = ((x2−x1)/|AB|, (y2−y1)/|AB|), и есть два варианта центра — (x0,y0) = (x3±d·y4, y3∓d·x4).
А дальше через atan2 получаем углы, упорядочиваем их и через углы получаем сколько угодно точек.

Ответ написан более трёх лет назад
Нравится 3 11 комментариев

AlexReal

Александр Макаров @AlexReal Автор вопроса

Добрый день, спасибо за ответ.
Допустим, есть точки А(15,5), В(190,40) и радиус 300.
Тогда d = sqrt(300^2 — (190 — 15)^2 — (40 — 5)^2) = 241
Середина отрезка (x3, y3) = ((190 — 15)/2, (40 — 5)/2) = (87.5, 17.5)
|AB| = sqrt((190 — 15)^2 + (40 — 5)^2) = 178.5
Тогда направляющий вектор (x4, y4) = ((190 — 15)/178.5, (40 — 5)/178.5) = (0.98, 0.2)
Возьмем один вариант центра (x0, y0) = (87.5 + 241 * 0.2, 17.5 — 241 * 0.98) = (135.7, -218.7)

А что дальше, не понимаю. Подскажите плиз.

Александр Макаров, Я тут ошибся слегка, и d = sqrt(300^2 − [(190 − 15)^2 + (40 − 5)^2] / 4) ≈ 286,4.
Если надо считать на бумаге, а не на компе — то средняя точка (x0∓R·y4, y0±R·x4).
А дальше уже считайте биссектрисы.

AlexReal

Александр Макаров @AlexReal Автор вопроса
Mercury13, Можете дорешать уже эту задачу, чтобы я понял принцип?
Александр Макаров, Под бумагу считать или под компьютер?

AlexReal

Александр Макаров @AlexReal Автор вопроса
Mercury13, Под компьютер. Спасибо.

Итак, я уже записал, что d ≈ 286,4.
Середина отрезка (x3, y3) = ((190 + 15)/2, (40 + 5)/2) = (102,5, 22,5)
|AB| = sqrt((190 − 15)² + (40 − 5)²) = 178,5

КОНТРОЛЬ: 286,4² + 178,5²/4 = 300,0

(x4, y4) = (0,980, 0,196).
(x0, y0) = (102,5 + 286,4·0,196; 22,5 − 286,4·0,980) = (158,7, −258,1)

КОНТРОЛЬ: расстояние между точками:
(15 − 158,7)² + (5 + 258,1)² ≈ 299,8²
(190 − 158,7)² + (40 + 258,1)² ≈ 299,7²

Поскольку мы пошли вправо (в распространённой в математике правой системе координат; в компьютерах чаще используют левую) от вектора AB и нам нужна меньшая из двух дуг, в порядке увеличения полярного угла будет сначала B, потом A. (Пошли бы влево — было бы наоборот.) Радиус-векторы:
OB = (190 − 158,7; 40 + 258,1) = (31,3; 298,1)
OA = (15 − 158,7; 5 + 258,1) = (−143,7; 263,1)
atan2 соответствующих векторов: 84,0° и 118,6°. (Простите, считаю на эмуляторе МК-61, так что пусть будет в градусах.) Никакого упорядочивания не требуется. Разница 34,6°.
Промежуточные углы: 92,65°; 101,3°; 109,95°.

Возьмём, например, первую точку:
(158,7 + 300·cos 92,65°; −258,1 + 300·sin 92,65°) = (144,8, 41,6).

КОНТРОЛЬ: расстояние между точками:
(144,8 − 158,7)² + (41,6 + 258,1)² ≈ 300,0²

Дальше, думаю, понятно?

Как упорядочивать углы: если один угол, например, 150°, а второй −120°, добавляем к одному 360°, и получаем 150° и 240°.

atan2 — функция от двух переменных, определённая для всех ненулевых векторов (x, y) и дающая угол вектора в диапазоне ±180°. Обычно представляет собой сшивку арктангенсов и арккотангенсов.

Контроль — хорошая штука. Понадеялся на ваши расчёты — не сошёлся контроль. А у вас середина отрезка неправильная.

Как найти координаты точки на окружности, зная радиус и угол прямой к точке из окружности?

Угол задаётся в градусах, координаты нужно получить в полярной системе.
Нужно чтобы для всех 360 градусов работало.
У меня почему-то получается точки в 300 и 60 градусах на одном и том же месте располагаются.

Дополнен 13 лет назад
*угол прямой к точке из центра окружности
Лучший ответ

y = R*sin(угол)
x = R*cos(угол)
а точки так разполагаются потому как в окружности всего = 360 градусов 🙂
то есть это одна и та же точка 🙂

МихаилОракул (50492) 13 лет назад
О, спасибо, другое дело )
Остальные ответы
Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Как найти координаты окружности

Нравится ресурс?

правила раздела Алгоритмы

1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code. /code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии «срочно надо», заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке

Модераторы: Akina, shadeofgray

‘> Координаты точки на окружности , Определение координат точки на окружности при известных координатах центра, радиусе и угле поворота

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему

Сообщ. #1 , 07.05.10, 19:29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *