I'm developing a Processing (Java) sketch that, given a certain angle, draws a dot at the edge of a rhombus.
I know the width of the rhombus, and its position, but I'm not sure how to calculate the x-y coordinates of a dot resting at its edge.
Are there any elegant solutions for this problem? Any help in pseudocode would be welcomed.
Let's square side length is
A, half-length is
H = A/2. Angle
Theta. Intersection point P.
All coordinates are relative to the square center.
Rotate square by
Alpha = Theta - Pi/4
if Alpha lies in range -Pi/4..Pi/4, then intersection point P' = (H, H*Tan(Alpha)) if Alpha lies in range Pi/4..3*Pi/4, then P' = (H*Cotangent(Alpha), H) if Alpha lies in range 3*Pi/4..5*Pi/4, then P' = (-H, -H*Tan(Alpha)) if Alpha lies in range 5*Pi/4..7*Pi/4, then P' = (-H*Cotangent(Alpha), -H)
Then rotate point
P' back by
S = Sqrt(2)/2 P.X = S * (P'.X - P'.Y) P.Y = S * (P'.X + P'.Y)
Example (data like your sketch):
A = 200, Theta = 5*Pi/12 H = 200/2 = 100, Alpha =Theta-Pi/4 = Pi/6 P'.X = H = 100 P'.Y = H * Tan(Alpha) = 100 * Tan(Pi/6) ~= 57.7 S = 0.707 P.X = 0.707 * (100 - 57.7) = 30 P.Y = 0.707 * (100 + 57.7) = 111