Algorithm 如何在已知宽度、长度和角度的情况下获得新坐标?
我有三个已知坐标的梯形。所以我需要用长度,宽度和角度创建第四个坐标。您可以将三角形假设为梯形的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是平方。(对于不懂这个符号的人来说)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的初始坐标得到角度
目前尚不清楚究竟知道什么,能找到什么。我假设您知道
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.7Yc
=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