annotate src/Grids/geometry.jl @ 1979:db3383581b9f feature/grids/geometry_functions

Remove dead code
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 26 Feb 2025 15:40:37 +0100
parents d7a5129517d9
children 486b3c6f919e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1916
6859089b361e Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents: 1915
diff changeset
1 struct Line{PT}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 p::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 tangent::PT
1966
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
4
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
5 Line{PT}(p::PT, tangent::PT) where PT = new{PT}(p,tangent)
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
6 end
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
7
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
8 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
9 Line(p,t)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
10
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
11 A line, as a callable object, starting at `p` with tangent `t`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
12
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
13 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
14 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
15 julia> l = Grids.Line([1,1],[2,1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
16 Diffinitive.Grids.Line{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
17
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
18 julia> l(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
19 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
20 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
21 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
22
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
23 julia> l(1)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
24 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
25 3
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
26 2
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
27 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
28
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
29 See also: [`LineSegment`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
30 """
1966
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
31 function Line(p, t)
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
32 p = SVector{length(p)}(p)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
33 t = SVector{length(t)}(t)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
34 p, t = promote(p, t)
1966
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
35
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
36 return Line{typeof(p)}(p,t)
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 (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
40
1974
3ed7ca1f60c4 Implement Grids.jacobian for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1973
diff changeset
41 Grids.jacobian(l::Line, t) = l.tangent
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42
1916
6859089b361e Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents: 1915
diff changeset
43 struct LineSegment{PT}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 a::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 b::PT
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
46
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
47 LineSegment{PT}(p::PT, tangent::PT) where PT = new{PT}(p,tangent)
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
48 end
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
49
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
50 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
51 LineSegment(a,b)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
52
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
53 A line segment, as a callable object, from `a` to `b`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
54
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
55 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
56 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
57 julia> l = Grids.LineSegment([1,1],[2,1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
58 Diffinitive.Grids.LineSegment{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
59
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
60 julia> l(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
61 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
62 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
63 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
64
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
65 julia> l(0.5)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
66 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
67 1.5
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
68 1.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
69
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
70 julia> l(1)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
71 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
72 2
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
73 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
74 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
75
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
76 See also: [`Line`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
77 """
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
78 function LineSegment(a, b)
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
79 a = SVector{length(a)}(a)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
80 b = SVector{length(b)}(b)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
81 a, b = promote(a, b)
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
82
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
83 return LineSegment{typeof(a)}(a,b)
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86 (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
87
1975
79adad4a15d6 Implement Grids.jacobian for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1974
diff changeset
88 Grids.jacobian(c::LineSegment, s) = c.b - c.a
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
90 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
91 linesegments(ps...)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
92
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
93 An array of line segments between the points `ps[1]`, `ps[2]`, and so on.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
94
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
95 See also: [`polygon_edges`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
96 """
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
97 function linesegments(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
98 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
99 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
102 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
103 polygon_edges(ps...)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
104
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
105 An array of line segments between the points `ps[1]`, `ps[2]`, and so on
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
106 including the segment between `ps[end]` and `ps[1]`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
107
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
108 See also: [`linesegments`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
109 """
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 function polygon_edges(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
111 n = length(ps)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
112 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
113 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
114
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
115 struct Circle{PT,T}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
116 c::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
117 r::T
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
118
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
119 Circle{PT,T}(c,r) where {PT,T} = new{PT,T}(c,r)
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
120 end
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
121
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
122 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
123 Circle(c,r)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
124
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
125 A circle with center `c` and radius `r` paramatrized with the angle to the x-axis.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
126
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
127 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
128 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
129 julia> c = Grids.Circle([1,1], 2)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
130 Diffinitive.Grids.Circle{StaticArraysCore.SVector{2, Int64}, Int64}([1, 1], 2)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
131
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
132 julia> c(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
133 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
134 3.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
135 1.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
136
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
137 julia> c(π/2)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
138 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
139 1.0000000000000002
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
140 3.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
141 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
142 """
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
143 function Circle(c,r)
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
144 c = SVector{2}(c)
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
145 return Circle{typeof(c), typeof(r)}(c,r)
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
146 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
147
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
148 function (C::Circle)(θ)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
149 (;c, r) = C
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
150 c + r*@SVector[cos(θ), sin(θ)]
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
151 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
152
1976
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
153 function Grids.jacobian(C::Circle, θ)
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
154 (;r) = C
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
155 r*@SVector[-sin(θ), cos(θ)]
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
156 end
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
157
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
158 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
159 TransfiniteInterpolationSurface(c₁, c₂, c₃, c₄)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
160
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
161 A surface defined by the transfinite interpolation of the curves `c₁`, `c₂`, `c₃`, and `c₄`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
162 """
1916
6859089b361e Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents: 1915
diff changeset
163 struct TransfiniteInterpolationSurface{T1,T2,T3,T4}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
164 c₁::T1
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
165 c₂::T2
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
166 c₃::T3
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
167 c₄::T4
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
168 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
169
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
170 function (s::TransfiniteInterpolationSurface)(u,v)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
171 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
172 P₀₀ = c₁(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
173 P₁₀ = c₂(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
174 P₁₁ = c₃(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
175 P₀₁ = c₄(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
176 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
177 (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
178 )
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
179 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
180
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
181 function (s::TransfiniteInterpolationSurface)(ξ̄::AbstractArray)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
182 s(ξ̄...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
183 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
184
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
185 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
186 check_transfiniteinterpolation(s::TransfiniteInterpolationSurface)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
187
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
188 Throw an error if the ends of the curves in the transfinite interpolation do not match.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
189 """
1973
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
190 function check_transfiniteinterpolation(s::TransfiniteInterpolationSurface)
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
191 if check_transfiniteinterpolation(Bool, s)
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
192 return nothing
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
193 else
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
194 error("The end of each curve in the transfinite interpolation should be the same as the beginning of the next curve.")
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
195 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
196 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
197
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
198 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
199 check_transfiniteinterpolation(::Type{Bool}, s::TransfiniteInterpolationSurface)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
200
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
201 Return true if the ends of the curves in the transfinite interpolation match.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
202 """
1973
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
203 function check_transfiniteinterpolation(::Type{Bool}, s::TransfiniteInterpolationSurface)
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
204 if !isapprox(s.c₁(1), s.c₂(0))
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
205 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
206 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
207
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
208 if !isapprox(s.c₂(1), s.c₃(0))
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
209 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
210 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
211
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
212 if !isapprox(s.c₃(1), s.c₄(0))
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
213 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
214 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
215
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
216 if !isapprox(s.c₄(1), s.c₁(0))
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
217 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
218 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
219
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
220 return true
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
221 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
222
1977
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
223 function Grids.jacobian(s::TransfiniteInterpolationSurface, ξ̄)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
224 u, v = ξ̄
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
225
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
226 c₁, c₂, c₃, c₄ = s.c₁, s.c₂, s.c₃, s.c₄
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
227 P₀₀ = c₁(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
228 P₁₀ = c₂(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
229 P₁₁ = c₃(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
230 P₀₁ = c₄(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
231
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
232 ∂x̄∂ξ₁ = (1-v)*jacobian(c₁,u) + c₂(v) - v*jacobian(c₃,1-u) -c₄(1-v) - (
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
233 -(1-v)*P₀₀ + (1-v)*P₁₀ + v*P₁₁ - v*P₀₁
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
234 )
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
235
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
236 ∂x̄∂ξ₂ = -c₁(u) + u*jacobian(c₂,v) + c₃(1-u) - (1-u)*jacobian(c₄,1-v) - (
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
237 -(1-u)*P₀₀ - u*P₁₀ + u*P₁₁ + (1-u)*P₀₁
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
238 )
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
239
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
240 return [∂x̄∂ξ₁ ∂x̄∂ξ₂]
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
241 end