annotate src/Grids/geometry.jl @ 1915:c003685d9926 feature/grids/geometry_functions

Add geometry functions removed from feature/grids/manifolds
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 03 Feb 2025 15:43:00 +0100
parents
children 6859089b361e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 ###
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 # Geometry
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 ###
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 abstract type Curve end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 abstract type Surface end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 struct Line{PT} <: Curve
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 p::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 tangent::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 (c::Line)(s) = c.p + s*c.tangent
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 struct LineSegment{PT} <: Curve
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 a::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 b::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 (c::LineSegment)(s) = (1-s)*c.a + s*c.b
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 function linesegments(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 return [LineSegment(ps[i], ps[i+1]) for i ∈ 1:length(ps)-1]
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 function polygon_edges(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 n = length(ps)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 return [LineSegment(ps[i], ps[mod1(i+1,n)]) for i ∈ eachindex(ps)]
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 struct Circle{T,PT} <: Curve
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 c::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 r::T
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 function (C::Circle)(θ)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 (;c, r) = C
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 c + r*@SVector[cos(θ), sin(θ)]
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 struct TransfiniteInterpolationSurface{T1,T2,T3,T4} <: Surface
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 c₁::T1
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 c₂::T2
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 c₃::T3
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 c₄::T4
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 function (s::TransfiniteInterpolationSurface)(u,v)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 c₁, c₂, c₃, c₄ = s.c₁, s.c₂, s.c₃, s.c₄
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 P₀₀ = c₁(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 P₁₀ = c₂(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 P₁₁ = c₃(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 P₀₁ = c₄(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 return (1-v)*c₁(u) + u*c₂(v) + v*c₃(1-u) + (1-u)*c₄(1-v) - (
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 (1-u)*(1-v)*P₀₀ + u*(1-v)*P₁₀ + u*v*P₁₁ + (1-u)*v*P₀₁
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 )
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 function (s::TransfiniteInterpolationSurface)(ξ̄::AbstractArray)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 s(ξ̄...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 # TODO: Implement jacobian() for the different mapping helpers