#python #trigonometry #psychopy
Вопрос:
Я пытаюсь переместить изображение по изогнутому пути, в основном из координат (-5, -3) в (5, 3), следуя уравнению f(x) = -0,04 x^2 -2. Я пытаюсь понять, что я здесь делаю неправильно, потому что изображение перемещается по диагонали, а затем программа останавливается. Как мне следует создать кривую, вдоль которой будет строиться изображение?
import os
import time
from psychopy import visual, event, core, monitors
import glob
from math import log10, floor, pow
import numpy as np
win = visual.Window([600, 600], units = 'pix', monitor = 'testMonitor', color = [.4,.7,1], colorSpace = "rgb")
keys = event.BuilderKeyResponse()
path = "/Users/Desktop/"
dot1 = visual.ImageStim(win, image = path "crab.png", size = [5,5], units = 'deg', pos = (-5, -3))
FrameN = 50
speed = 1 # initial speed in whatever unit the stimulus use.
angle = 45 # initial angle in degrees
x_change = np.cos(angle) * speed # initial
y_change = np.sin(angle) * speed # initial
dot1.draw()
win.flip()
sign = 1
while True:
if FrameN == 50:
angle_current = np.rad2deg(np.arctan(y_change / float(x_change))) # float to prevent integer division
# More new stuff: Change direction angle (in degrees)
x_change = np.cos(angle_current 0.001) * speed
y_change = np.sin(angle_current 0.001 * sign) * speed
dot1.pos =(x_change, y_change)
if dot1.pos[0] >= 0 or dot1.pos[1] >= 0:
sign *= -1
print('y-direction switched')
break
if dot1.pos[0] < -5:
dot1.pos = (-5, -3)
print("x-change and y -change : {0}, {1} at {2}, {3}".format(x_change, y_change, dot1.pos[0], dot1.pos[1]))
if dot1.pos[0] >= 5:
dot1.pos = (5, -3)
print("x-change and y -change : {0}, {1} at {2}, {3}".format(x_change, y_change, dot1.pos[0], dot1.pos[1]))
break
if dot1.pos[1] < -3:
print('hit lower bound')
break
FrameN = 1
dot1.draw()
win.flip()
if event.getKeys(keyList=["escape"]):
core.quit()
core.wait(4)
core.quit()