Проблема
Как вы знаете, черепаха по умолчанию dr aws с координатой (0,0)
, а ваш мир по умолчанию отображается в прямоугольнике (-200, -150, 200, 150)
и имеет размер 400 x 300
.
Вы рисуете из исходного местоположения по умолчанию (0 + offset,0)
, и ваш экран отображается на
(0 + offset, -3, 180 + offset, 3)
.
Следовательно, последняя точка всегда dr aws в середине левая граница и все предыдущие нарисованные точки оставлены позади (каламбур). Вот почему вы не видите (симпатичный) график.
Решение
Требуется последняя точка ( круг) всегда должен быть нарисован в центре.
То, что вы хотели бы, выглядит примерно так:
turtle.setworldcoordinates(
-screenWidth / 2 + point_positionX,
-screenHeight / 2 + point_positionY,
screenWidth / 2 + point_positionX,
screenHeight / 2 + point_positionY
)
Где point_positionX
и point_positionY
- координаты последней нарисованной точки .
Позвольте мне дать вам кое-что, на что можно опираться:
'''
Graph Simulation (Limited to sine waves with amplitude 0.5 and frequency pi/180)
'''
import turtle # For drawing graph
import math # For calculating positions
# Initialise turtle
turtleSize = 1
turtle.speed(1)
# Initialise the sketcher
graphSketcher = turtle.Turtle()
graphSketcher.shape("circle")
graphSketcher.shapesize(turtleSize)
# Some constants
SCREEN_WIDTH = 180
SCREEN_HEIGHT = 3
AMPLITUDE = 0.5
WAVES_IN_SCREEN = 10
ANGULAR_FREQUENCY = math.pi/180
# Set the correct scale
turtle.setworldcoordinates(-SCREEN_WIDTH/2, -SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2)
for time in range(181):
# Draw the graph
graphSketcher.goto(
time,
AMPLITUDE * math.sin(2 * ANGULAR_FREQUENCY * time * WAVES_IN_SCREEN)
)
# move forward in time and space
# Try commenting this to see the difference!
turtle.setworldcoordinates(
-SCREEN_WIDTH / 2 + time,
-SCREEN_HEIGHT / 2,
SCREEN_WIDTH / 2 + time,
SCREEN_HEIGHT / 2
)
Вам просто нужно отработать это для смещений y. Удачи!