0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 27

Определить, пересекаются ли прямая и окружность

26.05.2016, 00:11. Показов 2192. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задана окружность с центром в точке О(x0,y0) и радиусом R0 и прямая y=ax+b. Определить, пересекаются ли прямая и окружность. При положительном ответе найти точки пересечения.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2016, 00:11
Ответы с готовыми решениями:

Определить, пересекаются ли прямая и окружность
Задана окружность с центром в точке О(x0,y0) и радиусом R и прямая у=ах+b. Определить, пересекаются ли прямая и окружность. При...

Определить, пересекаются ли прямая и окружность, и найти точки пересечения
задана окружность с центром в точке х(нулевое) и(нулевое) у и радиусом Р и прямая у=ах+в. определить пересекаются ли прямая и окружность....

Определить, пересекаются ли прямая и окружность. При положительном ответе найти точки пересечения
.Задана окружность с центром в точке О(x0,y0) и радиусом R0 и прямая y=ax+b. Определить, пересекаются ли прямая и окружность. При...

3
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
26.05.2016, 15:39
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
///////////////////////////////////////////////////////////////////////////////
//2.
///////////////////////////////////////////////////////////////////////////////
//Задана окружность с центром в точке О(x0,y0) и радиусом R0 и прямая y = ax + b.
//Определить, пересекаются ли прямая и окружность. При положительном ответе
//найти точки пересечения.
///////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <complex>
#include <iostream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                     T_str;
typedef double                          T_coord;
typedef std::complex    < T_coord   >   T_point;
typedef T_point                         T_direct;
///////////////////////////////////////////////////////////////////////////////
void    input_val_with_prompt
    (
        T_coord         &   val,
        T_str   const   &   prompt
    )
{
    std::cout   <<  '\t'
                <<  prompt;
 
    std::cin    >>  val;
}
///////////////////////////////////////////////////////////////////////////////
bool    successfully_set_intersection_points_of_line_and_circle
    (
        T_coord         k,
        T_coord         b,
 
        T_point         C,
        T_coord         R,
 
        T_point     &   p1,
        T_point     &   p2
    )
{
    T_point     line_point  ( 0,    b );
    T_direct    line_dir    ( 1,    k );
 
    if  (
                line_point
            ==  C
        )
    {
        line_point  +=  line_dir;
    }
 
    T_direct    dir_from_line_point_to_C        =   C   -   line_point;
 
    T_coord     angle                           =       arg( dir_from_line_point_to_C )
                                                    -   arg( line_dir );
 
    T_point     foot_of_perp_from_C_to_line     =       line_point
                                                    +       line_dir
                                                        /   abs( line_dir )
                                                        *   abs( dir_from_line_point_to_C )
                                                        *   cos( angle );
 
    T_coord     dist_from_C_to_line             =   abs (
                                                                foot_of_perp_from_C_to_line
                                                            -   C
                                                        );
 
    bool    bool_res    =       dist_from_C_to_line
                            <=  R;
 
    if( bool_res )
    {
        T_coord     dist_from_foot_to_p_res
            =       R
                *   sin (
                            acos    (
                                            dist_from_C_to_line
                                        /   R
                                    )
                        );
 
        auto    delta   =       line_dir
                            /   abs( line_dir )
                            *   dist_from_foot_to_p_res;
 
        p1  =   foot_of_perp_from_C_to_line     -   delta;
        p2  =   foot_of_perp_from_C_to_line     +   delta;
    }//if
 
    return  bool_res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::cout   <<  "Enter coordinates of center C(Xc, Yc) and radius R of circle:"
                <<  std::endl;
 
    T_coord     Xc{};
    input_val_with_prompt( Xc,  "Xc = " );
 
    T_coord     Yc{};
    input_val_with_prompt( Yc,  "Yc = " );
 
    T_coord     R{};
    input_val_with_prompt( R,   "R = " );
 
    std::cout   <<  std::endl
                <<  "Enter coefficients of equations y = kx + b:"
                <<  std::endl;
 
    T_coord     k{};
    input_val_with_prompt( k,  "k = " );
 
    T_coord     b{};
    input_val_with_prompt( b,  "b = " );
 
    T_point     p1;
    T_point     p2;
 
    if  (
            successfully_set_intersection_points_of_line_and_circle
                (
                    k,
                    b,
 
                    { Xc,   Yc  },
                    abs(R),
 
                    p1,
                    p2
                )
        )
    {
        std::cout   <<  std::endl
                    <<  p1
                    <<  std::endl
                    <<  p2
                    <<  std::endl;
    }
    else
    {
        std::cout   <<  std::endl
                    <<  "Line and circle do not intersect."
                    <<  std::endl;
    }//if
}
1
0 / 0 / 0
Регистрация: 25.05.2016
Сообщений: 27
27.05.2016, 13:57  [ТС]
Это не оно.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
27.05.2016, 17:29
Тогда просто составьте квадратное уравнение и решите его.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2016, 17:29
Помогаю со студенческими работами здесь

Определить, пересекаются ли парабола и прямая
Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При положительном ответе найти точки пересечения.

Определить, пересекаются ли парабола и прямая (найдите ошибку)
Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При положительном ответе найти точки пересечения. ...

Оператор условия. Определить, пересекаются ли заданные кривая и прямая
Определить пересекаются ли кривая y=ax³+bx²+cx+d и прямая y=fx+g. При положительном ответе найти точку пересечения. Что не...

Определить, пересекаются ли контур прямоугольника и окружность
Задача такова есть координаты прямоугольника и круга. необходимо выяснить пересекаются они или нет.???? #include &lt;iostream&gt; ...

Определить, сколько точек пересечения имеют прямая и окружность и найти координаты этих точек
Привет. Тут такое дело. В общем я неплохо знаю сам язык, но вот задачку решить не могу. Т.е не знаю как. С школьной математикой у меня...


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

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

Новые блоги и статьи
Динамические массивы в C++ - создание и использование
NullReferenced 27.04.2025
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения. . .
Асинхронный JavaScript: Промисы, Async/Await и Fetch API
Reangularity 27.04.2025
Пользователь заходит на веб-страницу, нажимает кнопку и. . . ничего не происходит. Сайт словно замер. Через несколько секунд всё внезапно оживает, но пользователь уже успел закрыть вкладку. Знакомая. . .
Management on GitLab and repository management in Visual Studio code
jigi33 27.04.2025
- repo management on GitLab - CI/ CD in GitLab - VCS repository management in Visual Studio code (see attachments)
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru