29 lines
1 KiB
C#
29 lines
1 KiB
C#
using Xunit;
|
|
|
|
namespace CultMath.Tests;
|
|
|
|
public sealed class PlanetaryRadialRefinementTests
|
|
{
|
|
[Fact]
|
|
public void FourBoundedStepsConvergeFromTheRasterCaptureShell()
|
|
{
|
|
var center=new float3(0.3f,-0.2f,0.7f);
|
|
var radial=math.normalize(new float3(0.2f,-0.4f,0.9f));
|
|
var targetRadius=3.85f;
|
|
var target=center+radial*targetRadius;
|
|
var origin=target+math.normalize(radial+new float3(0.12f,-0.05f,0.02f))*6.0f;
|
|
var position=center+radial*(targetRadius+0.30f);
|
|
var ray=math.normalize(position-origin);
|
|
for(var step=0;step<4;step++)
|
|
position=PlanetaryRadialRefinement.Step(position,ray,center,targetRadius);
|
|
Assert.InRange(math.abs(math.length(position-center)-targetRadius),0.0f,1.0e-4f);
|
|
}
|
|
|
|
[Fact]
|
|
public void StepClampsWeakDerivativeCorrections()
|
|
{
|
|
var position=new float3(0,0,4.1f);
|
|
var result=PlanetaryRadialRefinement.Step(position,new float3(1,0,0),float3.zero,3.8f);
|
|
Assert.InRange(math.length(result-position),0.07999f,0.08001f);
|
|
}
|
|
}
|