2017-04-02 2 views
0

Ich war für mehrere Tage auf diese Aufgabe fest. Obwohl, sollte die Lösung einfach sein. Ich verwende Mathematik- und Turtle-Bibliotheken zum Zeichnen von 3 Graphen: Sinus, Kosinus und Tangens mit der Amplitude 200. Das Problem ist, dass ich den Tangentengraph nicht so erstellen kann, wie er gezeichnet werden sollte. Dies ist, was ich tun sollte:Python: Zeichne Tangentialdiagramm mit Mathematik & Turtle-Bibliotheken

desired graph

Das ist, was ich habe:

actual result

Wie Sie sehen, meine Schildkröte nach oben geht und mehr kommt nicht zurück. Bitte, schlagen Sie mir nicht vor, numpy zu verwenden. Es ist meine Aufgabe. Vielen Dank für den Fortschritt!

import math 
import turtle 

ws = turtle.Screen() 
ws.bgcolor("white") 
t = turtle.Turtle() 
for i in [(0,250), (0,0), (0,-250), (0,0), (400,0), (0,0)]: 
    t.goto(i, None) 
    t.write(i, font=("Arial", 12)) 

t.color("red") 

for angle in range(360): 
    y = math.sin(math.radians(angle))   
    t.goto(angle, y * 200) 

t.penup() 
t.setpos(0,200) 
t.goto(0,200) 
t.pendown() 
t.color("blue") 

for angle in range(360): 
    y = math.cos(math.radians(angle))  
    t.goto(angle, y * 200) 

t.penup() 
t.setpos(0,0) 
t.goto(0,0) 
t.pendown() 
t.color("green") 

for angle in range(360): 
    y = math.tan(math.radians(angle)) 
    t.goto(angle, y * 200) 

ws.exitonclick() 
+2

Es wird leichter sein, wenn zu helfen Bearbeiten Sie diese Frage, um den Code einzuschließen, der nicht das richtige Ergebnis liefert. – Craig

+0

Ja, du hast Recht. Danke für den Kommentar! –

Antwort

0

Um zu zeigen, dass es funktionieren sollte, ist unten meine minimalistische Umsetzung des Zeichnens Sinus, Cosinus und Tangens Schildkröte Grafiken mit:

import math 
from turtle import Turtle, Screen 

RESOLUTION = 0.1 

def plot(x_points, y_points): 
    for i, y in enumerate(y_points): 
     if abs(y) <= 2.0: 
      yertle.goto(x_points[i], y) 
      yertle.pendown() 
     else: 
      yertle.penup() 

    yertle.penup() 

screen = Screen() 
screen.setworldcoordinates(0, -1.5, 2 * math.pi/RESOLUTION, 1.5) 

yertle = Turtle() 
yertle.penup() 

x = range(int(2 * math.pi/RESOLUTION)) 

yertle.color("blue") 
plot(x, (math.cos(n * RESOLUTION) for n in x)) 

yertle.color("red") 
plot(x, (math.sin(n * RESOLUTION) for n in x)) 

yertle.color("dark green") 
plot(x, (math.tan(n * RESOLUTION) for n in x)) 

screen.exitonclick() 

OUTPUT

enter image description here

Meine Vermutlich warten Sie nicht lange genug auf die Tangente zum Plot, dh es wird langsam viel ausgelotet f zeigt aus dem Fenster und erscheint schließlich wieder auf dem Bildschirm. Mein Code funktioniert um dieses Problem herum.

0

versuchen Sie es. In der Nähe für mich zu arbeiten, keine Zeit besser:

für Winkel im Bereich (360): y = 0

y = math.tan(math.radians(angle)) 
if y<1 and y>-1: 
    t.goto(angle, y * 200) 
+0

Was bedeutet 'für Winkel im Bereich (360): y = 0'? –

0

Mit asipmtotas

for angle in range(360): 
    t.penup() 
    y = math.tan(math.radians(angle)) 

    if y<1 and y>-1: 
     t.pendown() 
     t.goto(angle, y * 200) 
    else: 
     t.penup() 
     #t.pendown() 
     t.goto(angle, 200)