Найти - Пользователи
Полная версия: Помогите с математическим маятником
Начало » Python для новичков » Помогите с математическим маятником
1
MutantGreen
import graphics as gr
import math as m
SIZE_X = 800
SIZE_Y = 800
window = gr.GraphWin(“Mayatnik”, SIZE_X, SIZE_Y)

length = input (“Введите длину рычага”) # Длина рычага
G = input (“Введите силу притяжения”) # Сила притяжения
mass = input (“Введите массу тела”) # Масса тела
angle = input (“Введите начальный угол”) # Устанавливаем начальный угол
angle_velocity = input (“Введите ускорение”) # Ускорение
angle_accelaration = - G * m.sin(angle) # Начальное ускорение
center_point = gr.Point(SIZE_X / 2, SIZE_Y / 2) # Центр холста
coords = gr.Point(center_point.x + length * m.sin(angle),
center_point.y + length * m.cos(angle)) # Начальные координаты шара
# Фон
rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(SIZE_X, SIZE_Y))
rectangle.setFill('white')
rectangle.draw(window)
# Рисуем центр
center = gr.Circle(center_point, 20)
center.setFill('black')
center.draw(window)
# Рисуем шар
ball = gr.Circle(gr.Point(coords.x, coords.y), mass * 5)
ball.setFill('grey')
ball.draw(window)
def update_coords(coords):
new_point = gr.Point(center_point.x + length * m.sin(angle),
center_point.y + length * m.cos(angle))
velocity = gr.Point(new_point.x - coords.x,
new_point.y - coords.y)
return velocity
def get_angle(angle, angle_accelaration, angle_velocity):
angle_accelaration = -G * m.sin(angle)
angle += angle_velocity
angle_velocity += angle_accelaration
angle_velocity *= 0.99
return angle, angle_accelaration, angle_velocity
while True:
angle, angle_accelaration, angle_velocity = get_angle(angle, angle_accelaration, angle_velocity)
velocity = update_coords(ball.getCenter())
ball.move(velocity.x, velocity.y)
line = gr.Line(center_point, ball.getCenter())
line.draw(window)
gr.time.sleep(0.03)
line.undraw()
if window.checkMouse():
break
window.close()

Пытаюсь сделать так чтоб я сам вводил данные в программу но питон ругается и бьет такую ошибку
angle_accelaration = - G * m.sin(angle) # Начальное ускорени
TypeError: bad operand type for unary -: ‘str’
Кто-то может помочь?
MutantGreen
Вот файл программы прошу помогите мне
py.user.next
MutantGreen
Вот файл программы прошу помогите мне
  
...
length = input ("Введите длину рычага")  # Длина рычага
G = input ("Введите силу притяжения")  # Сила притяжения
mass = input ("Введите массу тела")  # Масса тела
angle = input ("Введите начальный угол")  # Устанавливаем начальный угол
angle_velocity = input ("Введите ускорение")  # Ускорение
...
Тут надо преобразовать все эти строки по такому принципу
  
length = float(input("Введите длину рычага"))  # Длина рычага

Тут я поправил ошибки, чтобы оно просто запустилось и что-то работало
import graphics as gr
import math as m
SIZE_X = 800
SIZE_Y = 800
window = gr.GraphWin("Mayatnik", SIZE_X, SIZE_Y)

length = float(input("Введите длину рычага: ")) # Длина рычага
G = float(input("Введите силу притяжения: ")) # Сила притяжения
mass = float(input("Введите массу тела: ")) # Масса тела
angle = float(input("Введите начальный угол: ")) # Устанавливаем начальный угол
angle_velocity = float(input("Введите ускорение: ")) # Ускорение
angle_acceleration = 0

center_point = gr.Point(SIZE_X / 2, SIZE_Y / 2) # Центр холста
coords = gr.Point(200, 200)

# Фон
rectangle = gr.Rectangle(gr.Point(0, 0), gr.Point(SIZE_X, SIZE_Y))
rectangle.setFill('white')
rectangle.draw(window)

# Рисуем центр
center = gr.Circle(center_point, 20)
center.setFill('black')
center.draw(window)

# Рисуем шар
ball = gr.Circle(gr.Point(coords.x, coords.y), mass * 5)
ball.setFill('grey')
ball.draw(window)

def update_coords(coords):
new_point = gr.Point(center_point.x + length * m.sin(angle),
center_point.y + length * m.cos(angle))
velocity = gr.Point(new_point.x - coords.x,
new_point.y - coords.y)
return velocity

def get_angle(angle, angle_acceleration, angle_velocity):
angle_acceleration = -G * m.sin(angle)
angle += angle_velocity
angle_velocity += angle_acceleration
angle_velocity *= 0.99
return angle, angle_acceleration, angle_velocity

while True:
angle, angle_acceleration, angle_velocity = get_angle(
angle, angle_acceleration, angle_velocity)
velocity = update_coords(ball.getCenter())
ball.move(velocity.x, velocity.y)
line = gr.Line(center_point, ball.getCenter())
line.draw(window)
gr.time.sleep(0.03)
line.undraw()
if window.checkMouse():
break

window.close()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB