시각적으로 중복되는 두 개의 원에 가입겹치는 서클에 가입하는 방법은 무엇입니까?</p> <p><img src="https://i.stack.imgur.com/5SqXU.jpg" alt="AltText"></p> <p>이가되도록 내가 원하는
이미 부분 원에 대한 방법을 가지고 있지만, 지금은 어떻게 크게 알 필요가 낙서 원에 대한 겹치는 각도가 있으며, 어떻게 해야할지 모르겠습니다.
누구나 아이디어가 있습니까?
시각적으로 중복되는 두 개의 원에 가입겹치는 서클에 가입하는 방법은 무엇입니까?</p> <p><img src="https://i.stack.imgur.com/5SqXU.jpg" alt="AltText"></p> <p>이가되도록 내가 원하는
이미 부분 원에 대한 방법을 가지고 있지만, 지금은 어떻게 크게 알 필요가 낙서 원에 대한 겹치는 각도가 있으며, 어떻게 해야할지 모르겠습니다.
누구나 아이디어가 있습니까?
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)]
편집
,536,913,632 10다른 원 중심에서 보는 각도를 원하면 마지막 방정식에서 R1을 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]
0 : 여기
티카의 샘플 구현 1,236,673,841,483,:
두 반경이 반드시 동일하지는 않습니다. –
@Ignacio 편집보기 –
D와 뭐니? D는 어떻게받을 수 있습니까? 편집 중 어딘가에 떠 다니는 이유는 무엇입니까? –
지금 해결할 시간이 없어요. 그러나 나는 당신이 그것을 해결하기 위해 필요한 것을주지 : 사진에서
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, NOT .net 드로잉으로 작업하고 있습니다. –
흠 좋은 임의의 수! 중심과 반경을 알고 있다면 원의 교차점을 찾을 수 있습니다. 거기에서 겹치는 부분을 알아낼 수 있어야합니다 - 교차점에 의해 생성 된 각 원의 두 세그먼트 중 작은 부분이 도움이됩니까? 나는 이것을 코딩하려고 시도한 적이 없지만 어쩌면 어떤 의사 코드를 시도 할 수있다. – FrustratedWithFormsDesigner
원이 동일한 반경을 가지고 있는가? – Ishtar
동그라미는 때때로 같은 방사상을 가질 수 있지만 일반적으로 동그라미는 아닙니다. –