Exemple #1
0
 /// <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;
 }
Exemple #2
0
 /// <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)
 {
 }
Exemple #3
0
 public HingeJoint(LineSegment centerLine, RaytraceableFunction1D radius, ContinuousMap <double, double> startAngle, ContinuousMap <double, double> endAngle)
 {
     articularSurface = new SymmetricCylinder(centerLine, radius, startAngle, endAngle);
 }
Exemple #4
0
 /// <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;
 }
Exemple #5
0
 public HingeJoint(LineSegment centerLine, RaytraceableFunction1D radius)
 {
     articularSurface = new SymmetricCylinder(centerLine, radius);
 }