I wish to know apart from distance formula, is there any other way to calculate the third point of an equilateral triangle ?. I was going through the below snippet which does similarity transform(Average faces) between two points. I don't understand how they are calculating the third point.
As far as reading the code through multiple iterations, I understood, they are calculating the third point by making use of sin and cosine and multiplying their difference.
def similarityTransform(inPoints, outPoints):
s60 = math.sin(60*math.pi/180)
c60 = math.cos(60*math.pi/180)
inPts = np.copy(inPoints).tolist()
outPts = np.copy(outPoints).tolist()
# The third point is calculated so that the three points make an equilateral triangle
xin = c60*(inPts[0][0] - inPts[1][0]) - s60*(inPts[0][1] - inPts[1][1]) + inPts[1][0]
yin = s60*(inPts[0][0] - inPts[1][0]) + c60*(inPts[0][1] - inPts[1][1]) + inPts[1][1]
inPts.append([np.int(xin), np.int(yin)])
xout = c60*(outPts[0][0] - outPts[1][0]) - s60*(outPts[0][1] - outPts[1][1]) + outPts[1][0]
yout = s60*(outPts[0][0] - outPts[1][0]) + c60*(outPts[0][1] - outPts[1][1]) + outPts[1][1]
outPts.append([np.int(xout), np.int(yout)])
# Now we can use estimateRigidTransform for calculating the similarity transform.
tform = cv2.estimateAffinePartial2D(np.array([inPts]), np.array([outPts]))
return tform[0]
Now i wish to know if we can calculate the third point using sin and cosine and the difference between the points ?.
