2015-03-15 4 views
1

В настоящее время я работаю с библиотекой черепах python.Функция масштабирования в python? (2.7.9)

Я работаю над своим проектом среднего класса для моего класса кодирования, и мой проект - рисовать кривые cos, sin и касательные, используя черепаху, а также их обратные функции.

Моя проблема заключается в том, что когда я кодирую обратный грех, график появляется слишком мало и не может быть замечен пользователем. Мне было интересно, есть ли функция масштабирования или способ растянуть график, чтобы увеличить его?

Вот мой код arcsin:

def drawarcsincurve(amplitude, period, horShift, verShift): 
    turtle.speed(0) 
    startPoint = -1 
    turtle.goto(startPoint, math.asin(startPoint)) 
    turtle.pendown() 
    for angles in range(-1,1): 
     y = math.asin(angles) 
     turtle.goto(angles,y) 
+1

Вам не нужно увеличить, просто увеличить амплитуду. Используйте значение масштабирования и умножьте его на выход вашей функции: 'y = 10 * math.sin (углы)' значение 10 является просто примером. Вы можете использовать любое значение, которое вам подходит. –

+0

Правильно, я на самом деле пробовал это изначально, но все, что дает мне, - это просто более длинная линия, которая выглядит как криволинейная кривая дуги. Спасибо за ответ кстати. @reculated Spline –

+0

Вам также придется развернуть в горизонтальном (x) направлении. Я просто заметил, что у вас есть два параметра для функции «амплитуда» и «период». Используйте эти параметры. –

ответ

1

Ваша главная проблема здесь, я думаю, это диапазон, в котором ваши являются итерация вашей angles переменного. Линия

for angles in range(-1,1): 

выполнит цикл только два раза, с angle == 1 и angle == 0 - т.е. это эквивалентно использованию

for angles in [-1,0]: 

Тип range(-1,1) в окне интерпретатора Python, чтобы понять, что я имею в виду.

Возможно, вас тоже путают имена. Вы вызываете переменную цикла angles, но на самом деле это отношение (значение синуса, которое вы вычисляете обратно).

Возможно, вы действительно хотите что-то, что итерации в диапазоне -1 до 1 в довольно небольших шагах. Позволяет выбрать 0.01 как наш шаг (это произвольно)

Я изменил ваш код напрямую, а не выполнил свою собственную реализацию.

  1. Я установил масштабный коэффициент (plot_scale), который эквивалентен зум, который, как я думаю, вам нужен в исходном вопросе.
  2. Я оставил свои исходные аргументы функции, хотя я их не использую. Я думал, что тебе захочется поиграть с ними позже.

def drawarcsincurve(amplitude, period, horShift, verShift): 
    plot_scale = 100 # Arbitrary value - up to you - similar to "zoom" 
    turtle.speed(1) 
    turtle.penup() 
    startPoint = -1 
    turtle.goto(plot_scale*startPoint, plot_scale*math.asin(startPoint)) 
    turtle.pendown() 
    for angles in range(-100,100): 
     sinval = 1.0 * angles/100 # this will run -1 to 1 in 0.01 steps 
     y = math.asin(sinval) 
     turtle.goto(plot_scale*sinval,plot_scale*y) 

Это выходы:

Plot of arcsin curve on Python Tk graphics

+0

Благодарим за отзыв!Это замечательно –

+0

Спасибо, пожалуйста, примите и поддержите ответ, чтобы сказать спасибо здесь: http://stackoverflow.com/help/someone-answers –