Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 27.02.2022
Сообщений: 11

Кардиоида

23.03.2022, 21:01. Показов 5664. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кардиоида – кривая, напоминающая сердце. Ее уравнение в декартовых координатах выглядит так:
x = 2 * r * sin(t) + r * sin(t * 2)
y = 2 * r *cos(t) + r * cos(t * 2)

где t – параметр, значения которого меняются от 0 до 2*(число Pi)

Напишите функцию cardioid(), принимающую аргументы: параметр r и параметр step – на основе которого определяется шаг изменения параметра t: он равен Pi/step.

На чисто синем холсте размером 600 на 550 пикселей, сдвинув начало рисования в точку (300, 200) (направления осей остаются прежними – x вправо, y вниз), нужно нарисовать кардиоиду, вычисляя значения последующих координат и соединяя точки ломаной линией. Внутреннюю часть залить чистым красным цветом, результат нужно сохранить в файл cardio.png.

Примечание:
Решение с помощью библиотеки PIL.

Формат ввода
Пример вызова функции:
cardioid(100, 6)

Формат вывода
Файл cardio.png
Миниатюры
Кардиоида  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2022, 21:01
Ответы с готовыми решениями:

Кардиоида – кривая, напоминающая сердце
Кардиоида – кривая, напоминающая сердце. Ее уравнение в декартовых координатах выглядит так: x=2rsin(t)+rsin(2t) ...

Кардиоида
нужно построить кардиоиду заданную следующим образом: r=a*(1-cosα); помогите, очень нужно сделать эту задачу, но я не понимаю как

ДН кардиоида
ДН(диаграмма направленности).Подскажите с построением кардиоиды в 3д.

5
290 / 170 / 92
Регистрация: 21.03.2016
Сообщений: 400
24.03.2022, 21:11
Лучший ответ Сообщение было отмечено dtd1337 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PIL import Image, ImageDraw
from math import sin, cos, pi
 
 
def cardioid_coordinates(r: int, t: float) -> (float, float):
    x = 2 * r * sin(t) + r * sin(t * 2) + 300
    y = 2 * r * cos(t) + r * cos(t * 2) + 200
    return x, y
 
 
def cardioid(r, step):
    coordinates = [cardioid_coordinates(r, i/step * pi) for i in range(0, 2 * step, 1)]
    img = Image.new('RGBA', (600, 550), 'blue')
    cardioid_draw = ImageDraw.Draw(img)
    cardioid_draw.polygon(coordinates, fill='red')
    img.save('cardio.png')
 
 
cardioid(100, 6)
Вот набросал код, можно отрефакторить и привести к нормальному виду.
2
1 / 1 / 0
Регистрация: 27.02.2022
Сообщений: 11
24.03.2022, 21:47  [ТС]
Я уже сделал, но всё равно спасибо большое.
0
0 / 0 / 0
Регистрация: 28.04.2022
Сообщений: 4
28.04.2022, 19:25
Если несложно, покажите свой код. На мое изображение он выдает ошибку, что отличается на 5% от оригинала

Добавлено через 7 минут
dtd1337, Если несложно, покажите пожалуйста свой код. На мое изображение он выдает ошибку, что отличается на 5% от оригинала(((
0
1 / 1 / 0
Регистрация: 27.02.2022
Сообщений: 11
28.04.2022, 22:12  [ТС]
biokefirrst,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import math
 
from PIL import Image, ImageDraw
 
 
def cardioid(r, step):
    image = Image.new('RGB', (600, 550), 'blue')
    drawer = ImageDraw.Draw(image)
    step_t = math.pi / step
    t = 0
    res = [(300, 200)]
    start_x = 300
    start_y = 200
    while t < 2 * math.pi:
        x = 2 * r * math.sin(t) + r * math.sin(t * 2)
        y = 2 * r * math.cos(t) + r * math.cos(2 * t)
        t += step_t
        res.append((x + start_x, y + start_y))
 
    res.append(res[1])
    res = tuple(res)
    drawer.polygon(res, 'red')
    image.save('cardio.png')
0
0 / 0 / 0
Регистрация: 28.04.2022
Сообщений: 4
28.04.2022, 22:16
dtd1337, спасибо большое! нашел ошибку в своей проге. вместо RGB использовал RGBA)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2022, 22:16
Помогаю со студенческими работами здесь

Кардиоида
Напишете код в паскаль =* :gwink: Построить кривые по заданному параметрическому представлению или заданному в полярных координатах:

кардиоида
Помогите найти площадь, ограниченную кривыми: кардиоида r=1-cos\varphi и r=1

Кардиоида
Построить кривые по заданному параметрическому представлению Кардиоида (рис. 59): x = a cos t(1+cost), y = a sin t(1+cost), a&gt;0, t...

Кардиоида
Написала программу для построения кардиоиды но она почему-то не работает program cardioid; uses GraphABC; const xSign...

Кардиоида
Добрый день! Помогите пожалуйста исправить прогу, у меня рисунок не рисует точками(незнаю как ими рисовать): #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru