三角形,已知两点坐标和三个角度,如何求第三点坐标

zyx040404 2015-10-22 06:44:35
例如:已知点P1(x1,y1),点P2(x2,y2)和角度A1,A2,A3,如何求第三点P3(x3,y3)的坐标
...全文
7150 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
glxmf 2017-08-11
  • 打赏
  • 举报
回复
不错,多谢分享
qq_39397777 2017-07-05
  • 打赏
  • 举报
回复
如果空间三点呢,Z3=0,求X3,Y3
qq_39397777 2017-07-05
  • 打赏
  • 举报
回复
如果是空间中三点呢,其中Y不变
zyx040404 2015-10-25
  • 打赏
  • 举报
回复 1
谢谢各位 x3=(x1ctgA2+x2ctgA1+y2-y1)/(ctgA1+ctgA2) y3=(y1ctgA2+y2ctgA1+x1-x2)/(ctgA1+ctgA2) 1、2为已知点,3为未知点,1、2、3按逆时针编号。 这是正确的,ctg是cos,就是1 / tan
ipqtjmqj 2015-10-25
  • 打赏
  • 举报
回复
引用 16 楼 zyx040404 的回复:
谢谢各位 x3=(x1ctgA2+x2ctgA1+y2-y1)/(ctgA1+ctgA2) y3=(y1ctgA2+y2ctgA1+x1-x2)/(ctgA1+ctgA2) 1、2为已知点,3为未知点,1、2、3按逆时针编号。 这是正确的,ctg是cos,就是1 / tan
ctg是co-tangent,余切,简称cot或ctg cos是co-sine,余弦,简称cos
赵4老师 2015-10-23
  • 打赏
  • 举报
回复
ipqtjmqj 2015-10-23
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
看题意,应该是每个角对应的角度知道了, 而不是杂乱的, 所以应该有两解才对. 如果是杂乱的,那到A(3, 3)应该有6种分配, 再两边, 共12解
zyx040404 2015-10-23
  • 打赏
  • 举报
回复
引用 11 楼 paschen 的回复:
你现在知道两个点,也就是说确定了一条线,然后这条线与另外两条线的角度你也有,你就可以得到另外两条线的方程,这两条线的交点就是第三个坐标
能给个具体的算法吗?本人数学忘了
赵4老师 2015-10-23
  • 打赏
  • 举报
回复
paschen 2015-10-23
  • 打赏
  • 举报
回复
你现在知道两个点,也就是说确定了一条线,然后这条线与另外两条线的角度你也有,你就可以得到另外两条线的方程,这两条线的交点就是第三个坐标
zyx040404 2015-10-23
  • 打赏
  • 举报
回复
x3=x1+D13cosα13 =x1+D12sinA2/sin(A1+A2)cos(α12-A1) =x1+[D12sinA2/(sinA1sinA2)]/[(sinA1cosA2+cosA1sinA2)/( sinA1sinA2)](cosα12cosA1+sinα12sinA1) =x1+(D12cosα12ctgA1+D12sinα12)/(ctgA2+ctgA1) =x1+[(x2-x1)ctgA1+y2-y1]/(ctgA1+ctgA2) =(x1ctgA2+x2ctgA1+y2-y1)/(ctgA1+ctgA2) 同理,得y3。 D13为1、3距离,D12为1、2距离,α13为1、3方位角,α12为1、2方位角 本人中学数学都忘了,看不懂 另外,ctg就是atan吧?
zyx040404 2015-10-23
  • 打赏
  • 举报
回复
x3=(x1ctgA2+x2ctgA1+y2-y1)/(ctgA1+ctgA2) y3=(y1ctgA2+y2ctgA1+x1-x2)/(ctgA1+ctgA2) 1、2为已知点,3为未知点,1、2、3按逆时针编号。
zyx040404 2015-10-23
  • 打赏
  • 举报
回复
我在网上找到一个帖子 http://bbs.zhulong.com/102010_group_782/detail2149593 但是试了试,感觉结果不对
ipqtjmqj 2015-10-23
  • 打赏
  • 举报
回复
我在6楼说的思路不对,加或减的应该是角A1或A2而不是atan(y1 / x1)或atan(y2 / x2) 要旋转的角度应该是atan2((p2.y - p1.y), (p2.x - p1.x))而不是atan(y1 / x1)或atan(y2 / x2) 另外直接求对角的两组就行了。

