Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
1

Поиск угла по 3 сторонам, ошибки:

08.11.2013, 12:44. Просмотров 452. Ответов 5
Метки нет (Все метки)

Здравствуйте, пишу алгоритм поиска угла по 3 сторонам.
Не подумайте что я нахлебник, поэтому максимально всё распишу и постараюсь предоставить информацию в удобном для чтения виде.

Практически весь код:
Кликните здесь для просмотра всего текста
Visual Basic
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
Sub Run()
' константы
    Const O1A As Double = 70
    Const X As Double = 0.32 * O1A
    Const Y1 As Double = 0.34 * O1A
    Const Y2 As Double = 0.17 * O1A
    Const AB As Double = 0.35 * O1A
    Const O2B As Double = 0.4 * O1A
    Const O2C As Double = 0.5 * O1A
' позиции точек
    Dim Xa As Double
    Dim Ya As Double
    Dim Xb As Double
    Dim Yb As Double
    Dim Xc As Double
    Dim Yc As Double
    Dim AO2 As Double
' углы
    Dim fi As Double
    Dim alpha As Double
    Dim beta As Double
    Dim gamma As Double
    fi = ToRad(90)
    
    Do While True ' в бесконечный цикл чтобы получить анимацию
        Call Clear
        
        fi = fi + 1
        
        ' A
        Xa = 0 + O1A * Sin(ToRad(180) - fi)
        Ya = 0 + O1A * Cos(ToRad(180) - fi)
        AO2 = ((X - Xa) ^ 2 + (Y1 - Ya) ^ 2) ^ (1 / 2)
        alpha = Application.Asin((Y1 - Ya) / AO2)
        ' B
        a = O2B
        b = AO2
        c = AB
        p = (a + b + c) / 2
        
        beta = 2 * Math.Atn(((p - b) * (p - c) / (p * (p - a))) ^ (1 / 2))
        'beta = Application.Acos(((a) ^ 2 + (b) ^ 2 - (c) ^ 2) / (2 * a * b)) ' вот тут ошибку выбивает
        'beta = Application.Acos(((O2B) ^ 2 + (AO2) ^ 2 - (AB) ^ 2) / (2 * O2B * AO2)) ' естественно тоже самое
        
        Xb = X + O2B * Sin(gamma)
        Yb = Y1 + O2B * Cos(gamma)
        ' C
        Xc = X + (O2B + BC) * Sin(gamma)
        Yc = Y1 + (O2B + BC) * Sin(gamma)
        ' Render
        Call DrawProp(0, 0)
        Call DrawProp(X, Y1)
        Call DrawLine(0, 0, Xa, Ya)
        Call DrawLine(Xa, Ya, Xb, Yb)
        Call DrawLine(X, Y1, Xb, Yb)
        Call DrawLine(Xb, Yb, Xc, Yc)
    Loop
End Sub


Visual Basic
1
2
3
4
5
6
7
8
        a = O2B
        b = AO2
        c = AB
        p = (a + b + c) / 2
        
        beta = 2 * Math.Atn(((p - b) * (p - c) / (p * (p - a))) ^ (1 / 2))
        'beta = Application.Acos(((a) ^ 2 + (b) ^ 2 - (c) ^ 2) / (2 * a * b)) ' вот тут ошибку выбивает
        'beta = Application.Acos(((O2B) ^ 2 + (AO2) ^ 2 - (AB) ^ 2) / (2 * O2B * AO2)) ' естественно тоже самое
Как предложите находить этот угол по критерию: меньше ошибок, производительность или просто как вы это делаете?

Добавлено через 6 минут
угол между сторонами AO2 и O2B, похоже неверная формула где через герона... перещитываю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 12:44
Ответы с готовыми решениями:

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

Нахождение угла прямоугольного треугольника по известным 3 сторонам
помогите написать php код программы для вычисления угла прямоугольного...

По двум сторонам a, b треугольника и углу между ними C найти третью сторону c , два других угла A,B и площадь
Ребята,помогите!Не могу найти ошибку!Та же тема.Чего только не перепробовала,а...

Условие: По двум сторонам и углу между ними в треугольнике АВС найти два остальных угла и третью сторону. c^2 = a^2 + b^2 - 2 ab cos A
Условие: По двум сторонам и углу между ними в треугольнике АВС найти два...

Поиск частей внешнего контура по четырём сторонам с "захватом"
Вот так вот чудно я назвал тему =) Всем привет. В рамках проекта нужно...

5
Апострофф
Заблокирован
08.11.2013, 13:41 2
vbloodv, изложи задачу на пальцах (и графически тоже).
Скорее всего, здесь не нужны углы в явном виде, всё можно расчитать из пропорций и т.д.
1
shanemac51
Модератор
Эксперт MS Access
8079 / 3071 / 446
Регистрация: 07.08.2010
Сообщений: 8,379
Записей в блоге: 2
08.11.2013, 14:06 3
примерно так
1
Миниатюры
Поиск угла по 3 сторонам, ошибки:  
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
08.11.2013, 17:00  [ТС] 4
Вот решение поставленной задачи, там где cosB я и застопорился. O1A - 70, угол начальный fi, т.е. всё остальное нахожу от него !
0
Миниатюры
Поиск угла по 3 сторонам, ошибки:  
shanemac51
Модератор
Эксперт MS Access
8079 / 3071 / 446
Регистрация: 07.08.2010
Сообщений: 8,379
Записей в блоге: 2
08.11.2013, 17:37 5
не могу сообразить --что это
--теория мех и машин
--сопромат
1
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
09.11.2013, 09:36  [ТС] 6
информатика для машиностроителей, надо построить графическую модель в excel. Графическая библиотека уже есть, осталось решить нормально (вроде тоже сделал, но тем не менее)
0
09.11.2013, 09:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2013, 09:36

Рассчитать квадрат синуса угла, значение угла вводится с клавиатуры в градусах
Помогите. Нужно написать программу на СИ(в Visual Studio) которая расчитывает...

Нарисовать движущуюся от левого нижнего угла экрана до правого верхнего угла окружность
Нарисовать, движущуюся от левого нижнего угла экрана до правого верхнего угла,...

Составить функцию, которая по величине угла в радианах возвращает величину этого угла в градусах
Ребят я в этом деле новичок, позарез нужно сдать лабораторную( Составляю...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru