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

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

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

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

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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2017, 16:57
Ответы с готовыми решениями:

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

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

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

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33369 / 21495 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
08.02.2017, 17:59
Что за переменные r1, color-ы разные и X, Y, R, как они описаны и чему равны - это мы сами должны догадаться?
0
08.02.2017, 18:29

Не по теме:


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

0
20 / 20 / 8
Регистрация: 06.11.2013
Сообщений: 65
Записей в блоге: 1
09.02.2017, 09:24
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2017, 09:24
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru