标题:求助,计算俩圆交点坐标
只看楼主
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
结帖率:97.22%
已结贴  问题点数:20 回复次数:5 
求助,计算俩圆交点坐标

求助,
已知,如图,x1=130, y1=130, r1=80, x2=190, y2=210, r2=60.
求俩圆交点坐标。
搜索更多相关主题的帖子: 坐标 计算 
2022-04-18 23:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
就是个简单的数学题吧

当 圆心距离 在 半径之差 到 半径之和 之间有交集

两个圆的方程如下
(x - x1)^2 + (y - y1)^2 = r1^2
(x - x2)^2 + (y - y2)^2 = r2^2
两者相减,就得到一个关于 x和y 的一次方程,然后再带入上述任一方程就行了
2022-04-19 08:39
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 
回复 2楼 rjsp
我的初中,文凭是混下来的。。。
这个题,对高中生来讲就太简单了。

帮我,看一下,4楼,我的解题思路对吗???

[此贴子已经被作者于2022-4-20 00:24编辑过]

2022-04-20 00:18
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:0 


通过相似直角三角形,可以计算出中心点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点坐标,同理。。。
2022-04-20 00:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 楼主 追梦人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

 */

DO IT YOURSELF !
2022-04-20 09:14
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 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
'''

DO IT YOURSELF !
2022-04-20 10:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508882-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.182858 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved