Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.02.2017
Сообщений: 1
1

Нарисовать фигуру: квадрат с вписаной окружностью и описаной окружностью (XE5)

08.02.2017, 16:57. Показов 1413. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
прошу Вашей помощи. Нужно написать программу, в которой движется фигура и меняет цвет. Фигура: квадрат с вписанной окружностью и описанной окружностью. Я сделала квадрат с описанной окружность, но вписать в квадрат окружность не получается. Вот как я сделала:

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
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
        Graphics::TCanvas* a = ((TPaintBox*)Sender)->Canvas;
        a->Brush->Style = bsSolid;
        a->Pen->Style = psSolid;
 
        a->Brush->Color = RGB(255, color1G, 0);
        a->Pen->Color = a->Brush->Color;
        a->Ellipse(X, Y, X + R, Y + R);
 
        double cx = X + R / 2;
        double cy = Y + R / 2;
        double cr = R / 2;
        double pi4 = pi / 2;
        double pi8 = pi / 4;
 
        a->Brush->Color = RGB(0, color2G, color2B);
        a->Pen->Color = a->Brush->Color;
        a->PenPos = Point(cx + cos(r1) * cr, cy + sin(r1) * cr);
        a->LineTo(cx + cos(r1 + 1 * pi4) * cr, cy + sin(r1 + 1 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 2 * pi4) * cr, cy + sin(r1 + 2 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 3 * pi4) * cr, cy + sin(r1 + 3 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 0 * pi4) * cr, cy + sin(r1 + 0 * pi4) * cr);
        a->FloodFill(cx, cy, a->Brush->Color, fsBorder);
 
        cr *= sqrt(2) / 2;
 
        a->Brush->Color = RGB(0, color2G, color2B);
        a->Pen->Color = a->Brush->Color;
        a->PenPos = Point(cx + cos(r1) * cr, cy + sin(r1) * cr);
        a->LineTo(cx + cos(r1 + 1 * pi4) * cr, cy + sin(r1 + 1 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 2 * pi4) * cr, cy + sin(r1 + 2 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 3 * pi4) * cr, cy + sin(r1 + 3 * pi4) * cr);
        a->LineTo(cx + cos(r1 + 0 * pi4) * cr, cy + sin(r1 + 0 * pi4) * cr);
        a->FloodFill(cx, cy, a->Brush->Color, fsBorder);
 
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2017, 16:57
Ответы с готовыми решениями:

Радиус описаной и вписаной окружности
Имеется n-кутник со стороной а. Нужно написать программу которая по входим данным определит...

Нарисовать треугольник с вписанной в него окружностью
Как сделать чтобы рисовалась не линия, а треугольник с вписанным треугольником? Добавлено через...

Циклы с окружностью
Помагите зделать следующую программу,чтобы в цикле рисовалось несколько окружностей

Столкновения прямоугольника с окружностью
Пишу арканоид. Есть окружность (биток) и прямоугольник. Реализовал столкновение между ними: ...

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
08.02.2017, 17:59 2
Что за переменные r1, color-ы разные и X, Y, R, как они описаны и чему равны - это мы сами должны догадаться?
0
Dinkin
08.02.2017, 18:29
  #3

Не по теме:


Думаю вырядили объяснит, это не ее код. он только тут на форуме раз 5 встречался, типа как ТУТ

0
20 / 20 / 8
Регистрация: 06.11.2013
Сообщений: 65
Записей в блоге: 1
09.02.2017, 09:24 4
TCanvas * C = image->Canvas; // Канвас для рисования изображения.
// Из геометрических соображений имеем:
// 1. Центры вписанной и описанной окружностей совпадают.
// 2. Радиусы окружностей относятся как R = r * sqrt(2);
// где
// R - Радиус описанной окружности.
// r - Радиус вписанной окружности.
double R = 150; // Вольно выбираем радиус внешней окружности из соображений наглядности.
double r = R/sqrt(2); // Вычисляем соответствующий радиус внутренней окружности.

C->Ellipse( 0, 0, 2*R, 2*R ); // Рисуем внешнюю окружность.
C->Ellipse( R-r, R-r, R+r, R+r ); // Рисуем внутреннюю окружность.

double a = 0., d = M_PI/2; // Задаем а - угол первой точки квадрата в декартовой системе координат.
double x = R * cos(a);
double y = R * sin(a); C->MoveTo(x+R,y+R);

for( int i=0; i<4; i++ ) // Рисуем квадрат.
{
a += d; x = R * cos(a);
y = R * sin(a);
C->LineTo(x+R,y+R);
}
0
09.02.2017, 09:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2017, 09:24
Помогаю со студенческими работами здесь

Множество треугольников пересекающихся с окружностью
На плоскости n точки заданы своими координатами, дана окружность радиуса R с центром в точке x0,...

Обвести радужку глаза окружностью
Пишу на с# в VS2015 Дано изображение глаза (s19...jpg) нужно обвести радужку глаза окружностью для...

Аппроксимация точек окружностью МНК
Здравствуйте, из за не знания математики, не знал в какой раздел написать. Имеем множество точек...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru