/// <summary> /// Construct a pie-slice of a new <c>SymmetricCylinder</c> around a central axis, the <c>centerLine</c>. /// The radius at each point on the central axis is defined by a one-dimensional function <c>radius</c>. /// The cylinder is cut in a pie-slice along the length of the shaft, defined by the angles /// <c>startAngle</c> and <c>endAngle</c>. /// /// The surface is parametrized with the coordinates \f$t \in [0, 1]\f$ (along the length of the shaft) and /// \f$\phi \in [0, 2 \pi]\f$ (along the radial coordinate). /// /// This gives a pie-sliced cylindrical surface that is defined only between the angles <c>startAngle</c> /// and <c>endAngle</c>. For example, if <c>startAngle = 0.0f</c> and <c>endAngle = Math.PI</c>, one would /// get a cylinder that is sliced in half. /// </summary> /// <param name="centerLine"> /// <inheritdoc cref="SymmetricCylinder.CenterCurve"/> /// </param> /// <param name="radius"> /// <inheritdoc cref="SymmetricCylinder.Radius"/> /// </param> /// <param name="startAngle"> /// The starting angle of the pie-slice at each point on the central axis. <c>startAngle</c> is a /// one-dimensional function \f$\alpha(t)\f$ defined on the domain \f$t \in [0, 1]\f$, where \f$t=0\f$ is /// the start point of the cylinder's central axis and \f$t=1\f$ is the end point of the cylinder's central /// axis. This allows one to vary the angles of the pie-slice along the length of the shaft. /// </param> /// <param name="endAngle"> /// The end angle of the pie-slice at each point on the central axis. <c>endAngle</c> is a /// one-dimensional function \f$\beta(t)\f$ defined on the domain \f$t \in [0, 1]\f$, where \f$t=0\f$ is /// the start point of the cylinder's central axis and \f$t=1\f$ is the end point of the cylinder's central /// axis. This allows one to vary the angles of the pie-slice along the length of the shaft. /// </param> public SymmetricCylinder(LineSegment centerLine, RaytraceableFunction1D radius, ContinuousMap <float, float> startAngle, ContinuousMap <float, float> endAngle) : base(centerLine, new DomainToVector2 <float>(new Vector2(0.0f, 1.0f), radius), startAngle, endAngle) { radius1D = radius; this.centerLine = centerLine; }
/// <summary> /// Construct a new <c>SymmetricCylinder</c> around a central axis, the <c>centerLine</c>. The radius at /// each point on the central axis is defined by a one-dimensional function <c>radius</c>. /// /// The surface is parametrized with the coordinates \f$t \in [0, 1]\f$ (along the length of the shaft) and /// \f$\phi \in [0, 2 \pi]\f$ (along the radial coordinate). /// </summary> /// <param name="centerLine"> /// <inheritdoc cref="SymmetricCylinder.CenterCurve"/> /// </param> /// <param name="radius"> /// <inheritdoc cref="SymmetricCylinder.Radius"/> /// </param> public SymmetricCylinder(LineSegment centerLine, RaytraceableFunction1D radius) : this(centerLine, radius, 0.0f, 2.0f * (float)Math.PI) { }
public HingeJoint(LineSegment centerLine, RaytraceableFunction1D radius, ContinuousMap <double, double> startAngle, ContinuousMap <double, double> endAngle) { articularSurface = new SymmetricCylinder(centerLine, radius, startAngle, endAngle); }
/// <summary> /// Construct a pie-slice of a new <c>SymmetricCylinder</c> around a central axis, the <c>centerLine</c>. /// The radius at each point on the central axis is defined by a one-dimensional function <c>radius</c>. /// The cylinder is cut in a pie-slice along the length of the shaft, defined by the angles /// <c>startAngle</c> and <c>endAngle</c>. /// /// The surface is parametrized with the coordinates \f$t \in [0, 1]\f$ (along the length of the shaft) and /// \f$\phi \in [0, 2 \pi]\f$ (along the radial coordinate). /// /// This gives a pie-sliced cylindrical surface that is defined only between the angles <c>startAngle</c> /// and <c>endAngle</c>. For example, if <c>startAngle = 0.0f</c> and <c>endAngle = Math.PI</c>, one would /// get a cylinder that is sliced in half. /// </summary> /// <param name="centerLine"> /// <inheritdoc cref="SymmetricCylinder.CenterCurve"/> /// </param> /// <param name="radius"> /// <inheritdoc cref="SymmetricCylinder.Radius"/> /// </param> /// <param name="startAngle"> /// The starting angle of the pie-slice at each point on the central axis. <c>startAngle</c> is a /// one-dimensional function \f$\alpha(t)\f$ defined on the domain \f$t \in [0, 1]\f$, where \f$t=0\f$ is /// the start point of the cylinder's central axis and \f$t=1\f$ is the end point of the cylinder's central /// axis. This allows one to vary the angles of the pie-slice along the length of the shaft. /// </param> /// <param name="endAngle"> /// The end angle of the pie-slice at each point on the central axis. <c>endAngle</c> is a /// one-dimensional function \f$\beta(t)\f$ defined on the domain \f$t \in [0, 1]\f$, where \f$t=0\f$ is /// the start point of the cylinder's central axis and \f$t=1\f$ is the end point of the cylinder's central /// axis. This allows one to vary the angles of the pie-slice along the length of the shaft. /// </param> public SymmetricCylinder(LineSegment centerLine, RaytraceableFunction1D radius, ContinuousMap <double, double> startAngle, ContinuousMap <double, double> endAngle) : base(centerLine, new DomainToVector2 <double>(dvec2.UnitY, radius), startAngle, endAngle) { radius1D = radius; this.centerLine = centerLine; }
public HingeJoint(LineSegment centerLine, RaytraceableFunction1D radius) { articularSurface = new SymmetricCylinder(centerLine, radius); }