Finding third vertexes of any triangle where 2 vertex known and all sides length known

778 Views Asked by At

I am working with a CAD engine in the head but i working on code only. I have a rectangular tube that need to be put at an angle. I so have the diagonal of the tube where it has to start and stop but i cannot find the long sides. Trying to find the actual side length for the equivalent diagonal and cutting of the tube is pieces i have found myself searching since this morning how to calculate my issue and i found a way to solve this and couple other issues but i don't know how i can find what i am looking for.

What i found is that if i take the central point (x,y) of the diagonal and link the second unknown vertex of the diagonal i obtain an isosceles triangle. I know the diagonal length and the tube width so the side are Diagonal / 2 and tube size in that case 1-1/4 inch. So i know the 3 sides, the end of the diagonal and the center point. i know that knowing all these i still can end up with 2 possible vertex but i know where the good one as to be compared to the 2 points i know.

Knowing this final point will allow me to calculate my actual tube angle compare to the rest of my drawing and size it length wise along that newly found vertex.

My code does not have access to the cad engine per say nor i have any 2d/3d library. So i don't have any fancy methods and i would like to stay away from matrix.

Added image to help show what i am trying to do. enter image description here

What I know : A, B, C, AB, BC and since i know BC ad my tube end 90 degree corner and from C either diagonals will be same length so i have an Isosceles triangle

Therefore i know that CD = CE = BC

BD is variable but known as well

I know that for that diagonal 2 triangles are possible : BCD and BCE but i do know i want the one where the unknown third vertex has to be X < Bx and Y > By. I just don't know how to find those 2 points.

Any clue, ideas, solutions are welcome.

1

There are 1 best solutions below

7
On BEST ANSWER

From your setup, say $A=(a_1,a_2)$ and $B=(b_1,b_2)$, and call the "wanted point" W.

You know that $\vec{AB}=(b_1-a_1,b_2-a_2)$ and so $AB$ is inclined by an angle $\arctan(\frac{b_2-a_2}{b_1-a_1})$ to the horizontal. You can compute this angle as a number $\theta$, and $\theta=\angle ABW$.

Now think of the circle centered at $C$ with diameter $d=AB$ and radius $r=\frac{d}{2}$. Notice that $D$ is on this circle, because $\angle ADB$ is a right angle.


Note added: Suppose you only need to find point $D$. It is on the circle, at an angle $\angle BCD$ counterclockwise from point $B$. Note that $\angle BCD=2\angle BAD$, because they are central and exterior angles subtending the same arc of a circle (or look at the isosceles triangle $ACD$). Angle $\sin(\angle BAD)=\frac{1.25}{d}$ (see below).

To find the coordinates of $D=(d_1,d_2)$, if $B=(b_1,b_2)$ and $C=(c_1,c_2)$, use translation and rotation transformations to get

$$d_1=c_1+(b_1-c_1)\cos(\angle BAD)-(b_2-c_2)\sin(\angle BAD)\\ d_1=c_2+(b_1-c_1)\sin(\angle BAD)+(b_2-c_2)\cos(\angle BAD),$$

therefore

$$d_1=c_1+(b_1-c_1)\frac{\sqrt{d^2-1.25^2}}{d}-(b_2-c_2)\frac{1.25}{d}\\ d_2=c_2+(b_1-c_1)\frac{1.25}{d}+(b_2-c_2)\frac{\sqrt{d^2-1.25^2}}{d}.$$


You know the length $AB=d$, and you know the length $BD=1.25$. In right triangle $ADB$, then, $\frac{BD}{AB}=\sin(\angle DAB)$, so $\angle DAB=\arcsin\left(\frac{1.25}{d}\right)$ and $\angle ABD=90^{\circ}-\arcsin\left(\frac{1.25}{d}\right)$.

Now $\angle WBD=\angle ABD-\theta$, which you can calculate as a number, and also $\sin \angle WBD=\frac{1.25}{WB}$, which lets you calculate $WB$.

This gives you the amount to subtract from the $x$ coordinate of $B$ to find $W$.

I hope that helps.