diff options
author | JakobS1n <jakob@Jakobs-MacBook-Pro.local> | 2016-03-19 00:28:29 +0100 |
---|---|---|
committer | JakobS1n <jakob@Jakobs-MacBook-Pro.local> | 2016-03-19 00:28:29 +0100 |
commit | 010d6961537856039923c7fb47cafc1a36f7a499 (patch) | |
tree | 2040eaca5b115a6dee4bf22cf67e7cee6855b3bc | |
parent | 67a42828a25e505b7b2179281c59ec79d2d3dd51 (diff) | |
download | math-draw-010d6961537856039923c7fb47cafc1a36f7a499.tar.gz math-draw-010d6961537856039923c7fb47cafc1a36f7a499.zip |
Update
-rw-r--r-- | math-draw.py | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/math-draw.py b/math-draw.py new file mode 100644 index 0000000..544870e --- /dev/null +++ b/math-draw.py @@ -0,0 +1,159 @@ +############################################ +# Made by Jakob Stendahl +# Feel free to comit and add your name :[] +############################################ + +# Imports +import turtle +import math + +def setup(): + global startPosition # Et referansepunkt for sentrum + radius + global center # Et array med koordinatene til sentrum "0, 0" trengs for noen funksjoner + global radiusInt # Hvor stor radiusen er + global pointsInt # Hvor mange punkter det skal vaere rundt sirkelbuen + global multiplier # Hva gjeldene punkt skal ganges med for aa finne motstaaende punkt + global pointsArray # Array med plasseringen til alle punktene paa sirkelbuen + global differAngle # Vinkelen mellom hvert punkt fra sentrum + global currentHeading + + center = (0, 0) + radiusInt = 320 + pointsInt = 300 + multiplier = 3 + pointsArray = [[0 for x in range(pointsInt)] for x in range(pointsInt)] + +def drawPolygon(t, sideLength, numSides): + turnAngle = 360 / numSides + for i in range(numSides): + t.forward(sideLength) + t.right(turnAngle) + +def drawCircle(anyTurtle, radius): + circumference = 2 * 3.14159265359 * radius + sideLength = circumference / 360 + drawPolygon(anyTurtle, sideLength, 360) + +def calculatePoints(center, radius, intPoints, t): + global differAngle + fullCircle = 360 + differAngle = float(fullCircle) / float(pointsInt) + + foreachDivider = pointsInt + currDegree = 30 # sett til 90 for aa starte fra toppen + test = 0 + print differAngle + for i in xrange(foreachDivider): + print i + t.setx(0) + t.sety(0) + t.setheading(currDegree) + #t.pendown() + t.forward(radiusInt) + t.penup() + currDegree = currDegree - differAngle + #t.dot() + turtle.update() + print t.pos() + pointsArray[i][0] = t.pos()[0] + pointsArray[i][1] = t.pos()[1] + +def drawChord(t): + global currentHeading + currentPoint = 1 + + t.setheading(0) + currentHeading = 0 + #t.tracer(True) + for i in pointsArray: + nextPoint = currentPoint*multiplier + #print nextPoint + + while True: + if nextPoint <= pointsInt: + break + if nextPoint >= (pointsInt): + nextPoint = nextPoint - pointsInt + + + #print nextPoint + + #if nextPoint >= pointsInt: + #break + + x = nextPoint-currentPoint + angleMultiplier = differAngle*x + chordLengthOne = (radiusInt**2+radiusInt**2-2*radiusInt*radiusInt*math.cos(math.radians(angleMultiplier))) # a = radius^2 + radius^2 - 2 * radius * radius * cosVinkel + chordLengthOne = math.sqrt(chordLengthOne) + + t.setx(i[0]) + t.sety(i[1]) + + nextPointHeading = t.towards(pointsArray[nextPoint-1][0], pointsArray[nextPoint-1][1]) + + + + t.setheading(nextPointHeading) + + t.setx(i[0]) + t.sety(i[1]) + + turtle.update() + t.pendown() + t.forward(chordLengthOne) + t.penup() + print currentPoint + currentPoint = currentPoint + 1 + if currentPoint > (pointsInt): + break + + + + +def main(): + # Definer "skilpadde" + wn = turtle.Screen() + wheel = turtle.Turtle() + + # Skru av tegne-animasjon + wheel.tracer(False) + #turtle.tracer(0, 0) + + # Faa sirkelen til aa starte aa tegnes radius fra sentrum + wheel.penup() + wheel.sety(radiusInt) + startPosition = wheel.pos() + + # Tegn teksten + wheel.penup() + wheel.setx(-300) + currXY = wheel.pos() + wheel.pendown() + wheel.write("Radius: " + str(radiusInt)) + wheel.penup() + wheel.sety(currXY[1] + 10) + wheel.pendown() + wheel.write("Points: " + str(pointsInt)) + wheel.penup() + + # Tegn sirkelen + wheel.goto(startPosition) + wheel.pendown() + drawCircle(wheel, radiusInt) + wheel.penup() + + # Calculate points + calculatePoints(center, radiusInt, pointsInt, wheel) + + # tegn korder + drawChord(wheel) + + + # Skjul skilpadden + wheel.hideturtle() + + turtle.update() # Refresh screen + wn.exitonclick() + +setup() +main()
\ No newline at end of file |