Форум программистов, компьютерный форум, киберфорум
Python: PyGame
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 14.09.2019
Сообщений: 57

Задать длину линии

19.07.2021, 09:19. Показов 4211. Ответов 1

Студворк — интернет-сервис помощи студентам
Пишу игру на pygame и придумал для неё механику выстрела.
Вот она отдельно:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pygame
 
 
pygame.init()
sc = pygame.display.set_mode((900, 900))
pygame.draw.rect(sc, (0, 255, 0), (445, 445, 10, 10))\
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:
            pygame.draw.line(sc, (255, 255, 255), (450, 450), (event.pos[0], event.pos[1]), 5)
 
            pygame.display.update()
            sc.fill((0, 0, 0))
            pygame.draw.rect(sc, (0, 255, 0), (445, 445, 10, 10))
Здесь просто рисуется линия от центра окна и до курсора.
Мне нужно что-бы линия рисовалась не до курсора, а на фиксированную длину, но в сторону курсора.
Проще говоря, мне нужно задать длину линии, и я не знаю как вычислить конечную координату для отрисовки линии.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.07.2021, 09:19
Ответы с готовыми решениями:

Пользователь вводит с клавиатуры длину линии и символ для заполнения линии
Помогите пожалуйста с заданием, у меня выводится горизонтальная линия Пользователь вводит с клавиатуры длину линии и символ для...

Вычислить длину линии вертикального разреза фигуры, площади фигуры слева и справа от линии разреза
Составить алгоритм и написать код программы, вычисляющей длину линии вертикального разреза фигуры y_razrez, значения площадей фигуры слева...

Найти длину линии
Найти длину линии x=a*cos5t, y=a*sin5t Помогите не пойму как делать..

1
29 / 22 / 8
Регистрация: 10.05.2013
Сообщений: 236
01.08.2021, 00:22
Лучший ответ Сообщение было отмечено KarKarasik как решение

Решение

Почитайте:
- уравнение окружности в полярной системе координат
- параллельный перенос системы координат
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 pygame
import math
 
pygame.init()
sc = pygame.display.set_mode((900, 900))
pygame.draw.rect(sc, (0, 255, 0), (445, 445, 10, 10))
l=100 # Фиксировання длина линии
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:
            L=int(((450-event.pos[0])**2+(450-event.pos[1])**2)**0.5) 
            alpha=math.acos((event.pos[1] - 450)/L) #+math.pi/2 
            if event.pos[0] - 450 < 0:
                x=450+l*math.cos(alpha+math.pi/2)
            else:    
                x=450-l*math.cos(alpha+math.pi/2)
            y=450+l*math.sin(alpha+math.pi/2)
            pygame.draw.line(sc, (255, 255, 255), (450, 450), (x, y), 5)
   
            pygame.display.update()
            sc.fill((0, 0, 0))
            pygame.draw.rect(sc, (0, 255, 0), (445, 445, 10, 10))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2021, 00:22
Помогаю со студенческими работами здесь

Найти длину линии
Дана таблица с координатами (х,у) семи точек. Изобразить их на рисунке и по выбору пользователя либо слева-направо, либо снизу-вверх, либо...

Найти длину линии
y=(e^2x+e^-2x)/2 x принадлежит преподаватель сказал что здесь нужно использовать формулу синуса, косинуса гиперболического, но я не...

Определить длину линии
Определить длину линии \rho = a{\sin}^{3}(\varphi /3) где (0\leq \varphi \leq 3\pi )

Найти длину линии
Надо найти длину линии . Все никак не пойму как сделать. Данная линия представляет собой астроиду, вытянутую вдоль одной из осей (при a ≠...

Вычислить длину дуги линии
Вычислить длину дуги линии


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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 https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru