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

Отрисовка параболы

23.10.2021, 13:46. Показов 1869. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток, начал изучать киви и решил сделать проект, который будет отрисовывать графики функций. Я сделал уже отрисовку линейной функции и перешёл к квадратичной. Однако у меня возникла проблема. Как я хочу отрисовать этот график: пользователь вводит значения коэффициентов a, b и c в text input, всё это записывается в файл. Затем я беру эти коэффициенты из файла и записываю это все в список, если у меня a < 0, то я пробегаюсь циклом от самой маленькой точки (допустим это будет -1600), до x вершины. Затем я пробегаюсь от самой маленькой точки, но уже до y вершины. Соответственно у меня должно получиться очень большое кол-во Ellipse, в сумме которых отрисуется парабола. Однако происходит ровным счётом ничего, при том, что ошибок в коннекте между окнами по получения данных у меня нет(я проверял). Вот код класса отрисовки:

parabola.py
Python
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
class Parabola(Widget):
 
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
 
    def draw(self):
        db = open('db.txt', 'r')
        coords = list(db.read().split())
        db.close()
        ed = 50  # 1 единица отрезка
        a = int(coords[0])
        b = int(coords[1])
        c = int(coords[2])
        with self.canvas:
            Color(1, 1, 1)
            self.y_axis = Line(points=[350, 1000, 350, 0], width=2)  # отрисовка оси абцисс
            self.x_axis = Line(points=[0, 220, 1000, 220], width=2)  # отрисовка оси ординат
            self.unit_segment_x_negative = Line(points=[300, 260, 300, 180])  # отрисовка 1-го единичного отрезка, где x < 0
            self.unit_segment_x_positive = Line(points=[400, 260, 400, 180])  # отрисовка 1-го единичного отрезка, где x > 0
 
            x_v = -b / 2 * a  # x вершины
            y_v = a * x_v ** 2 + b * x_v + c  # y вершины
            x_v *= ed  # конвертируем в пиксели
            y_v *= ed
            low = -1600  # минимальная точка
            high = 1600  # максимальная точка
 
            # отрисовка параболы
            if a < 0:
                # Возрастает
                for x in range(low, int(x_v)):
                    for y in range(low, int(y_v)):
                        self.line = Ellipse(pos=(x,y))
                        low -= 1
                        break
                # Убывает
                for x in range(int(x_v), high):
                    for y in range(int(y_v), high):
                        self.line = Ellipse(pos=(x,y))
                        y_v += 1
                        x_v += 1
                        break
Если кто-нибудь знает, в чём может быть проблема, прошу помочь, буду очень благодарен! Размер окна я задаю 700x500.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2021, 13:46
Ответы с готовыми решениями:

Прорисовка параболы модулем Turtle
Почему данный ниже код дает параболу с не дорисованным правым плечом? import turtle as t t.tracer(False) # Значения для...

Отрисовка графика функции
Доброго времени суток. Не могу сделать задание, уже вроде бы всё разобрал, но не могу понять в чём ошибка, может кто подсказать? Файл...

Длина параболы
Найдите длину параболы y=x^2 на отрезке .

4
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
23.10.2021, 21:09
Python
1
x_v = -b / (2 * a)
1
1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
23.10.2021, 22:41  [ТС]
О, спасибо, теперь отрисовывается, но вместо параболы рисует прямую
0
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
24.10.2021, 04:06
Лучший ответ Сообщение было отмечено Cross_ChEp как решение

Решение

Cross_ChEp, не удивительно. Где в коде для каждого x вычисляется y? По-моему, самого главного - функции и нет.
1
1 / 1 / 0
Регистрация: 02.12.2019
Сообщений: 62
24.10.2021, 21:45  [ТС]
Да, я уже заметил) Благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2021, 21:45
Помогаю со студенческими работами здесь

График параболы - PyGame
Вводятся коэффициенты уравнения ax^2+bx+c, где a,b,c - целые. Рисуется парабола с помощью этих коэффициентов. Все готово кроме самой...

Сгенерировать координаты параболы
Сгенерировать координаты параболы y = x ^2 на промежутке x от -5 до 5, с шагом заданным пользователем.

Вычислить координаты вершины параболы
Парабола задана уравнением y=x^2+px+q. Вычислить координаты вершины параболы. Результат вывести с тремя знаками после запятой. Исходные...

Сгенерировать координаты параболы на промежутке
сгенерировать координаты параболы $y=x^2$ на промежутке $x$ от 5 до 5 с шагом 1.5

Нарисовать график параболы - Pygame
Привет! Нарисовать параболу уравнения y=ax^2, a - коэффициент(Чем больше, тем уже парабола). Добавить в этот код: import pygame, sys ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru