-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85

Построение прямой, которая касается двух заданных окружностей

22.12.2016, 20:31. Показов 4180. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Ребята нужна помощь. Вообщем нужно сделать программу, задача такая: Построение прямой, которая касается двух заданных окружностей. Вот пример программы как именно надо сделать программу, только нужно: Построение прямой, которая касается двух заданных окружностей.
Может кто то знает как ето можно сделать, помогите.
Миниатюры
Построение прямой, которая касается двух заданных окружностей   Построение прямой, которая касается двух заданных окружностей   Построение прямой, которая касается двух заданных окружностей  

Построение прямой, которая касается двух заданных окружностей  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2016, 20:31
Ответы с готовыми решениями:

Построение уравнения прямой, проходящей через точки пересечения двух заданных окружностей
Помогите с задачкой на Делфи... Построение уравнения прямой, что проходит через точки пересечения двух заданных окружностей: x и y ...

составить уравнение окружности,которая имеет центр в точке S(8,6) и касается прямой 5x-12y-46=0
помогите составить уравнение окружности,которая имеет центр в точке S(8,6) и касается прямой 5x-12y-46=0

Составить уравнение окружности, которая имеет центр в точке S(8,6) и касается прямой 5x-12y-46=0
помогите составить уравнение окружности,которая имеет центр в точке S(8,6) и касается прямой 5x-12y-46=0

54
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 14:24
Студворк — интернет-сервис помощи студентам
Lenok S, Точка соприкосновения

Добавлено через 53 секунды
Если известно, что соприкасаются, то
X = (CenterX1 * R2 + CenterX2 * R1) / (R1 + R2)
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 14:43
1:точка пересечения двух линий у тебя уже есть (координата х.у)
2: от точки до круга тоже есть значение которое уже есть.(длина )
3:вычисляем радиус второй окружности для пересечения с первой(длина делим на 2 получаем радиус второго круга)
вот получается что все есть только надо подставить все числа в формулу и получить координаты соприкосновения.
Миниатюры
Построение прямой, которая касается двух заданных окружностей  
1
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 16:53  [ТС]
Извини, за глупый вопрос я в С++ Builder не шарю , скажи пожалуйста как ето записать на мове С++ Builder, что бы получить точку соприкосновение окружностей с прямой.
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 17:26
Lenok S,
ну даже совсем думать не хочешь!
смотри
C++
1
2
//Побудова кола R
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);// начало (точка пересечения двух линий)
здесь у тебя координата тех самых линий (их точка пересечения)

а здесь
C++
1
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;// координата центра круга
теперь нам надо найти середину в которой и будет точка другого круга для пересечения с основным.
ищем координаты
C++
1
2
int xr = (x0+250+xp+250)/2;//
int yr = (y0+250+yp+250)/2;//
есть теперь координаты для второго круга
и теперь надо узнать длину чтоб записать ее как радиус.
C++
1
int RR =  x0+250 - xr;// радиус
теперь можешь поставить точку (центр круга) для примера.

Добавлено через 1 минуту
C++
1
Form1->Image1->Canvas->Pixels[xl][yl]=clRed;
Добавлено через 3 минуты
и зачем тебе это программирование?
тебе ведь совсем не поверят в учебке что ты сама его решила.
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 17:36  [ТС]
Спасибо, ето не важно. Мне нужно его сдать, а поверят они или нет ето уже второй вопрос.
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 17:47
но для радиуса нужна Формула пифагора вычисление расстояния
так как
Цитата Сообщение от lifeforce Посмотреть сообщение
int RR = x0+250 - xr;// радиус
это будет правильным если при условии что У остается неизменным.
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 17:49  [ТС]
Скажи, а как ету формулу задействовать?
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 19:06
внимательно просмотри код и вставь только тот текст который я добавил.
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
l1=r/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
 
int xr = (x0+250+xp+250)/2;//
int yr = (y0+250+yp+250)/2;//
int
wxr = xr,
wyr=  yr,
RR = 0,
sum=0;
wxr= (x0+250-wxr)*(x0+250-wxr);
wyr= (y0+250-wyr)*(y0+250-wyr);
sum = (wxr+wyr);  // ShowMessage(sum);
if (sum<0) sum=~sum+1;
RR = sqrt(sum);
 
//Побудова кола R
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);// начало (точка пересечения двух линий)
Form1->Image1->Canvas->Ellipse(x0-r+250,y0-r+250,x0+r+250,y0+r+250);//
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;// координата центра круга
 
//Form1->Image1->Canvas->MoveTo(xr,yr);
//Form1->Image1->Canvas->Ellipse(xr-RR,yr-RR,xr+RR,yr+RR);
 
l1=rr/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
 
int xl = (x0+250+xp+250)/2;// int RR = x0+250 - xr;// радиус
int yl = (y0+250+yp+250)/2;//
int
wxl = xl,
wyl=yl,
RL = 0,
suml=0;
wxl= (x0+250-wxl)*(x0+250-wxl);
wyl=(y0+250-wyl)*(y0+250-wyl);
suml = (wxl+wyl);  //
if (suml<0) suml=~suml+1;
RL = sqrt(suml);
 
