2013-03-19 2 views
0

Предположим, у меня есть круг. Пользователь может коснуться круга вокруг края, и я могу получить угол, по которому они касались круга (от центра). Теперь, скажем, круг делится на 8 разделов.Расчет угла ближайшего участка

И поэтому в каждом разделе я бы следующее:

section 0 = 0 degrees 
section 1 = 45 degrees 
section 2 = 90 degrees 
section 3 = 135 degrees 
... 
section 7 = 315 degrees 

Так от угла, который был затронут, как я могу получить ближайший угол раздел? например, если пользователь коснулся 95 градусов, я должен был бы вычислить 90 градусов (раздел 2) в качестве ближайшего угла сечения.

Я на самом деле делаю это на android/Java. Поэтому любые полезные функции будут полезны.

Благодаря

+2

, и если они нажимают на 40 градусов, это должен быть сегмент 0? Если это пол (угол/45), в противном случае, вероятно, круглый (угол/45). –

+0

Не знаю, почему это было закрыто ... Я нашел это очень актуальным и полезным. Я собирался спросить то же самое, но я столкнулся с этим. –

ответ

1

Как Иаков уже отмечалось в комментарии раздел можно найти из round(angle/45) & угол пола можно найти из 45*(round(angle/45)).

+3

не должно быть 'round' вместо' floor'? Например, если 'angle' равно 44, то ваша формула дает 0 градусов. Но 44 ближе к 45, чем 0. – Kevin

+0

@ Кевин ... да, я думаю, он должен быть круглым ... см. Правки .. на самом деле я не заметил слова ближайшего .. мой плохой .. –

+1

Да, я использовал раунд , но это ответ ... Я знал, что это просто! Спасибо ... – FlashAsh99

0

я не знаю синтаксис Java, но следующие должны делать

(round((angle/360)*numSections))*360/numSections 

Расчет угла/numSections должен находиться в обращении и что вокруг должны быть круглыми в целое; тип раунда, который дает 1 для 1.4 и 2 для 1.6. Кроме того, вам может понадобиться дополнительный, если конвертировать 360 0.

Смежные вопросы