annotate src/Grids/geometry.jl @ 2069:15f27fea9929 feature/grids/geometry_functions

Remove review comments about output types.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 17 Feb 2026 20:15:37 +0100
parents 00b274a118e0
children c68fa6c74477
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
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
8
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
9 # REVIEW:
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
10 # 1. Explain the parametrization, i.e., l(1) = p + s*t
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
11 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
12 Line(p,t)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
13
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
14 A line, as a callable object, starting at `p` with tangent `t`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
15
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
16 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
17 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
18 julia> l = Grids.Line([1,1],[2,1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
19 Diffinitive.Grids.Line{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
20
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
21 julia> l(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
22 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
23 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
24 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
25
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
26 julia> l(1)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
27 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
28 3
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
29 2
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
30 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
31
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
32 See also: [`LineSegment`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
33 """
1966
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
34 function Line(p, t)
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
35 p = SVector{length(p)}(p)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
36 t = SVector{length(t)}(t)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
37 p, t = promote(p, t)
1966
478b233999c5 Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1916
diff changeset
38
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
39 return Line{typeof(p)}(p,t)
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 (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
43
1974
3ed7ca1f60c4 Implement Grids.jacobian for Line
Jonatan Werpers <jonatan@werpers.com>
parents: 1973
diff changeset
44 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
45
1916
6859089b361e Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents: 1915
diff changeset
46 struct LineSegment{PT}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 a::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 b::PT
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
49
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
50 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
51 end
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
52
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
53
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
54 # REVIEW:
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
55 # 1. Explain the parametrization.
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
56 # 3. Do we want s in [0, 1]? Currently the line segment
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
57 # can return values "outside" of the interval [a,b].
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
58 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
59 LineSegment(a,b)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
60
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
61 A line segment, as a callable object, from `a` to `b`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
62
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
63 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
64 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
65 julia> l = Grids.LineSegment([1,1],[2,1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
66 Diffinitive.Grids.LineSegment{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1])
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
67
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
68 julia> l(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
69 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
70 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
71 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
72
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
73 julia> l(0.5)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
74 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
75 1.5
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
76 1.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
77
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
78 julia> l(1)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
79 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
80 2
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
81 1
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
82 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
83
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
84 See also: [`Line`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
85 """
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
86 function LineSegment(a, b)
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
87 a = SVector{length(a)}(a)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
88 b = SVector{length(b)}(b)
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
89 a, b = promote(a, b)
1967
669361a8195a Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1966
diff changeset
90
1970
deeb61325320 Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1969
diff changeset
91 return LineSegment{typeof(a)}(a,b)
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
94 (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
95
1975
79adad4a15d6 Implement Grids.jacobian for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents: 1974
diff changeset
96 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
97
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
98
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
99 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
100 linesegments(ps...)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
101
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
102 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
103
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
104 See also: [`polygon_edges`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
105 """
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 function linesegments(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107 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
108 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
111 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
112 polygon_edges(ps...)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
113
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
114 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
115 including the segment between `ps[end]` and `ps[1]`.
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
116
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
117 See also: [`linesegments`](@ref).
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
118 """
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
119 function polygon_edges(ps...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
120 n = length(ps)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
121 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
122 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
123
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
124
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
125 struct Circle{PT,T}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
126 c::PT
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
127 r::T
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
128
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
129 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
130 end
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
131
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
132 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
133 Circle(c,r)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
134
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
135 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
136
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
137 # Example
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
138 ```julia-repl
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
139 julia> c = Grids.Circle([1,1], 2)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
140 Diffinitive.Grids.Circle{StaticArraysCore.SVector{2, Int64}, Int64}([1, 1], 2)
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 julia> c(0)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
143 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
144 3.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
145 1.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
146
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
147 julia> c(π/2)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
148 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2):
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
149 1.0000000000000002
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
150 3.0
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
151 ```
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
152 """
1969
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
153 function Circle(c,r)
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
154 c = SVector{2}(c)
7f4a5146c84c Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1967
diff changeset
155 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
156 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
157
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
158 function (C::Circle)(θ)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
159 (;c, r) = C
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
160 c + r*@SVector[cos(θ), sin(θ)]
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
161 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
162
1976
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
163 function Grids.jacobian(C::Circle, θ)
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
164 (;r) = C
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
165 r*@SVector[-sin(θ), cos(θ)]
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
166 end
34a7e3919e9a Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents: 1975
diff changeset
167
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
168
2011
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
169 struct Arc{PT,T}
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
170 c::Circle{PT,T}
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
171 θ₀::T
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
172 θ₁::T
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
173 end
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
174
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
175 """
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
176 Arc(C::Circle, θ₀, θ₁)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
177
2014
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
178 A circular arc as a callable object. The arc is around the circle `C` between
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
179 angles `θ₀` and `θ₁` and is paramatrized between 0 and 1.
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
180
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
181 See also: [`arc`](@ref), [`Circle`](@ref).
2011
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
182 """
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
183 function Arc(C, θ₀, θ₁)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
184 r, θ₀, θ₁ = promote(C.r, θ₀, θ₁)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
185
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
186 return Arc(Circle(C.c, r), θ₀, θ₁)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
187 end
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
188
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
189 function (A::Arc)(t)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
190 (; θ₀, θ₁) = A
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
191 return A.c((1-t)*θ₀ + t*θ₁)
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
192 end
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
193
2013
7895b509f9bf Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2012
diff changeset
194 function Grids.jacobian(A::Arc, t)
7895b509f9bf Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2012
diff changeset
195 (;c, θ₀, θ₁) = A
7895b509f9bf Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2012
diff changeset
196 return (θ₁-θ₀)*jacobian(c, t)
2011
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
197 end
d0b6c63c506e Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents: 1983
diff changeset
198
2012
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
199
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
200 """
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
201 arc(a,b,r)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
202
2014
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
203 A circular arc between the points `a` and `b` with radius `abs(r)`. If `r > 0`
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
204 the arc goes counter clockwise and if `r<0` the arc goes clockwise. The arc is
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
205 parametrized such that if `A = arc(a,b,r)` then `A(0)` corresponds to `a` and
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
206 `A(1)` to `b`.
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
207
6478c29effce Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents: 2013
diff changeset
208 See also: [`Arc`](@ref), [`Circle`](@ref).
2012
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
209 """
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
210 function arc(a,b,r)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
211 if abs(r) < norm(b-a)/2
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
212 throw(DomainError(r, "arc was called with radius r = $r smaller than half the distance between the points."))
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
213 end
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
214
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
215 R̂ = @SMatrix[0 -1; 1 0]
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
216
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
217 α = sign(r)*√(r^2 - norm((b-a)/2)^2)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
218 t̂ = R̂*(b-a)/norm(b-a)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
219
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
220 c = (a+b)/2 + α*t̂
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
221
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
222 ca = a-c
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
223 cb = b-c
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
224 θₐ = atan(ca[2],ca[1])
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
225 θᵦ = atan(cb[2],cb[1])
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
226
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
227 Δθ = mod(θᵦ-θₐ+π, 2π)-π # Δθ in the interval (-π,π)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
228
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
229 if r > 0
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
230 Δθ = abs(Δθ)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
231 else
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
232 Δθ = -abs(Δθ)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
233 end
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
234
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
235 return Arc(Circle(c,abs(r)), θₐ, θₐ+Δθ)
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
236 end
4617e4b74b82 Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents: 2011
diff changeset
237
2056
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
238 # REVIEW:
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
239 # 1. Explain parametrisation
00b274a118e0 Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 2014
diff changeset
240 # 2. Boundscheck for the parametrisation argumetns, i.e. within [0,1]?
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
241 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
242 TransfiniteInterpolationSurface(c₁, c₂, c₃, c₄)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
243
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
244 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
245 """
1916
6859089b361e Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents: 1915
diff changeset
246 struct TransfiniteInterpolationSurface{T1,T2,T3,T4}
1915
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
247 c₁::T1
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
248 c₂::T2
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
249 c₃::T3
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
250 c₄::T4
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
251 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
252
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
253 function (s::TransfiniteInterpolationSurface)(u,v)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
254 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
255 P₀₀ = c₁(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
256 P₁₀ = c₂(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
257 P₁₁ = c₃(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
258 P₀₁ = c₄(0)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
259 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
260 (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
261 )
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
262 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
263
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
264 function (s::TransfiniteInterpolationSurface)(ξ̄::AbstractArray)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
265 s(ξ̄...)
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
266 end
c003685d9926 Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
267
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
268 """
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
269 check_transfiniteinterpolation(s::TransfiniteInterpolationSurface)
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
270
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
271 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
272 """
1973
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
273 function check_transfiniteinterpolation(s::TransfiniteInterpolationSurface)
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
274 if check_transfiniteinterpolation(Bool, s)
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
275 return nothing
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
276 else
1982
486b3c6f919e Throw better error type for transfinite interpolation check
Jonatan Werpers <jonatan@werpers.com>
parents: 1979
diff changeset
277 throw(ArgumentError("The end of each curve in the transfinite interpolation should be the same as the beginning of the next curve."))
1973
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
278 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
279 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
280
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
281 """
1983
730c9848ad0b Update docstring for check_transfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1982
diff changeset
282 check_transfiniteinterpolation(Bool, s::TransfiniteInterpolationSurface)
1978
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
283
d7a5129517d9 Add docstrings
Jonatan Werpers <jonatan@werpers.com>
parents: 1977
diff changeset
284 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
285 """
1973
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
286 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
287 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
288 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
289 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
290
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
291 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
292 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
293 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
294
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
295 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
296 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
297 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
298
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
299 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
300 return false
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
301 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
302
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
303 return true
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
304 end
8e9575b518a1 Add tests for TransfiniteInterpolationSurface and implemnet check_tranfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents: 1971
diff changeset
305
1977
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
306 function Grids.jacobian(s::TransfiniteInterpolationSurface, ξ̄)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
307 u, v = ξ̄
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
308
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
309 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
310 P₀₀ = c₁(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
311 P₁₀ = c₂(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
312 P₁₁ = c₃(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
313 P₀₁ = c₄(0)
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
314
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
315 ∂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
316 -(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
317 )
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
318
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
319 ∂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
320 -(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
321 )
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
322
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
323 return [∂x̄∂ξ₁ ∂x̄∂ξ₂]
270675bb97be Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents: 1976
diff changeset
324 end