Расчет координат точек на окружности

В данном разделе представлен ряд калькуляторов для определения координат, числовые значения которые могут быть необходимы для создания управляющих программ для станков с числовым программным управлением (ЧПУ), а также для других технических и геометрических расчетов и вычислений.

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

Где i — номер точки, n — кол-во точек = 360, R — радиус, x[0] и y[0] — координаты центра окружности

Вот только таким способом вычисляются только эти четыре точки:

Как пройтись по всем 360-ти точкам?

2 ответа 2

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

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

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

Известно: радиус окружности, координаты центра окружности O(ox,xy) , координаты точки A(ax,ay) , координаты точки B(bx,by) . И вопросов сразу несколько, они на картинке. И если можно, подробнее, я очень глупый.

Ну, если Вы "очень глупый", то зачем Вам эти ответы? Чтобы заставить кого-то поверить, что Вы "довольно умный"? Это Вы пришли к этому мнению после того, как решили доказать кому то, что Вы остроумный чтоль?)

И да! я хочу доказать себе, что пойму, если мне грамотно обьяснить! Так как обьяснили, за что Всем кто не умничает, а помогает, огромное Спасибо!

задан 9 Сен ’13 22:59

shatal
12 ● 2 ● 7 ● 24
100&#037 принятых

Ну, если Вы "очень глупый", то зачем Вам эти ответы? Чтобы заставить кого-то поверить, что Вы "довольно умный"?

3 ответа

Чтобы ответить на поставленные вопросы, достаточно перейти к полярным координатам, разместив полюс в центре окружности $%O(x_0, y_0)$%: $$egin x=x_0+rcos<varphi>, \ y=y_0+rsin<varphi>. end$$ Тогда для точки $%A(x_A, y_A)$% имеем $$egin x_A=x_0+rcos<varphi_A>, \ y_A=y_0+rsin<varphi_A>, end $$ откуда $$egin cos<varphi_A>=frac,\ sin<varphi_A>=frac end$$ и находим $%varphi_A.$% Точно так же находим $%varphi_B.$% Длина дуги $%AB$% будет равна $%|varphi_B-varphi_A|cdot.$% Чтобы разделить эту дугу на четыре равные части, достаточно вспомнить, что равным центральным углам соответствуют дуги одинаковой длины.

Читайте также  При звонке тишина в трубке

отвечен 10 Сен ’13 0:19

Мне кажется, этот способ несколько хуже, потому что он требует многих приближённых операций с неизбежными ошибками округления. Если бы речь шла о делении дуги на, скажем, 7 частей, но это было бы естественно, но когда делить приходится на две части, то там из "иррациональных" операций достаточно извлечения квадратных корней.

@falcao, тригонометрия позволяет находить синусы и косинусы половинных углов. при этом тоже используется не более чем вычисление квадратного корня .

@all_exist: всё зависит от того, какие формулы полагается использовать. Если сначала находится синус или косинус, потом угол, потом половина угла, а потом синус или косинус половинного угла, то здесь могут быть потери при округлениях.

Координаты векторов $%vec$% и $%vec$% находятся при помощи вычитания: из координат конца вектора вычитаются координаты его начала. Например, если $%O(3;2)$% и $%A(5,1)$%, то первый вектор будет иметь координаты $%(2;-1)$%.

Зная координаты вектора, можно найти квадрат его длины как сумму квадратов координат. Для предыдущего примера получится $%2^2+(-1)^2=5$%. Извлекая квадратный корень, находим длину вектора (в примере это даёт $%sqrt<5>$%). Это радиус окружности $%r$%.

Для того, чтобы разделить дугу на 4 равные части, достаточно научиться делить её на 2 равные части. Тогда сначала находим координаты точки $%E_1$%, а далее, зная их, по той же процедуре делим на равные части дуги $%AE_1$% и $%E_1B$%, выявляя точки $%E_0$%, $%E_2$%.

Сначала находим сумму векторов $%vec$% и $%vec$% покоординатным сложением. Этот вектор будет иметь то же направление, что и $%vec$%. Далее его надо будет поделить на свою длину, получая единичный вектор того же направления, а затем умножить на $%r$% — радиус окружности, найденный ранее. То есть всё сводится к нахождению длины вектора $%vec+vec$%. Делается это так же, как и раньше: координаты вектора найдены; их сумма квадратов есть квадрат длины вектора. Осталось извлечь квадратный корень.

Читайте также  Проверить долги на сайте налоговой

Теперь о длине дуги: она равна $%ralpha$%, где $%alpha$% — угол между векторами. Радиус мы знаем, и остаётся найти угол. Сначала находим его косинус: это будет отношение скалярного произведения векторов к произведению их длин. Длины нам известны, и обе они равны $%r$%. Скалярное произведение есть сумма произведений координат. Например, у векторов с координатами $%(4;-1)$% и $%(3;7)$% скалярное произведение равно $%4cdot3+(-1)cdot7=5$%. Поделив его на произведение длин векторов, находим $%cosalpha$%. Тогда сам угол будет равен арккосинусу полученного числа.

отвечен 9 Сен ’13 23:55

falcao
243k ● 1 ● 34 ● 48

@falcao, надо ещё оговорить случай, в котором делят дугу, опирающуюся на угол больше развёрнутого.

@all_exist: я не забыл про этот случай, но на рисунке была указана именно та дуга, которая определяется векторами, а не просто радиусами. И если действовать через координаты векторов, как это здесь и предлагается, то дуга автоматически оказывается той, какая нужна.

@falcao, Ну, картинка весьма условная.

то дуга автоматически оказывается той, какая нужна. — Например, окружность с центром в начале координат и точки $%A, B$%, расположенные в третьей и четвёртой четвертях. Дуга интересует верхняя, а сумма векторов пойдёт вниз.

@all_exist: то, что дуг в общем случае две, это понятно. Но здесь условие дано на рисунке. И я так понял, что имеется в виду наименьшая из дуг, потому что на другом из аналогичных рисунков того же автора были проведены касательные, и там обозначения были использованы те же самые. То есть изначально я хотел учесть случай второй дуги, а потом не стал этого делать по указанной причине. Сумма векторов там автоматически указывает нужное направление.

Читайте также  Почему не работают медиа запросы css

@falcao, Если условие брать с рисунка, то имеем, что $$a_x+b_x=2o_x,; a_y = b_y,; E_<1x>=o_x$$ ну, и так далее.

@all_exist: хочу ещё раз объяснить, чем я руководствовался. Вот предыдущий вопрос от того же автора здесь. Судя по общим обозначениям, это та же ситуация. Наличие касательных и точки $%C$% указывает на меньшую дугу.

Ну, созрел ещё тогда такой вариант.

Рассмотрим комплексную плоскость, в которой точка $%z=0$% совпадает с центром окружности, а действительная и мнимая оси параллельны осям $%Ox$% и $%Oy$%. Тогда точки $%A, ; B$% будут соответствовать числам $%z=a_A+b_Acdot i$% и $%w=a_B+b_Bcdot i$%.

Нетрудно показать, что середина дуги — точка $%E_1$%, будет соответствовать числу $%sqrt$%, причём квадратный корень легко вычисляется в алгебраической форме (можно формулу выписать в общем виде). а ветвь корня выбирается в соответствии с заданной дугой. Затем аналогично делим дуги $%AE_1$% и $%E_1B$% пополам, находя точки $%E_0,; E_2$%.

отвечен 10 Сен ’13 13:03

Здравствуйте

Математика — это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Ссылка на основную публикацию
Adblock
detector