Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Geometry 找到一个与其他3个相接触的圆圈_Geometry - Fatal编程技术网

Geometry 找到一个与其他3个相接触的圆圈

Geometry 找到一个与其他3个相接触的圆圈,geometry,Geometry,我们有一个半径为10的红色圆圈。在这个红色圆圈上,还有另外3个蓝色圆圈(半径8),它们的间距为120°。 点C是两个蓝色圆圈的中间,有一个绿色圆圈(半径2) 我需要找到黄色圆圈的坐标和半径,它同时接触到两个蓝色圆圈和绿色圆圈。我知道如何用3个点做一个圆圈,但黄色圆圈必须只接触其他3个点。每个圆上只有一个交点 从图片上我们可以看出这是不正确的。黄色圆圈与蓝色圆圈的两点接触 在本例中,有3个蓝色圆圈,但在红色圆圈上应使用2、3、4和5个等间距的蓝色圆圈 这个问题我已经讨论了好几天了,救命啊 我试着为

我们有一个半径为10的红色圆圈。在这个红色圆圈上,还有另外3个蓝色圆圈(半径8),它们的间距为120°。 点C是两个蓝色圆圈的中间,有一个绿色圆圈(半径2)

我需要找到黄色圆圈的坐标和半径,它同时接触到两个蓝色圆圈和绿色圆圈。我知道如何用3个点做一个圆圈,但黄色圆圈必须只接触其他3个点。每个圆上只有一个交点

从图片上我们可以看出这是不正确的。黄色圆圈与蓝色圆圈的两点接触

在本例中,有3个蓝色圆圈,但在红色圆圈上应使用2、3、4和5个等间距的蓝色圆圈

这个问题我已经讨论了好几天了,救命啊

我试着为iphone做这件事,但任何一段代码都是受欢迎的


如果你有它们的位置和半径值,我认为这很简单。 如果黄色圆圈和目标圆圈之间的距离与所需值匹配,则可以进行比较:

为了求两点(1和2)之间的距离,我们将使用方程
d=sqrt((x2-x1)^2+(y2-y1)^2)

但是我们必须考虑到它们的半径,所以我们只需要比较一下,考虑到目标圆的半径,黄色圆边缘上的点之间的距离是否在目标圆内。半径

iOS有可用的数学函数,因此我们可以将上面的等式转化为如下内容:

- (BOOL)yellowCircleCrossesTargetCircleWithCenter:(CGPoint)center andRadius:(CGFloat)radius {
    //consider x, y, r and the like, like real numbers.
    //this is just an example

    CGPoint yellowCircle = CGPointMake(x,y);
    CGFloat yellowCircleRadius = r;
    CGPoint targetCircle = center
    CGFloat targetCircleRadius = radius;

    double distance = sqrt(pow(targtetCircle.x-yellowCircle.x)+pow(targetCircle.y-yellowCircle.y));

    BOOL isAboveMinimumLimit = (yellowCircleRadius - targetCircleRadius) < distance;
    BOOL isBelowMaximumLimit = (yellowCircleRadius + targetCircleRadius) > distance;

    return isAboveMinimumLimit && isBelowMaximumLimit;
        //returns YES if yellow circle's border crosses the target circle
}
-(BOOL)黄色圆圈交叉目标圆圈,中心:(CGPoint)中心和半径:(CGFloat)半径{
//考虑x,y,r等等,比如实数。
//这只是一个例子
CGPoint黄圈=CGPointMake(x,y);
cglaradius=r;
CGPoint TARGETCYCLE=中心
CGFloat targetCircleRadius=半径;
双距离=sqrt(功率(targetCircle.x-yellowCircle.x)+功率(targetCircle.y-yellowCircle.y));
BOOL isAboveMinimumLimit=(黄色圆圈-目标圆圈)<距离;
布尔值低于最大极限=(黄色圆圈+目标圆圈)>距离;
返回IsAboveMimumLimit&&isBelowMaximumLimit;
//如果黄色圆圈的边框与目标圆圈相交,则返回“是”
}
您必须为每个要检查的圆运行此程序。如果所有圆圈都返回YES,则黄色将它们全部交叉。

让我们开始

blue radius = R
green radius = r
unknown yellow radius is F
and |BC| = P
然后| GB |=R+F,因为接触点的半径垂直于公切线,所以它们是共线的,对于直角BGC三角形

(R+F)^2=(R+F)^2+p^2
(根据毕达哥拉斯定理)

对于你的情况,R=8,R=2,p=10*Sin(Pi/3)=5*Sqrt(3),p^2=75

F = (75 + 4 - 64) / (2 * (8 - 2)) = 15/12 = 5/4
草图(另一点名称):

这真的与iOS有关吗?你的问题不更像是数学/几何问题吗?我甚至看不到黄色圆圈哈哈。它与ios有关,因为我需要找到在ios上计算黄色圆圈中心和半径的代码。但是,是的,这是一个几何问题的开始。我投票结束这个问题,因为这是一个数学问题,一旦你知道了所涉及的数学,就应该尝试编写所需的代码。当你有一个实现数学公式的特定编码问题时,他们会回来发布你的代码,并解释你遇到的问题。对不起,我不想知道他们是否接触,我需要找到黄色圆圈的坐标和半径。我想我当时误解了。抱歉:)谢谢,我必须先了解所有这些,但是从geogebraIt作品中我看到的黄色圆圈的值可能是5/4,非常感谢!!!!!有了黄色圆圈的半径,我就有了绘制它所需的所有值。看起来你很容易,我花了很多时间。
F = (75 + 4 - 64) / (2 * (8 - 2)) = 15/12 = 5/4