#include <math.h> // fabs, sin, cos, atan, atan2
#include <stdio.h> // printf
struct Pt {double x; double y;};
void f(double a1, double a2, Pt p1, Pt p2)
{
	double Ag = atan2((p2.y - p1.y) , (p2.x - p1.x));
	double arr_A1[2] = { Ag - a1, Ag + a1};
	double arr_A2[2] = { Ag + a2, Ag - a2};

	int i;
	double A1, A2, kA1, kB1, kC1, kA2, kB2, kC2, rho1, rho2, x_left, x_right, y_left, y_right;
	for (i = 0; i != 2; ++i)
	{
		A1 = arr_A1[i];
		A2 = arr_A2[i];
		kA1 = cos(A1);
		kB1 = -cos(A2);
		kC1 = p2.x - p1.x;
	
		kA2 = sin(A1);
		kB2 = -sin(A2);
		kC2 = p2.y - p1.y;

		rho1 = (kB1 * kC2 - kB2 * kC1) / (kB1 * kA2 - kB2 * kA1);
		rho2 = (kA1 * kC2 - kA2 * kC1) / (kA1 * kB2 - kA2 * kB1);

		x_left = rho1 * cos(A1) + p1.x;
		x_right = rho2 * cos(A2) + p2.x;
		y_left = rho1 * sin(A1) + p1.y;
		y_right = rho2 * sin(A2) + p2.y;

		if (fabs(x_left - x_right) < 1e-2 
		&& fabs(y_left - y_right) < 1e-2)
		printf("P3(%.2lf,%.2lf)\n", x_left, y_left);
	}

}
int main()
{
	Pt p1 = {4, 1}, p2 = {2, 5};
	f(atan(1), atan(1), p1, p2); // 测试用的是一个斜着的等腰直角三角形
	return 0;
}
ipqtjmqj 2015-10-22
  • 打赏
  • 举报
回复
首先应该是有两个解。 其次是列方程组,但不能是二次的,应该是一次的 思路,设未知的两条边为rho1, rho2. 则P3的x坐标为rho1 * cos(A 加或减 atan(y1 / x1)) + x1 = rho2 * cos(B 加或减 atan(y2 / x2)) + x2 则P3的y坐标为rho1 * sintA 加或减 atan(y1 / x1)) + y1 = rho2 * sin(B 加或减 atan(y2 / x2)) + y2 由于角度可加可减,这就得到4个方程组,实际应该有两组不同的解。 注意里面只有rho1和rho2是未知数,并且是一次的,所以可以求解了 求出rho1, rho2后,再代进出,就求出P2的坐标了
纵横车 2015-10-22
  • 打赏
  • 举报
回复
由正弦定理(a/sinA=b/sinB=c/sinC)可求得另外两边长,然后设第三点坐标(x,y),满足这一点到另2点的距离为前面求出来的边长。
zyx040404 2015-10-22
  • 打赏
  • 举报
回复
引用 3 楼 wangmengmeng99 的回复:
要求什么就设什么 ,设第三个坐标是 (x3,y3),要求两个未知数,需要两个方程即可 ,假设有三个坐标球出来的三条边分别用a,b,c表示,其所对应的角分别为A1,A2,A3 根据a/sinA1=b/sinA2=c/sinA3,列出一个关于x3,y3的方程 ,再由任意一个角的余弦公式得到另一个关于 X3,Y3的方程 ,结合两个方程求解未知数 。。。。
已知条件没有三条边,有三条边的代码在网上有
程序小K 2015-10-22
  • 打赏
  • 举报
回复
要求什么就设什么 ,设第三个坐标是 (x3,y3),要求两个未知数,需要两个方程即可 ,假设有三个坐标球出来的三条边分别用a,b,c表示,其所对应的角分别为A1,A2,A3 根据a/sinA1=b/sinA2=c/sinA3,列出一个关于x3,y3的方程 ,再由任意一个角的余弦公式得到另一个关于 X3,Y3的方程 ,结合两个方程求解未知数 。。。。
zyx040404 2015-10-22
  • 打赏
  • 举报
回复
在网上找了一下午,没找到答案 好不容易碰到2个问一样问题的,还没有看的懂的答案
zyx040404 2015-10-22
  • 打赏
  • 举报
回复
数学问题,有人知道吗

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