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

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

08.02.2017, 16:57. Показов 1648. Ответов 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
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru