编程论坛
注册
登录
编程论坛
→
C语言论坛
求助,计算俩圆交点坐标
追梦人zmrghy
发布于 2022-04-18 23:01, 1181 次点击
只有本站会员才能查看附件,请
登录
求助,
已知,如图,x1=130, y1=130, r1=80, x2=190, y2=210, r2=60.
求俩圆交点坐标。
5 回复
#2
rjsp
2022-04-19 08:39
就是个简单的数学题吧
当 圆心距离 在 半径之差 到 半径之和 之间有交集
两个圆的方程如下
(x - x1)^2 + (y - y1)^2 = r1^2
(x - x2)^2 + (y - y2)^2 = r2^2
两者相减,就得到一个关于 x和y 的一次方程,然后再带入上述任一方程就行了
#3
追梦人zmrghy
2022-04-20 00:18
回复 2楼 rjsp
我的初中,文凭是混下来的。。。
这个题,对高中生来讲就太简单了。
帮我,看一下,4楼,我的解题思路对吗???
[此贴子已经被作者于2022-4-20 00:24编辑过]
#4
追梦人zmrghy
2022-04-20 00:21
只有本站会员才能查看附件,请
登录
通过相似直角三角形,可以计算出中心点CP的坐标。
只有本站会员才能查看附件,请
登录
经点CP做X轴平行线,经点A做Y轴平行线,经点B做Y轴平行线。
知道点CP的坐标,计算出直角三角形,俩条直角边,就可以计算出A、B点的坐标。
只有本站会员才能查看附件,请
登录
因为 D,CP和O1C平行,所以∠1=∠2,又因为A,CP和O1O2垂直 ∠3=∠4。
因为∠3=∠4。所以,俩个三角形相似直角三角形。
可以,计算出AD和A,CP的长度。可以计算出A点坐标。
B点坐标,同理。。。
#5
wp231957
2022-04-20 09:14
回复 楼主 追梦人zmrghy
程序代码:
#include
<stdio.h>
#include
<math.h>
int
main()
{
float
a=
5
;
float
b=-
1812
;
float
c=
160020
;
float
d=b*b-
4
*a*c;
float
y1=(-b+sqrt(d))/
10
;
float
y2=(-b-sqrt(d))/
10
;
float
x1=
410.0
-
4.0
/
3.0
*y1;
float
x2=
410.0
-
4.0
/
3.0
*y2;
printf(
"
交点一坐标 (x:%.2f,y:%0.2f)
"
,x1,y1);
printf(
"
交点二坐标 (x:%.2f,y:%0.2f)
"
,x2,y2);
printf(
"
验证:\n
"
);
printf(
"
左侧:%.2f 右侧:%.2f \n
"
,(x1-
130
)*(x1-
130
)+(y1-
130
)*(y1-
130
),
80.0
*
80.0
);
printf(
"
左侧:%.2f 右侧:%.2f \n
"
,(x2-
190
)*(x2-
190
)+(y2-
210
)*(y2-
210
),
60.0
*
60.0
);
return
0
;
}
/*
PS C:\Users\Administrator> ./ct
交点一坐标 (x:130.00,y:210.00)交点二坐标 (x:206.80,y:152.40)验证:
左侧:6400.00 右侧:6400.00
左侧:3600.00 右侧:3600.00
*/
#6
wp231957
2022-04-20 10:00
回复 4楼 追梦人zmrghy
经由专业解方程组的模块验证结果:
程序代码:
from sympy import *
import math
x=Symbol(
"
x
"
)
y=Symbol(
"
y
"
)
solved = solve([(x-
130
)**
2
+(y-
130
)**
2
-
80
*
80
,(x-
190
)**
2
+(y-
210
)**
2
-
60
*
60
], [x, y])
for
i, v in enumerate(solved):
print(f
"
x{i}: {v[0].round(5)}, y{i}: {v[1].round(3)}
"
) # 保留
3
位小数
'''
PS C:\Users\Administrator> & C:/Programs/Python/python.exe d:/wp/toutiao.py
x0:
130
, y0:
210
x1:
206.80000
, y1:
152.400
'''
1