aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakobS1n <jakob@Jakobs-MacBook-Pro.local>2016-03-19 00:28:29 +0100
committerJakobS1n <jakob@Jakobs-MacBook-Pro.local>2016-03-19 00:28:29 +0100
commit010d6961537856039923c7fb47cafc1a36f7a499 (patch)
tree2040eaca5b115a6dee4bf22cf67e7cee6855b3bc
parent67a42828a25e505b7b2179281c59ec79d2d3dd51 (diff)
downloadmath-draw-010d6961537856039923c7fb47cafc1a36f7a499.tar.gz
math-draw-010d6961537856039923c7fb47cafc1a36f7a499.zip
Update
-rw-r--r--math-draw.py159
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