comparison test/Grids/geometry_test.jl @ 2012:4617e4b74b82 feature/grids/geometry_functions

Add arc() for constructing circle arcs between two points
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 07 May 2025 08:39:06 +0200
parents d0b6c63c506e
children 7895b509f9bf
comparison
equal deleted inserted replaced
2011:d0b6c63c506e 2012:4617e4b74b82
179 @testset "Grids.jacobian" begin 179 @testset "Grids.jacobian" begin
180 @test_broken false 180 @test_broken false
181 end 181 end
182 end 182 end
183 183
184 @testset "arc" begin
185 a = [0,0]
186 b = [1,0]
187 A = arc(a,b,1/2)
188 @test A(0) ≈ a atol=1e-15
189 @test A(1) ≈ b
190 @test A(0.5) ≈ [0.5, -0.5]
191
192 A = arc(a,b,-1/2)
193 @test A(0) ≈ a atol=1e-15
194 @test A(1) ≈ b
195 @test A(0.5) ≈ [0.5, 0.5]
196
197 @testset "Unit arc" begin
198 A = arc([1,0],[0,1],1)
199 @test A(0) ≈ [1,0]
200 @test A(1) ≈ [0,1]
201 @testset for t ∈ range(0,1,13)
202 @test A(t) ≈ [cos(t*π/2), sin(t*π/2)]
203 end
204 end
205
206 @testset "Inverted unit arc" begin
207 A = arc([1,0],[0,1],-1)
208 @test A(0) ≈ [1,0]
209 @test A(1) ≈ [0,1]
210 @testset "Inverted unit arc t=$t" for t ∈ range(0,1,13)
211 @test A(t) ≈ [1+cos(-π/2 - t*π/2), 1+sin(-π/2 - t*π/2)]
212 end
213 end
214
215 @testset "Quarters of unit circle" begin
216 unitvec(θ) = [cos(θ), sin(θ)]
217 @testset "θ ∈ ($(i)π/4, $(i+2)π/4)" for i ∈ range(0, step=1, length=8)
218 θ = i*π/4
219 @testset let θ₀ = θ, θ₁ = θ+π/2, r = 1
220 A = arc(unitvec(θ₀), unitvec(θ₁), r)
221 @test A(0) ≈ unitvec(θ)
222 @test A(1/3) ≈ unitvec(θ+π/6)
223 @test A(1/2) ≈ unitvec(θ+π/4)
224 @test A(2/3) ≈ unitvec(θ+π/3)
225 @test A(1) ≈ unitvec(θ+π/2)
226 end
227
228 @testset let θ₀ = θ+π/2, θ₁ = θ, r = -1
229 A = arc(unitvec(θ₀), unitvec(θ₁), r)
230 @test A(0) ≈ unitvec(θ+π/2)
231 @test A(1/3) ≈ unitvec(θ+π/3)
232 @test A(1/2) ≈ unitvec(θ+π/4)
233 @test A(2/3) ≈ unitvec(θ+π/6)
234 @test A(1) ≈ unitvec(θ)
235 end
236 end
237 end
238
239 @test_throws DomainError arc([-1,0], [1,0], 0.7)
240 end
241
184 @testset "TransfiniteInterpolationSurface" begin 242 @testset "TransfiniteInterpolationSurface" begin
185 @testset "Constructors" begin 243 @testset "Constructors" begin
186 @test TransfiniteInterpolationSurface(t->[1,2], t->[2,1], t->[0,0], t->[1,1]) isa TransfiniteInterpolationSurface 244 @test TransfiniteInterpolationSurface(t->[1,2], t->[2,1], t->[0,0], t->[1,1]) isa TransfiniteInterpolationSurface
187 245
188 cs = polygon_edges([0,0],[1,0],[1,1],[0,1]) 246 cs = polygon_edges([0,0],[1,0],[1,1],[0,1])