Bolic Опубликовано 11 января, 2005 Жалоба Share Опубликовано 11 января, 2005 Есть радиус окружности, координаты центра окружности, и координаты 2_ух точек, лежащих на окружности Вопрос: как найти путь из одной точки в другую?(или по другому "длину дуги", соединяющие эти две точки Ссылка на комментарий Поделиться на другие сайты More sharing options...
Blood Sin Опубликовано 11 января, 2005 Жалоба Share Опубликовано 11 января, 2005 Какая знакомая задача Если вспомню - напишу. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Smile Опубликовано 11 января, 2005 Жалоба Share Опубликовано 11 января, 2005 ееее я не помню формул и ручки под рукой нет вывести=))) ну, блин, посчитай угол треугольника с вершиной, которая в радиусе, опирающийся на точки (координаты же есть=))), сектор короче =)) ну, а дальше угол/360 и умножить на длину окружности епть, все формулы забыл, нахрен а че в учебниках уже такое не пишут? =)))) гыыы, я знающий программер =)) лол =))) Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grimm Опубликовано 11 января, 2005 Жалоба Share Опубликовано 11 января, 2005 Bolic открой учебник по геометрии за 9 или 10 класс Ссылка на комментарий Поделиться на другие сайты More sharing options...
Bolic Опубликовано 12 января, 2005 Автор Жалоба Share Опубликовано 12 января, 2005 Grimm> Открывал. Нету. И по алгебре тоже открывал. Нету. Может привидешь формулу из своего учебника? Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grigory Опубликовано 12 января, 2005 Жалоба Share Опубликовано 12 января, 2005 Ну, блин, несколько треугольников + несколько формул по геометрии 9-11 классов, включая, возможно, теорему Пифагора. Задача десткая. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Bolic Опубликовано 12 января, 2005 Автор Жалоба Share Опубликовано 12 января, 2005 Ну если она детская , кто-нибудь, привидите формулу!!! Ссылка на комментарий Поделиться на другие сайты More sharing options...
Greench Опубликовано 12 января, 2005 Жалоба Share Опубликовано 12 января, 2005 Bolic , на посмотри, может разберешься писал 10 лет назад - диплом защищал . Только смотри, это на MSX-C для Ymaha (были такие компьютеры в то время) Вычерчивание дуг (локальный графический объект arc () ) void circle(xc,yc,rad,fa,sa,stat) int xc,yc; /X координаты центра X/ int rad; /X величина радиуса X/ int fa,sa; /X начальный и конечный углы X/ bool stat; /X статус вывода дуги: = =true - дуга выводится, в противном случае - стирает-ся или не выводится совсем X/ Вычерчивание дуг вызывает наибольшие трудности, т.к. возможно исполь-зовать только целочисленную арифметику, что препятствует использованию функций sin() и cos() для вычисления координат точек попадающих в данную дугу. Эта проблема устраняется использованием готовой таблицы значений си-нуса, вычисленой для углов от 0* до 90° и умноженных на 256. Это позво-ляет сократить вычисления и упростить работу функций. Для нахождения синуса других углов, а также косинуса применяются формулы приведения. Таблица значений задана в масиве sindat (см. приложение В.). Характерной особенностью работы зтого графического Объекта является то, что начальный и конечный углы дуги задаются в градусах, что более удоб-но для пользователя. Для упрощения работы, углы ставятся в соответствие целым числам при помощи вспомогательной функции apseudoangleO. Эта функция вызывает, в свою очередь другую - pseudoangleO, вы¬числяющую длину части окружности, в ко-торую попадает вычерчиваемая дута. В функции arccalcO последовательно вы-числяются координаты начальной и конечной точек дуги. Затем вызывается вспомогательна фунция arcrclO, аналогичная функции _p_circle(). В ней, при помощи логической функции InArcO устанавливается, попадает ли точка с данными координатами в необходимую дугу окружности, и если это так, то точка рисуется. /X Рисование дуг X/ void arc(x0,y0,r,fa,sa,col) int x0,y0,r,fa,sa; bool col; register int x,y,del; y=360-fa; fa=360-sa; sa=y; CurR=r; FirstA=apseudoangle(fa); SecondA=apseudoangle(sa); CurX=x0; CurY=y0; y=r; del=3-2Xr; for (x=0; x<y;) { arcrcl(x,y,col); if (del<0) del+=4Xx+6; else { del+=4X(x-y)+10; У—; } x++; } x=y; if (y) arcrcl(x,y,col); } static void arcrcl(x,y,col) int x,y; bool col; { int xl,yl; for (xl=x; xl<x+l; ++xl) { arcpst(xl,y,col); arcpst(xl,-y,col); arcpst(-xl,y,col); arcpst(-xl,-y,col); } for (yl=y; yl<y+l; ++yl) { arcpst(yl,x,col); arcpst(yl,-x,col); arcpst(-yl,x,col); arcpst(-yl^-x,col); } } Ссылка на комментарий Поделиться на другие сайты More sharing options...
Bolic Опубликовано 12 января, 2005 Автор Жалоба Share Опубликовано 12 января, 2005 Greench Вот за это благодарен! Ссылка на комментарий Поделиться на другие сайты More sharing options...
ANGEL Опубликовано 12 января, 2005 Жалоба Share Опубликовано 12 января, 2005 Ссылка на комментарий Поделиться на другие сайты More sharing options...
Grimm Опубликовано 12 января, 2005 Жалоба Share Опубликовано 12 января, 2005 Bolic Может я ошибся, но все таки. Есть три точки с известными координатами (центр окружности, две точки на окружности) 1. Найти стороны треугольника с вершинами в этих точках (длина отрезка по координатам его концов). 2. Найти угол, с вершиной в центре окружности (три стороны известны, находим по теореме косинусов). 3. Градусная мера искомой дуги равна градусной мере угла, или 360 минус градусная мера угла, это, смотря, какая дуга нужна, меньшая или большая. 4. Длина окружности соответствует 360 градусам, длина искомой дуги соответствует N градусам из пункта 3. Соотношение найти не сложно. Ссылка на комментарий Поделиться на другие сайты More sharing options...
Bolic Опубликовано 13 января, 2005 Автор Жалоба Share Опубликовано 13 января, 2005 Grimm> Благодарю Ссылка на комментарий Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Заархивировано
Эта тема находится в архиве и закрыта для дальнейших ответов.