本文整理汇总了C#中Circle.AddChild方法的典型用法代码示例。如果您正苦于以下问题:C# Circle.AddChild方法的具体用法?C# Circle.AddChild怎么用?C# Circle.AddChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Circle
的用法示例。
在下文中一共展示了Circle.AddChild方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main(string[] args)
{
List<Gap> gaps = new List<Gap>();
Circle first = new Circle(Point2D.Origin, -1.0, 0);
double secondRadius = 1.0 / (2 / Math.Sqrt(3) + 1); // distance from center of a circle to center of one of three inscribed tangent circles.
double secondOffset = 1.0 - secondRadius;
Circle secondA = new Circle(Point2D.FromPolar(secondOffset, (0.0 / 3 * Math.PI)), secondRadius, 1);
Circle secondB = new Circle(Point2D.FromPolar(secondOffset, (2.0 / 3 * Math.PI)), secondRadius, 1);
Circle secondC = new Circle(Point2D.FromPolar(secondOffset, (4.0 / 3 * Math.PI)), secondRadius, 1);
gaps.Add(new Gap(secondA, secondB, secondC));
gaps.Add(new Gap(first, secondB, secondC));
gaps.Add(new Gap(secondA, first, secondC));
gaps.Add(new Gap(secondA, secondB, first));
first.AddChild(secondA);
first.AddChild(secondB);
first.AddChild(secondC);
while( gaps.Count() != 0 )
{
Gap g = gaps.First();
gaps.Remove(g);
Circle D = g.CalculateD( );
if (D.SphRadius > 1.0 / 180 * Math.PI)
{
gaps.Add(new Gap(g.A, g.B, D));
gaps.Add(new Gap(g.A, D, g.C));
gaps.Add(new Gap(D, g.B, g.C));
#if true //makes symmetric
if (D.Level == 2 && (D.Center.R > DMS.EPSILON))
first.AddChild(D);
else
#endif
if (g.A.Level >= g.B.Level && g.A.Level >= g.C.Level)
{
g.A.AddChild(D);
}
else if (g.B.Level >= g.C.Level)
{
g.B.AddChild(D);
}
else
{
g.C.AddChild(D);
}
}
}
StreamWriter sw = new StreamWriter("gasket.skl");
OutputGasket(sw, ref first, ref secondA);
sw.Close();
}