예제 #1
0
 public Vector3 Gradient(Vector3 pos)
 {
     if (ClampFunction(pos))
     {
         return(Vector3.Zero);
     }
     return(UnderlyingScalarField.Gradient(pos));
 }
예제 #2
0
 public double Value(Vector3 pos)
 {
     if (ClampFunction(pos))
     {
         return(0);
     }
     return(UnderlyingScalarField.Value(pos));
 }
예제 #3
0
 public override bool IsOnManifold(Vector3 point) => Math.Abs(UnderlyingScalarField.Value(point) - PotentialValue) <= MathConstants.DoubleEqualityTolerance;
예제 #4
0
 public override Vector3 PerpVector(Vector3 pointOnSurface) => UnderlyingScalarField.Gradient(pointOnSurface);
예제 #5
0
 public override Vector3 MapToManifold(Vector3 point) => UnderlyingScalarField.GradientTraversal(point, PotentialValue, Tolerance);
예제 #6
0
 public IVectorField ToVectorField()
 {
     return(new ClampedVectorField(UnderlyingScalarField.ToVectorField(), ClampFunction));
 }