//Побудова кола -R
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
Form1->Image1->Canvas->Ellipse(x0-rr+250,y0-rr+250,x0+rr+250,y0+rr+250);
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;
 
 
//Form1->Image1->Canvas->MoveTo(xl,yl);
//Form1->Image1->Canvas->Ellipse(xl-RL,yl-RL,xl+RL,yl+RL);
здесь вычисления по формуле пифагора
радиуса.
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
29.12.2016, 19:17
пример работы
ну а теперь подставь формулы которые я выложил выше .
ведь прибавлять и умножать умеешь.
все данные теперь есть.
успехов!
Миниатюры
Построение прямой, которая касается двух заданных окружностей  
1
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 19:26  [ТС]
Спасибо, сейчас попробую.
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 19:43  [ТС]
Вот все сделала, как вы говорили, не чего не меняется(
Миниатюры
Построение прямой, которая касается двух заданных окружностей  
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 22:04  [ТС]
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 22:44  [ТС]
Добрый вечер! Ребята нужно построить точки соприкосновения там, де окружности касаются прямой и сделать координаты центра кола. Помогите пожалуйста ето сделать. Не шарю как ето делать, помогите пожалуйста сделать.
Миниатюры
Построение прямой, которая касается двух заданных окружностей  
0
-1 / 0 / 0
Регистрация: 28.01.2016
Сообщений: 85
29.12.2016, 22:48  [ТС]
Вот код программы:
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "math.h"
#include "Unit2.h"
#include "stdio.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float x,y,xd,yd,x1,x2,y1,y2,a,b,xt1,yt1,xt2,yt2,xt3,yt3,xt4,yt4,xmax,xmin,ymax,ymin,m=1,s;
AnsiString ozn;
 
int px(float x)
{
return x+Form2->Image1->Width/2;
}
 
int py(float y)
{
return Form2->Image1->Height/2-y;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
float a1=10, a2=2,a3, a4, b1=100, b2=50, xp, yp, l1, l2, l3, r=100, rr=-100, x0, y0,xd,yd;
a1=StrToFloat(Edit1->Text)*m;
b1=StrToFloat(Edit2->Text)*m;
a2=StrToFloat(Edit3->Text)*m;
b2=StrToFloat(Edit4->Text)*m;
r=StrToFloat(Edit5->Text)*m;
rr=-(StrToFloat(Edit6->Text))*m;// инвертируем число в отрицательное
 
 
//
a4= ((atan(a2)*180/M_PI+atan(a1)*180/M_PI)/2)*M_PI/180;
xp=(b2-b1)/(a1-a2);
yp=a1*xp+b1;
a3= (a4*180/M_PI-atan(a1)*180/M_PI)*M_PI/180;
 
//вычисляем формулу
l1=r/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
 
//Побудова кола R
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
Form1->Image1->Canvas->Ellipse(x0-r+250,y0-r+250,x0+r+250,y0+r+250);
 
// ставим точку!!!
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;
 
//Малюємо коло красним коляром
Form1->Image1->Canvas->Pen->Color=clRed;//  bsClear;
 
//тут повторно вычисляем формулу но уже для отрицательного результата
l1=rr/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
 
//
Label6->Caption="a1="+FloatToStr(atan(a1)*180/M_PI)+" a2="+FloatToStr(atan(a2)*180/M_PI)
+"  a3="+FloatToStr(atan(a3)*180/M_PI)
+"  a4="+FloatToStr(((atan(a2)*180/M_PI+atan(a1)*180/M_PI)/2));
Label7->Caption=" l1="+FloatToStr(l1)+" l2="+FloatToStr(l2)+" xo="+FloatToStr(x0)+" y0="+ FloatToStr(y0);
 
//Побудова кола -R и малюємо коло с заданным радіусом на протилежній стороні графіка
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
Form1->Image1->Canvas->Ellipse(x0-rr+250,y0-rr+250,x0+rr+250,y0+rr+250);
 
//ставим точку!!!
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;
 
//Малюємо пряму синім коляром
Form1->Image1->Canvas->Pen->Color=clBlue;//  bsClear;
 
//пряма
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
for (int j=-250; j<250; j++)
{
Form1->Image1->Canvas->LineTo(j+250,a2*j+b2+250);
}
//---------------------------------------------------------------------------
Form1->Image1->Canvas->Pen->Color=(TColor)RGB(0,0,0);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
 
for (xd=0; xd<=Form1->Image1->Width*m; xd=xd+50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
for (xd=0; xd>=-Form1->Image1->Width*m; xd=xd-50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
  for (yd=50; yd<=Form1->Image1->Height*m; yd=yd+50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
for (yd=-50; yd>=-Form1->Image1->Height*m; yd=yd-50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Image1->Canvas->Rectangle(0,0,800,800);
}
//---------------------------------------------------------------------------
 void __fastcall TForm1::N1Click(TObject *Sender)
{
Form1->Hide();
Form2->Show();
}
//---------------------------------------------------------------------------
  void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
int x_z = X;
int y_z= Y;
Form1->Label9->Caption="X= "+IntToStr(x_z);
Form1->Label10->Caption="Y= "+IntToStr(y_z);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
m=m-0.1;
 
Form1->Image1->Canvas->Rectangle(0,0,Form1->ClientWidth,Form1->Height);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
 
for (xd=0; xd<=Form1->Image1->Width*m; xd=xd+50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
for (xd=0; xd>=-Form1->Image1->Width*m; xd=xd-50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
 
 for (yd=50; yd<=Form1->Image1->Height*m; yd=yd+50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
for (yd=-50; yd>=-Form1->Image1->Height*m; yd=yd-50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
 Button1Click(0);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 
m=m+0.1;
 
Form1->Image1->Canvas->Rectangle(0,0,Form1->Width,Form1->Height);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
 
for (xd=0; xd<=Form1->Image1->Width*m; xd=xd+50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
for (xd=0; xd>=-Form1->Image1->Width*m; xd=xd-50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
  for (yd=50; yd<=Form1->Image1->Height*m; yd=yd+50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
for (yd=-50; yd>=-Form1->Image1->Height*m; yd=yd-50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
 Button1Click(0);
}
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
30.12.2016, 21:20
Lenok S,
опять все в кашу!
я тебе там отредактировал события кнопок:
C++
1
2
3
void __fastcall TForm1::Button1Click(TObject *Sender)
void __fastcall TForm1::Button3Click(TObject *Sender)
void __fastcall TForm1::Button4Click(TObject *Sender)
замени их из моего кода.

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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "math.h"
#include "Unit2.h"
#include "stdio.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float x,y,xd,yd,x1,x2,y1,y2,a,b,xt1,yt1,xt2,yt2,xt3,yt3,xt4,yt4,xmax,xmin,ymax,ymin,m=1,s;
AnsiString ozn;
 
int px(float x)
{
return x+Form2->Image1->Width/2;
}
 
int py(float y)
{
return Form2->Image1->Height/2-y;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
float a1=10, a2=2,a3, a4, b1=100, b2=50, xp, yp, l1, l2, l3, r=100, rr=100, x0, y0,xd,yd;
a1=StrToFloat(Edit1->Text)*m;
b1=StrToFloat(Edit2->Text)*m;
a2=StrToFloat(Edit3->Text)*m;
b2=StrToFloat(Edit4->Text)*m;
r=StrToFloat(Edit5->Text)*m;
rr=-(StrToFloat(Edit6->Text))*m;// инвертируем число в отрицательное
 
 
//
a4= ((atan(a2)*180/M_PI+atan(a1)*180/M_PI)/2)*M_PI/180;
xp=(b2-b1)/(a1-a2);
yp=a1*xp+b1;
a3= (a4*180/M_PI-atan(a1)*180/M_PI)*M_PI/180;
 
 
 
//вычисляем формулу
l1=r/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
// формула пифагора
int xr = (x0+250+xp+250)/2;//
int yr = (y0+250+yp+250)/2;//
int
wxr = xr,
wyr=  yr,
RR = 0,
sum=0;
wxr= (x0+250-wxr)*(x0+250-wxr);
wyr= (y0+250-wyr)*(y0+250-wyr);
sum = (wxr+wyr); // 
if (sum<0) sum=~sum+1;
RR = sqrt(sum);// радиус правого круга
//Form1->Image1->Canvas->MoveTo(xr,yr);//для примера для правой стороны
//Form1->Image1->Canvas->Ellipse(xr-RR,yr-RR,xr+RR,yr+RR);//можно посмотреть круг пересечения
 
//Малюємо коло красним коляром
Form1->Image1->Canvas->Pen->Color=clRed;//  bsClear;
 
//Побудова кола R
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
Form1->Image1->Canvas->Ellipse(x0-r+250,y0-r+250,x0+r+250,y0+r+250); 
// ставим точку!!!
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;
 
//тут повторно вычисляем формулу но уже для отрицательного результата
l1=rr/sin(a3);
l2=l1*sin(a4);
l3=l1*cos(a4);
x0=xp+l3;
y0=yp+l2;
// формула пифагора
int xl = (x0+250+xp+250)/2;// int RR = x0+250 - xr;// радиус
int yl = (y0+250+yp+250)/2;//
int
wxl = xl,
wyl=yl,
RL = 0,
suml=0;
wxl= (x0+250-wxl)*(x0+250-wxl);
wyl=(y0+250-wyl)*(y0+250-wyl);
suml = (wxl+wyl);  //
if (suml<0) suml=~suml+1;
RL = sqrt(suml);// радиус левого круга 
//Form1->Image1->Canvas->MoveTo(xl,yl);//для примера для левой стороны
//Form1->Image1->Canvas->Ellipse(xl-RL,yl-RL,xl+RL,yl+RL);//можно посмотреть круг пересечения
/*
//а это тебе зачем????
Label6->Caption="a1="+FloatToStr(atan(a1)*180/M_PI)+" a2="+FloatToStr(atan(a2)*180/M_PI)
+"  a3="+FloatToStr(atan(a3)*180/M_PI)
+"  a4="+FloatToStr(((atan(a2)*180/M_PI+atan(a1)*180/M_PI)/2));
//здесь выведется результат только для левого круга ВСЕГДА!
Label7->Caption=" l1="+FloatToStr(l1)+" l2="+FloatToStr(l2)+" x0="+FloatToStr(x0)+" y0="+ FloatToStr(y0);
*/
//Малюємо пряму синім коляром
Form1->Image1->Canvas->Pen->Color=clBlue;//  bsClear;
 
//Побудова кола -R и малюємо коло с заданным радіусом на протилежній стороні графіка
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
Form1->Image1->Canvas->Ellipse(x0-rr+250,y0-rr+250,x0+rr+250,y0+rr+250); 
//ставим точку!!!
Form1->Image1->Canvas->Pixels[x0+250][y0+250]=clRed;
 
 
Form1->Image1->Canvas->Pen->Color=clBlack;//линии рисуем черным 
//пряма
Form1->Image1->Canvas->MoveTo(xp+250,yp+250);
for (int j=-250; j<250; j++)
{
Form1->Image1->Canvas->LineTo(j+250,a2*j+b2+250);
}
//---------------------------------------------------------------------------
Form1->Image1->Canvas->Pen->Color=(TColor)RGB(0,0,0);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
 
for (xd=0; xd<=Form1->Image1->Width*m; xd=xd+50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
for (xd=0; xd>=-Form1->Image1->Width*m; xd=xd-50)
{
 Form1->Image1->Canvas->MoveTo(px(xd*m),py(-5));
 Form1->Image1->Canvas->LineTo(px(xd*m),py(5));
 Form1->Image1->Canvas->TextOutA(px(xd*m-10),py(-10),FloatToStr(xd));
 }
  for (yd=50; yd<=Form1->Image1->Height*m; yd=yd+50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
for (yd=-50; yd>=-Form1->Image1->Height*m; yd=yd-50)
{
 Form1->Image1->Canvas->MoveTo(px(-5),py(yd*m));
 Form1->Image1->Canvas->LineTo(px(5),py(yd*m));
 Form1->Image1->Canvas->TextOutA(px(10),py(yd*m+5),FloatToStr(yd));
 }
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Image1->Canvas->Rectangle(0,0,800,800);
}
//---------------------------------------------------------------------------
 void __fastcall TForm1::N1Click(TObject *Sender)
{
Form1->Hide();
Form2->Show();
}
//---------------------------------------------------------------------------
  void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
int x_z = X;
int y_z= Y;
Form1->Label9->Caption="X= "+IntToStr(x_z);
Form1->Label10->Caption="Y= "+IntToStr(y_z);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{
m=m-0.1;
 
Form1->Image1->Canvas->Rectangle(0,0,Form1->ClientWidth,Form1->Height);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
// здесь код тебе не нужен так как его опять вызываешь из кнопки 1 
 Button1Click(0);
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 
m=m+0.1;
 
Form1->Image1->Canvas->Rectangle(0,0,Form1->Width,Form1->Height);
Form1->Image1->Canvas->MoveTo(0,Form1->Image1->Height/2);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,Form1->Image1->Height/2);
Form1->Image1->Canvas->MoveTo(Form1->Image1->Width/2,0);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width/2,Form1->Image1->Height);
// здесь код тебе не нужен так как его опять вызываешь из кнопки 1 
 Button1Click(0);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2016, 21:20

Пересечение двух окружностей в 3д заданных центром, осью, радиусом
Центры окружностей совпадают и в начале координат. Радиусы 1. Оси единичные вектора. Как найти пересечение? Может это система...

количество разных общих касательных для заданных двух окружностей
Я некак не могу решыть ...... Вот ети задачи : Задача №1 Васе на день рождения подарили много шариков и игрушечный лазер.Шарики надуты...

Оформление графика x-y для построение двух окружностей
Подскажите, пожалуйста начинающему в Mathcad-е. При разборке задачи по теоретической механике выполненной в Mathcad столкнулся с трудностью...

На прямой найти точку, равноудаленную от двух заданных точек
Задачи, вроде как, легкие. Но, как бы я не решил (решал с помощью формулы квадрата расстояния между двумя точками) все равно ответ...

Найти первообразную для функции f(x), график которой касается прямой g(x)
f(x)=x+3, g(x)=0


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

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

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru