Created
September 17, 2019 19:25
-
-
Save Lucs1590/048c9340aec4ff094cb9e2cf937b40d8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
__author__ = 'sidharthgoyal' | |
import math | |
increment = 0.1 | |
startingPoint = [1, 1] | |
point1 = [1,5] | |
point2 = [6,4] | |
point3 = [5,2] | |
point4 = [2,1] | |
def distance(x1, y1, x2, y2): | |
dist = math.pow(x2-x1, 2) + math.pow(y2-y1, 2) | |
return dist | |
def sumOfDistances(x1, y1, px1, py1, px2, py2, px3, py3, px4, py4): | |
d1 = distance(x1, y1, px1, py1) | |
d2 = distance(x1, y1, px2, py2) | |
d3 = distance(x1, y1, px3, py3) | |
d4 = distance(x1, y1, px4, py4) | |
return d1 + d2 + d3 + d4 | |
def newDistance(x1, y1, point1, point2, point3, point4): | |
d1 = [x1, y1] | |
d1temp = sumOfDistances(x1, y1, point1[0],point1[1], point2[0],point2[1], | |
point3[0],point3[1], point4[0],point4[1] ) | |
d1.append(d1temp) | |
return d1 | |
minDistance = sumOfDistances(startingPoint[0], startingPoint[1], point1[0],point1[1], point2[0],point2[1], | |
point3[0],point3[1], point4[0],point4[1] ) | |
flag = True | |
def newPoints(minimum, d1, d2, d3, d4): | |
if d1[2] == minimum: | |
return [d1[0], d1[1]] | |
elif d2[2] == minimum: | |
return [d2[0], d2[1]] | |
elif d3[2] == minimum: | |
return [d3[0], d3[1]] | |
elif d4[2] == minimum: | |
return [d4[0], d4[1]] | |
i = 1 | |
while flag: | |
d1 = newDistance(startingPoint[0]+increment, startingPoint[1], point1, point2, point3, point4) | |
d2 = newDistance(startingPoint[0]-increment, startingPoint[1], point1, point2, point3, point4) | |
d3 = newDistance(startingPoint[0], startingPoint[1]+increment, point1, point2, point3, point4) | |
d4 = newDistance(startingPoint[0], startingPoint[1]-increment, point1, point2, point3, point4) | |
print (i,',', round(startingPoint[0], 2),',' ,round(startingPoint[1], 2)) | |
minimum = min(d1[2], d2[2], d3[2], d4[2]) | |
if minimum < minDistance: | |
startingPoint = newPoints(minimum, d1, d2, d3, d4) | |
minDistance = minimum | |
#print i,' ', round(startingPoint[0], 2), round(startingPoint[1], 2) | |
i+=1 | |
else: | |
flag = False |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment