Добрый вечер! Нужна помощь в построении сопряжения прямой и окружности.
На данный момент удалось найти две точки - начальную и конечную.
Так же известен радиус дуги сопряжения и точка центра сопряжения.
Но вот не могу построить саму дугу.
Подскажите возможно ли как то построить дугу по этим данным?
Вот что получается на данный момент:
Но надо что бы вышло вот так -
Вот такой у меня код -
Vector3d norm = Vector3d.ZAxis;
CircularArc3d a1 = new CircularArc3d(FirstFilletPpoint, norm, radius);
CircularArc3d a2 = new CircularArc3d(SecondFilletPoint, norm, radius);
CurveCurveIntersector3d cint = new CurveCurveIntersector3d(a1, a2, norm);
if (cint.NumberOfIntersectionPoints == 2)
{
Point3d pc1 = cint.GetIntersectionPoint(0);
Point3d pc2 = cint.GetIntersectionPoint(1);
CircularArc3d arc31 = new CircularArc3d(FirstFilletPpoint, pc1, SecondFilletPoint);
CircularArc3d arc32 = new CircularArc3d(FirstFilletPpoint, pc2, SecondFilletPoint);
Arc arc1 = circArc3Arc(arc31);
Arc arc2 = circArc3Arc(arc32);
if (arc1.StartPoint.DistanceTo(FirstFilletPpoint) < arc2.StartPoint.DistanceTo(FirstFilletPpoint))
{
blockTableRecord.AppendEntity(arc1);
tr.AddNewlyCreatedDBObject(arc1, true);
}
else
{
blockTableRecord.AppendEntity(arc2);
tr.AddNewlyCreatedDBObject(arc2, true);
}
----------------------------------------------------------------
private Arc circArc3Arc(CircularArc3d circArc)
{
Point3d center = circArc.Center;
Vector3d normal = circArc.Normal;
Vector3d refVec = circArc.ReferenceVector;
Plane plane = new Plane(center, normal);
double ang = refVec.AngleOnPlane(plane);
return new Arc(
center,
normal,
circArc.Radius,
circArc.StartAngle + ang,
circArc.EndAngle + ang
);
}
Спасибо за любую помощь!