关于matlab中求坐标的问题
来源:百度知道 编辑:UC知道 时间:2024/06/15 19:22:06
谢谢~
既然已知的三个点是一定能组成正方形的,那么就要首先判断一下哪两个点的连线是这个正方形的对角线,当然就是连线长度最长的那两个点。假设这三个点的坐标是(x1,y1),(x2,y2),(x3,y3)。所求的点坐标是(x4,y4)。
首先求 f=[(x3-x1)^2+(y3-y1)^2]-[(x3-x2)^2+(y3-y2)^2]
f>0 => (x3,y3),(x1,y1)是对角线上的点
f=0 => (x1,y1),(x2,y2)是对角线上的点
f<0 => (x3,y3),(x2,y2)是对角线上的点
比如判断出来是(x1,y1),(x3,y3)
那么直接用这两点的中点也是(x2,y2),(x4,y4)的中点
即 (x1+x3)/2=(x2+x4)/2
(y1+y3)/2=(y2+y4)/2
导出来就是公式了。
随机取三个点,肯定能组成正方形??
如果三个点之间的角不是直角,那绝对不可能弄出正方形的。
另外这个点的次序也很重要。
细节弄清楚,肯定是可以的。
x3 = 1/2 (x1 + x2 + y1 - y2);
y3 = 1/2 (-x1 + x2 + y1 + y2);
x4 = 1/2 (x1 + x2 - y1 + y2);
y4 = 1/2 (x1 - x2 + y1 + y2);
只要知道正方形的一条对角线上的两个端点坐标就可以计算其它两个点了,已知三个点有些多,
已知一条对角线上的两个端点(x1,y1),(x2,y2),
则正方形其它两个顶点坐标:(x3,y3),(x4,y4),
如下式:
x3 = 1/2 (x1 + x2 + y1 - y2);
y3 = 1/2 (-x1 + x2 + y1 + y2);
x4 = 1/2 (x1 + x2 - y1 + y2);
y4 = 1/2 (x1 - x2 + y1 + y2);