Algorithm 如何在已知宽度、长度和角度的情况下获得新坐标?

Algorithm 如何在已知宽度、长度和角度的情况下获得新坐标?,algorithm,math,geometry,trigonometry,Algorithm,Math,Geometry,Trigonometry,我有三个已知坐标的梯形。所以我需要用长度,宽度和角度创建第四个坐标。您可以将三角形假设为梯形的ADC。这一模式与预期的有所不同。余弦定律给出了角度,但应将其应用于模型的局部坐标。右边的箭头指向错误的对象,我得到了。即使旋转或翻转对象,坐标也不会出错 newWidth2是AB。newLength是AD。点C需要从A,D和角度D创建。数学。Pow是“的幂”,2是它的平方。(对于不理解此符号的人) 假设我没有C的坐标,我只知道A,D的坐标。我知道广告的长度,宽度2和宽度1。我可以从C的初始坐标得到角度

我有三个已知坐标的梯形。所以我需要用长度,宽度和角度创建第四个坐标。您可以将三角形假设为梯形的ADC。这一模式与预期的有所不同。余弦定律给出了角度,但应将其应用于模型的局部坐标。右边的箭头指向错误的对象,我得到了。即使旋转或翻转对象,坐标也不会出错

newWidth2是AB。newLength是AD。点C需要从A,D和角度D创建。数学。Pow是“的幂”,2是它的平方。(对于不理解此符号的人)

假设我没有C的坐标,我只知道A,D的坐标。我知道广告的长度,宽度2和宽度1。我可以从C的初始坐标得到角度ADC,当我改变DC的宽度2时,C的坐标会改变。所以C的坐标将基于AD的长度,角度D等等。最后我需要的是C的坐标,如果整个物体以任何角度旋转

新宽度2是AB。 新长度是广告。 点C需要从A、D和角度A或角度D创建。 数学。Pow是“的力量”,2是平方。(对于不懂这个符号的人来说)



目前尚不清楚究竟知道什么,能找到什么。我假设您知道
A
B
C
和长度
AB
=
width1
CD
=
width2
的坐标,并且需要找到
D
的坐标

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

  • 计算向量
    BA
  • 计算
    CD
    =
    width2/width1*BA
  • 计算
    D
    =
    C+CD

  • 您尚未明确指定给定的值/参数每个模型的值和参数将发生变化。它需要是动态的。我需要第三坐标和局部坐标的公式。请现在查看1个示例模型。你的答案需要与C的坐标相等。我有C的坐标,但它们只需要用ADC或它们的角度、宽度和长度生成。我还是不明白。您已经显示了4个点的坐标。你接下来要做什么?我的问题是,这是3D模型,我会改变CD的宽度,所以坐标需要根据给定的宽度自动从C点移动到。这需要是动态的。不是从开头给出的静态点开始。该点应根据长度AD、角度A、角度D等生成。@MadhuKumar,您有
    B
    的坐标吗?如果是,只需在我的回答中更改
    C
    D
    (并将向量
    CD
    的方向反转为
    DC
    )。如果没有,您如何知道线
    AB
    CD
    的方向?@MadhuKumar,那么如果您知道
    A
    的坐标,
    B
    D
    以及
    width1
    width2
    为什么你不能像我在前面的评论中建议的那样用我的答案来改变
    C
    D
    ?@MadhuKumar,我想说的是,如果你知道我在前面的问题中列出的所有内容,您不必使用角度
    ADC
    。并非每个解决方案都必须按照您希望的路线进行。所以我的问题是:您缺少什么数据来使用我的解决方案而不是您的解决方案?@MadhuKumar,我不知道如何进一步阐述它。如果您已经知道
    A
    B
    D
    width1
    width2
    的坐标,您可以用数据
    Xc
    计算
    C
    的坐标,如
    Xc=Xd+width2/width1*(Xb-Xa)
    (对于
    Y
    坐标)的例子也是如此*(46.9337-43.944)≈ <代码>133.7
    Yc
    =
    416.5659+24/36*(373.3758-409.2514)
    ≈ <代码>392.6
    //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));
    
    //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