
Mar 29th, 2012, 05:30 PM
#1
Thread Starter
Lively Member
Fourth vertex of a Rectangle
Hi
If 3 Vertices' xy coordinates are given from a rectangle, how to calculate the fourth one's xy?
The rectangle could be in any position.
Thanks.

Mar 29th, 2012, 05:39 PM
#2
Re: Fourth vertex of a Rectangle
First you need to orient the three vertices. After that it's very simple.
Consider the three vertices as three points in a triangle, A, B, and C. We need to figure out which vertex corresponds to the right angle. You can compute the angle from a point P to points Q and R as
angle(P, Q, R) = Acos[(QP) dot (RP) / [QP * RP]]
where Acos is the inverse cosine, (QP) etc. is vector subtraction (subtract componentwise), QP etc. is the magnitude of a vector (sum the squares of the components and take the square rootthis is the content of the Pythagorean theorem), and (QP) dot (RP) is the dot product (multiply the x components together, then the y components, etc. and add the results).
Compute angle(A, B, C), angle(B, C, A), and angle(C, A, B). One of these should be very, very close to 90 degrees (pi/2 radians). If it's the first one, the vertex is at A; the second gives a vertex at B, and the third a vertex at C.
Now suppose the vertex is at P and the other two points are Q and R. The fourth point on the rectangle is at Q + (RP).
The time you enjoy wasting is not wasted time.
Bertrand Russell
< Remember to rate posts you find helpful.

Mar 29th, 2012, 06:23 PM
#3
Thread Starter
Lively Member
Re: Fourth vertex of a Rectangle
Thanks, really good idea to calculate 90 angle. But write in VB takes time.

Mar 29th, 2012, 07:46 PM
#4
Re: Fourth vertex of a Rectangle
If you need help with coding my idea, you can ask in the appropriate forum (the .NET or VB6 ones depending on your language). If you need a formula expanded or explained you can ask here in the maths forum.
The time you enjoy wasting is not wasted time.
Bertrand Russell
< Remember to rate posts you find helpful.

Mar 29th, 2012, 08:40 PM
#5
Thread Starter
Lively Member
Re: Fourth vertex of a Rectangle
Ye, I will try to code first.
Thanks

Mar 30th, 2012, 10:15 AM
#6
Thread Starter
Lively Member
Re: Fourth vertex of a Rectangle
Code:
Partial Public Class Window2
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Private Sub msg()
Dim Point1 As Point = New Point(1, 1)
Dim Point2 As Point = New Point(4, 1)
Dim Point3 As Point = New Point(1, 5)
Dim PointWithBiggestAngle As Integer = GetPointOnBiggestAngle(Point1, Point2, Point3)
Dim P, Q, R As Point
Select Case PointWithBiggestAngle
Case 1
P = Point1
Q = Point2
R = Point3
Case 2
P = Point2
Q = Point1
R = Point3
Case 3
P = Point3
Q = Point2
R = Point1
End Select
Dim Point4X As Long = Q.X + (R.X  P.X)
Dim Point4Y As Long = Q.Y + (R.Y  P.Y)
Debug.WriteLine(Point4X & " " & Point4Y)
End Sub
Private Sub Window2_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
msg()
End Sub
Private Function GetPointOnBiggestAngle(ByVal P As Point, ByVal Q As Point, ByVal R As Point) As Integer
Dim AngleOfP As Double = GetAngle(P, Q, R)
Dim AngleOfQ As Double = GetAngle(Q, P, R)
Dim AngleOfR As Double = GetAngle(R, Q, P)
If AngleOfP > AngleOfQ AndAlso AngleOfP > AngleOfR Then
Return 1
ElseIf AngleOfQ > AngleOfP AndAlso AngleOfQ > AngleOfR Then
Return 2
ElseIf AngleOfR > AngleOfP AndAlso AngleOfR > AngleOfQ Then
Return 3
Else
Return 0
End If
End Function
Private Function GetAngle(ByVal anglePoint As Point, ByVal Q As Point, ByVal R As Point) As Double
Dim a As Double = Math.Sqrt((Q.X  R.X) ^ 2 + (Q.Y  R.Y) ^ 2) 'anglePoint's opposite side length
Dim b As Double = Math.Sqrt((anglePoint.X  R.X) ^ 2 + (anglePoint.Y  R.Y) ^ 2) ' Q's opposite side length
Dim c As Double = Math.Sqrt((Q.X  anglePoint.X) ^ 2 + (Q.Y  anglePoint.Y) ^ 2)
Return Math.Acos((b ^ 2 + c ^ 2  a ^ 2) / (2 * b * c))
End Function
End Class
Last edited by sharethl; Mar 30th, 2012 at 10:19 AM.
Posting Permissions
 You may not post new threads
 You may not post replies
 You may not post attachments
 You may not edit your posts

Forum Rules

Click Here to Expand Forum to Full Width
Survey posted by VBForums.
