如何获得宽度,长度和角度的新坐标?

时间:2018-01-10 05:54:58

标签: algorithm math geometry trigonometry

我有三个已知的梯形梯形。所以我需要创建我所拥有的长度,宽度和角度的第四个坐标。您可以将三角形作为ADC从梯形假设这个问题。该模型的预期不同。余弦定律给出了角度,但它应该应用于模型的局部坐标。右侧我显示箭头指向我正在得到的错误对象。即使我旋转对象或翻转它,坐标也不应该出错。

newWidth2是AB。 newLength是AD。需要从角度为D的A,D创建C点.Math.Pow是"对于"的功率。 2是它的正方形(对于谁不能理解这种表示法)。

假设我没有C的坐标。我只知道A,D坐标。我知道AD,Width2和Width1的长度。我可以从C的初始坐标获得角度ADC,其中当我改变DC的Width2时,C的坐标将变化。因此C的坐标将基于AD的长度,角度D等。最后,如果整个物体以任何角度旋转,我需要的是C的坐标。

newWidth2是AB。 newLength是AD。 需要从角度A或角度D的A,D创建点C. Math.Pow是"的力量" 2是它的正方形(对于谁不能理解这种表示法)。

//Initially I will have Coordinates for C but later I should remove them and create from the model width and heights. So I can't take input as C Coordinates of (X3,Y3) which I already have. 
            //distance formula
            newWidth2 = Math.Sqrt(Math.Pow(CoordX3 - CoordX5, 2) + Math.Pow(CoordY3 - CoordY5, 2));
    //from the formula ->  b2 = a2 + c2 - 2acCos(B)
        diagangle = Math.Acos((Math.Pow(newWidth2, 2) - Math.Pow(newdiagonal, 2) - Math.Pow(newLength, 2)) / (-2 * (newdiagonal) * (newLength))   );
//I am getting this C coordinates as wrong.
     //for getting C (third coordinates)            
        xcoord3 = CoordX5 + (newWidth2 * Math.Cos(diagangle));
        ycoord3 = CoordY5 + (newWidth2 * Math.Sin(diagangle));

enter image description here

//sample values of one model
Width1   36
Width2   24
Length     88.0783
A
CoordX1 43.944
CoordY1 409.2514
B
CoordX2 46.9337
CoordY2 373.3758
C
CoordX3 133.7111
CoordY3 392.6488
D
CoordX4 131.718
CoordY4 416.5659

1 个答案:

答案 0 :(得分:1)

目前尚不清楚究竟知道什么以及将要发现什么。我假设您知道ABC和长度AB = width1CD = width2的坐标,需要找到D的坐标。

我认为如果将此问题视为向量问题而不是三角函数问题,则此问题更容易解决。如果您查看向量BACD,您可能会看到它们是共线的|BA| = width1|CD| = width2。这意味着向量CD = width2/width1 * BA。不是你可以通过以下方式轻松计算D的坐标。

  1. 计算向量BA
  2. 正在计算CD = width2/width1 * BA
  3. 正在计算D = C + CD