» Программирование>Определение по координатам номера дорожки и номера сектора.
Eвгений 09:18 01.04.2009
Есть квадрат скажем 800х800 пикселей. В него вписан круг, диаметром тоже 800 пикселей. Координаты центра круга возьмем за 400,400. Круг условно разбит на 40 дорожек и 240 секторов.
Водим мышой. Получили координаты мыши.
Нужно вычислить номер дорожки и номер сектора.
Номер дорожки понятно - расстояние до центра. Вот только как....
А насчет номера сектора - тоже как-то получать тангенс угла надо, зная расстояние по Х от оси ординат. В теории я понимаю как это все, вот только матюкатику с геморроеметрией я подзабыл.
Пока определяю только угол а не сектор. Все вроде хорошо, но вот проблема - как только угол приближается к 90 или 180 - градусам - он почему-то становится равным 2.6 градусов. Небольшое движение мыши и далее правильные показания.
[Ответ]
-=Женек=- 13:37 02.04.2009
Не знаю, не пробовал, не проверял, но сразу в глаза бросилась ошибка.
Сделай так:
if ((X!=380)||(Y!=380)) Angle=ArcTan2(380-Y,X-380)*180/3.141592;
[Ответ]
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вгений:
И два часа вспоминания формул.
Сообщение от Yandex: Eвгений, тангенс - это отношение расстояний по вертикали от центра на по горизонтили.
По тангенсу находится угол - это арктангенс.
Имхо стыдно такое должно спрашивать. Все есть в справочнике по высшей математике, автора не помню - то ли Выгодский, то ли Яблонский.
оффтоп, конечно, но если яблонский тот, про которого я думаю - задачник по теормеху выгодский - справочник по матану, он тут не нужен.
по теме - смстить центр координат в (400,400) - просто из всех координат вычитать 400. Преобразование афинное, ничего не поменяет.
Затем - формула прямой, проходящей через точку и центо координат x*y1=y*x1, где (x1,y1) точка, координаты которой ты знаешь.
оно же y=(y1/x1)x
т.о. тангенс угла равен отножению ординаты к абсциссе. заметь, координаты "чуть" поправлены.
расстояние от центра посчитать, зная координаты - математика, 7й класс.
[Ответ]