diff --git a/parabelfunc.py b/parabelfunc.py new file mode 100644 index 0000000..c5d40a6 --- /dev/null +++ b/parabelfunc.py @@ -0,0 +1,72 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + + +import os, sys, termios, tty, time, random +from math import sin, cos, tan, sqrt +from time import sleep + + +def berechneflugbahn(cow, xmin, xmax, ymin, ymax, startwinkel, startgeschwindigkeit, starthoehe): + x = 0 + y = x**2 + # in scala the resulting coordinates will be returned + scala = [] + erde = 9.81 + mond = 1.6 + jupiter = 24 + gravitation = erde + starthoehe = 0 + startwinkel = 26 * deg2rad + startgeschwindigkeit = 36 + loeschen = "y" + + # Calculate time of flight + flugdauer = startgeschwindigkeit * sin(startwinkel) / gravitation + schlafdauer = flugdauer / xmax + # Calculate maximum height + hoehe = 0.5 * gravitation * flugdauer**2 + starthoehe + + # calculate length of flight + wurfweite = ( + startgeschwindigkeit + * cos(startwinkel) + * (startgeschwindigkeit * sin(startwinkel) + sqrt(startgeschwindigkeit**2 * sin(startwinkel) ** 2 + 2 * gravitation * starthoehe)) + ) / gravitation + + # cowlength is 2, if cow is an UTF8-Icon, otherwise 1 + for x in range(xmin, xsteps - 1, cowlength): + # the formula, which generates the y position for the corresponding x, shamelessly ripped from some schoolbook and modified. + yold = y + y = (-(gravitation / (2 * startgeschwindigkeit**2 * cos(startwinkel) ** 2)) * x**2) + (tan(startwinkel) * x + starthoehe) + + # Ensure, that nothing has to be drawn outside the viewport + if y < ymax and y > ymin: + # Stash awa the coordinates into scala, which will be returned + scala += [x, int(y * 10 + 5) / 10] + else: + scala += [x, 0] + + xold = x + + return scala + + +# berechneflugbahn(cow, xmin, xmax, ymin, ymax, startwinkel, startgeschwindigkeit, starthoehe): + +cow = "🦝" +cowlength = len(cow) +xmax = 157 +ymax = 38 +ymin = 0 +xmin = 0 +xold = xmin +# pi is not defined by default +pi = 3.1416 +deg2rad = pi / 180 +xsteps = xmax +wurfweite = 0 +startwinkel = (34 / deg2rad,) +startgeschwindigkeit = 23 +starthoehe = 0 +print(berechneflugbahn(cow, xmin, xmax, ymin, ymax, startwinkel, startgeschwindigkeit, starthoehe))