Большой Воронежский Форум
» Программирование>Определение по координатам номера дорожки и номера сектора.
Eвгений 09:18 01.04.2009
Есть квадрат скажем 800х800 пикселей. В него вписан круг, диаметром тоже 800 пикселей. Координаты центра круга возьмем за 400,400. Круг условно разбит на 40 дорожек и 240 секторов.
Водим мышой. Получили координаты мыши.
Нужно вычислить номер дорожки и номер сектора.
Номер дорожки понятно - расстояние до центра. Вот только как....
А насчет номера сектора - тоже как-то получать тангенс угла надо, зная расстояние по Х от оси ординат. В теории я понимаю как это все, вот только матюкатику с геморроеметрией я подзабыл.

У кого какие мысли? [Ответ]
Yandex 11:01 01.04.2009
Eвгений, тангенс - это отношение расстояний по вертикали от центра на по горизонтили.
По тангенсу находится угол - это арктангенс.

Имхо стыдно такое должно спрашивать. Все есть в справочнике по высшей математике, автора не помню - то ли Выгодский, то ли Яблонский. [Ответ]
Eвгений 13:17 02.04.2009
Ладно, сделал вот так:

Сообщение от :

int Track, Sector;
double Angle;

Track=sqrt(IntPower(380-X,2)+IntPower(380-Y,2))/10;
if (X!=380) Angle=ArcTan2(380-Y,X-380)*180/3.141592;
if (Angle<0) Angle=Angle+360;

LabelX->Caption->Text="X:" + IntToStr(X);
LabelY->Caption->Text="Y:" + IntToStr(Y);

LabelTrack->Caption->Text=Track;
LabelSector->Caption->Text=Angle;

Пока определяю только угол а не сектор. Все вроде хорошо, но вот проблема - как только угол приближается к 90 или 180 - градусам - он почему-то становится равным 2.6 градусов. Небольшое движение мыши и далее правильные показания. [Ответ]
-=Женек=- 13:37 02.04.2009
Не знаю, не пробовал, не проверял, но сразу в глаза бросилась ошибка.
Сделай так:
if ((X!=380)||(Y!=380)) Angle=ArcTan2(380-Y,X-380)*180/3.141592; [Ответ]
dn2k4 18:48 02.04.2009
Yandex, высшая математика здесь ни к чему.
Eвгений, http://depositfiles.com/ru/files/bbia9xtmk - внимательно почитай. Думаю, что поможет. [Ответ]
Yandex 19:10 02.04.2009
dn2k4, да там все с азов - определения синусов-косинусов были. Высшей математикой там и не пахло, если честно. Это справочник для инженеров. [Ответ]
dn2k4 10:31 03.04.2009
Yandex, какие синусы?! какие косинусы?! Вы меня пугаете! =/

Угловой коэффициент прямой спасет отца русской демократии. Страницы 107/108 в ссылке, которую я приводил =]

...ну и построить тупое соответствие значения границ коэффициента номеру сектора + не забыть про знак. [Ответ]
Yandex 15:31 03.04.2009
dn2k4, синусами-косинусами я всякую элементарную математику обзываю. Ссылку не смотрел, т. к. задача и так очевидна. [Ответ]
Eвгений 19:12 03.04.2009
Че вы паритесь? Какие коэффициенты? Работающий код выше. ПОсле поправки, внесенной Женьком все заработало как часы.
3 строчки. И два часа вспоминания формул. [Ответ]
dn2k4 19:44 03.04.2009

Сообщение от Eвгений:
В теории я понимаю как это все, вот только матюкатику с геморроеметрией я подзабыл.

...

Сообщение от Eвгений:
И два часа вспоминания формул.

Вот это не может не радовать. [Ответ]
desp 10:21 01.05.2009

Сообщение от Yandex:
Eвгений, тангенс - это отношение расстояний по вертикали от центра на по горизонтили.
По тангенсу находится угол - это арктангенс.
Имхо стыдно такое должно спрашивать. Все есть в справочнике по высшей математике, автора не помню - то ли Выгодский, то ли Яблонский.

оффтоп, конечно, но если яблонский тот, про которого я думаю - задачник по теормеху выгодский - справочник по матану, он тут не нужен.

по теме - смстить центр координат в (400,400) - просто из всех координат вычитать 400. Преобразование афинное, ничего не поменяет.
Затем - формула прямой, проходящей через точку и центо координат x*y1=y*x1, где (x1,y1) точка, координаты которой ты знаешь.
оно же y=(y1/x1)x
т.о. тангенс угла равен отножению ординаты к абсциссе. заметь, координаты "чуть" поправлены.
расстояние от центра посчитать, зная координаты - математика, 7й класс.
[Ответ]
Вверх