回答
Phi= ArcTan[ Sqrt[4 * R^2 - d^2] /d ]
HTH!
编辑
对于两个不同的半径:
简化了一点:
Phi= ArcTan[Sqrt[-d^4 -(R1^2 - R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]
编辑
如果您想从另一个圆心看到角度,只需在最后一个等式中将R2与R2交换即可。
这里是数学的实现:
f[center1_, d_, R1_, R2_] := Module[{Phi, Theta},
Phi= ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)]
Theta=ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 -R1^2 +R2^2)]
{Circle[{center1, 0}, R1, {2 Pi - Phi, Phi}],
Circle[{d, 0}, R2, {Pi - Theta, -Pi + Theta}]}
];
Graphics[f[0, 1.5, 1, 1]]
Graphics[f[0, 1.5, 1, 3/4]]
而且......
ImageMultiply[
[email protected][#],
ImageResize[[email protected]
"http://i305.photobucket.com/albums/nn235/greeneyedgirlox/blondebabybunny.jpg",
[email protected]#]] &@
[email protected][f[0, 1.5, 1, 1], Background -> Black]
:)
这两个半径不一定相同。 – 2010-12-16 18:32:15
@Ignacio请参阅编辑 – 2010-12-16 18:40:31
D是什么?我如何得到D?为什么它在编辑的某处浮动? – 2010-12-16 19:46:19
现在没有时间解决它。不过,我会给你你所需要的工作了:
http://en.wikipedia.org/wiki/Triangle#The_sine.2C_cosine_and_tangent_rules
在图片上看到的三角形A,B,C维基百科。设A是左圆的中心,B是右圆的中心。 AC是左圆的半径,BC是右圆的半径。
然后点C将是顶交点。 A,α中的拐角是左侧圆角的一半。b,β中的拐角,右侧圆角的一半。这些是你需要的角度,对吧?
维基百科进一步解释说:“如果知道任何三角形的所有三边的长度,就可以计算出三个角度。
伪代码:
a=radius_a
b=radius_b
c=b_x - a_x
alpha=arccos((b^2 + c^2 - a^2)/(2*b*c)) //from wikipedia
left_angle=2*alpha
祝你好运:)
现在,这个工作将100%为你甚至图是椭圆和任意数量的数字
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.Red, 2);
Rectangle Fig1 = new Rectangle(50, 50, 100, 50); //dimensions of Fig1
Rectangle Fig2 = new Rectangle(100, 50, 100, 50); //dimensions of Fig2
. . .
DrawFigure(e.Graphics, p, Fig1);
DrawFigure(e.Graphics, p, Fig2);
. . .
//remember to call FillFigure after drawing all figures.
FillFigure(e.Graphics, p, Fig1);
FillFigure(e.Graphics, p, Fig2);
. . .
}
private void DrawFigure(Graphics g, Pen p, Rectangle r)
{
g.DrawEllipse(p, r.X, r.Y, r.Width, r.Height);
}
private void FillFigure(Graphics g, Pen p, Rectangle r)
{
g.FillEllipse(new SolidBrush(this.BackColor), r.X + p.Width, r.Y + p.Width, r.Width - 2 * +p.Width, r.Height - 2 * +p.Width); //Adjusting Color so that it will leave border and fill
}
谢谢您不要仔细阅读问题和意见。我正在使用OpenGL,而不是.net绘图。 – 2010-12-19 14:55:47
- 1. 圆圈图像叠加
- 2. 防止拖动圆圈重叠
- 3. 在MATLAB中删除重叠的圆圈
- 4. css重叠的圆圈和文本框
- 5. MATLAB:区域重叠的圆圈
- 6. 如何在固定区域生成不重叠的圆圈?
- 7. java圈内圈,如何知道两圈是否重叠
- 8. 如何找到圈的重叠
- 9. java drawOval重复圆圈
- 10. 防止两个可拖动的圆圈交叉时重叠
- 11. 背景中无边框的透明重叠圆圈
- 12. 将重叠点分散在一个圆圈中 - R
- 13. 物理模拟确保圆圈不重叠 - C#XNA 4.0
- 14. javascript:在阵列中找到重叠的圆圈
- 15. 拟合两个重叠圆圈的图像
- 16. iOS/Core-Animation:12个重叠的圆圈卡片
- 17. 使用OpenCV查找重叠/复杂圆圈
- 18. 在画布中,如何绘制2个半透明重叠圆圈
- 19. 如何在一个圆圈
- 20. 如何白色圆圈
- 21. 圆圈内空圈:
- 22. 将圆圈叠加到带有复选框的标记
- 23. 如何将圆圈后面的一行移至圆圈底部
- 24. 如何在WPF中创建一个带圆圈的圆圈?
- 25. 簇重叠的圈子?
- 26. 圈上的图像叠加圈
- 27. 附加圆圈形状Path2D
- 28. 在圆圈内添加文本并在圆圈中添加小标题(HTML/CSS)
- 29. 如何在CSS中制作大圆圈内的圆圈以及所有圆圈中心内的文字?
- 30. 加入圈子
嗯好一个!如果你知道它们的中心和半径,你可以找到圆的交点。从那里,你应该能够找出重叠的部分 - 由交点创建的每个圆上的两个部分中的较小部分...有帮助吗?我从来没有尝试编码,但我可以尝试一些伪代码...... – FrustratedWithFormsDesigner 2010-12-16 18:10:01
圈子有相同的半径吗? – Ishtar 2010-12-16 18:11:33
这些圈子偶尔会有相同的辐射,但通常它们不会。 – 2010-12-16 18:13:27