Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

Bolic

Формула

Рекомендуемые сообщения

Есть радиус окружности, координаты центра окружности, и

координаты 2_ух точек, лежащих на окружности

Вопрос: как найти путь из одной точки в другую?(или по другому "длину дуги", соединяющие эти две точки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ееее

я не помню формул и ручки под рукой нет вывести=)))

ну, блин, посчитай угол треугольника с вершиной, которая в радиусе, опирающийся на точки (координаты же есть=))), сектор короче =))

ну, а дальше угол/360 и умножить на длину окружности

епть, все формулы забыл, нахрен

а че в учебниках уже такое не пишут? =))))

гыыы, я знающий программер =))

лол =)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bolic

открой учебник по геометрии за 9 или 10 класс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Grimm> Открывал. Нету. И по алгебре тоже открывал. Нету. Может привидешь формулу из своего учебника?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, блин, несколько треугольников + несколько формул по геометрии 9-11 классов, включая, возможно, теорему Пифагора. Задача десткая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если она детская , кто-нибудь, привидите формулу!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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);

}

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bolic

 

Может я ошибся, но все таки.

 

Есть три точки с известными координатами (центр окружности, две точки на окружности)

1. Найти стороны треугольника с вершинами в этих точках (длина отрезка по координатам его концов).

2. Найти угол, с вершиной в центре окружности (три стороны известны, находим по теореме косинусов).

3. Градусная мера искомой дуги равна градусной мере угла, или 360 минус градусная мера угла, это, смотря, какая дуга нужна, меньшая или большая.

4. Длина окружности соответствует 360 градусам, длина искомой дуги соответствует N градусам из пункта 3. Соотношение найти не сложно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты