This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
CultMath/tests/CultMath.Tests/PlanetaryRadialRefinementTests.cs
2026-07-13 00:45:25 +01:00

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);
}
}