Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306

Определить величину угла

09.02.2015, 17:27. Показов 2570. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Известны направления к примеру 30 и 40 градусов, угол +10 , 40 и 30 соответственно -10.
проблема возникает на углах 10 и 350 должно соответствовать -20 , а не +340.

Подскажите как реализовать метод возвращающий истинный угол.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static int GetAngle(double first, double second)
{
//знак угла можно опеределить например так, но если разница больше 180 все неправильно. 
if(first/second>1)
{
//-
}
else
{
//+
}
int ret= 
 
return ret;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2015, 17:27
Ответы с готовыми решениями:

Описать метод, находящий величину угла
Описать метод, находящий величину угла в градусах, если дана его величина D в радианах (D — вещественное число). Воспользоваться следующим...

Определить величину заработной платы сотрудника
Разработать программный код: Определить величину заработной платы сотрудника с учетом средних и произведенных показателей бракованных...

Switch & Case. Определить тип угла
Дан угол. Определить его тип (острый, тупой, прямой). Использовать оператор выбора. int num1; ...

7
Заблокирован
09.02.2015, 17:40
Driwars, -20 и +340 это одно и то-же...
просто вычесть из одного угла второй не вариант?
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
09.02.2015, 18:06  [ТС]
Ev_Hyper, с точки зрения человека разницы нет, а вот с точки зрения допустим машины повернуть на 20 влево или на 340 вправо разница гигантская, посмотрел бы я на того кто будет поворачивать на дороге на 340 вправо Просто вычесть не получится, поэтому и мучаюсь.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
09.02.2015, 18:18
Цитата Сообщение от Driwars Посмотреть сообщение
с точки зрения человека разницы нет, а вот с точки зрения допустим машины повернуть на 20 влево или на 340 вправо разница гигантская
Если результат больше 180,вычитайте полученное из 360.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.02.2015, 18:23
Цитата Сообщение от Driwars Посмотреть сообщение
будет поворачивать на дороге на 340 вправо
Повороты это не углы. Если у вас много вычислений связанных с поворотами, то рекомендую использовать кватернионы или комплексные числа.
1
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
09.02.2015, 18:27  [ТС]
S_el, 360 - 340 = 20 - не правильно, правильно -20;
У меня есть почти рабочий код но он ужасен, и не совсем верен.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
if ((first > second && first - 180 < second) || (first - second) < -180)//  295>30&& 295-180<30   
            {
                if ((first - second) < -180)                // 40 - 350    1 -359  
                {
                    if (first + 180 < second - 175)                         // 1 + 180  > 358- 175     295+180< 30-175
                    {
                        Debug.WriteLine("middle 1");
                        return TurnType.Middle;
                    }
                    else
                    {
                        return TurnType.Left;
                    }
 
 
                }
                else
                {
                    if ((first - 5) <= second)  // 10 <= 10 прямо                              295-5<30
                    {
 
                        Debug.WriteLine(" middle 2");
                        return TurnType.Middle;
                    }
                    else
                    {
                        if ((first - 30) <= second) //40-30= 10
                        {
 
                            Debug.WriteLine(" lite left");
                            return TurnType.Lite_Left;
                        }
                        else
                        {
 
 
                            Debug.WriteLine("left 2");
                            return TurnType.Left;
                        }
 
 
                    }
                }
 
 
            }
            else
            {
                if ((first + 5) >= second && second > first)  // 15 <= 10 прямо             
                {
                    Debug.WriteLine(" middle 3");
                    return TurnType.Middle;
 
                }
                else
                {
                    if ((first + 30) >= second && second > first) //10+30= 50 
                    {
                        Debug.WriteLine("lite right");
                        return TurnType.Lite_Right;
 
                    }
                    else
                    {
 
                        Debug.WriteLine("right");
                        return TurnType.Right;
 
 
                    }
 
 
                }
 
            }
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
09.02.2015, 18:36
Лучший ответ Сообщение было отмечено Driwars как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
        private const double Ang = 180;
 
        static double GetAngle(double from, double to)
        {
            double res = to - from;
            if (res < -Ang)
                return 2*Ang + res;
            if (res > Ang)
                return res - 2*Ang;
            return res;
        }
можно по-идее заменить 180 на https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{\pi }{2}
1
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
09.02.2015, 18:46  [ТС]
Psilon, Превосходно! Просто и лаконично, то что нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2015, 18:46
Помогаю со студенческими работами здесь

Определить значение угла между палкой и полом
Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии у м от стены. Определить значение угла а между палкой...

Определить значение угла а между палкой и полом
Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии у м от стены. Определить значение угла а между палкой...

Определить значение угла между палкой и полом
Около стены стоит палка длиной х м. Один её конец находится на расстоянии y от стены. Определить значение угла α между палкой и полом...

Определить значение синуса угла между палкой и полом
Около стены наклонно стоит палка длиной х м. Один ее конец находится на расстоянии y м от стены. Определить значение синуса угла между...

Определить значение этого же угла в градусах, учитывая, что 180° = п радианов
Дано значение угла п в радианах (0 &lt; п &lt; 2•п). Определить значение этого же угла в градусах, учитывая, что 180° = п радианов.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru