Mercurial > repos > public > sbplib_julia
annotate src/Grids/geometry.jl @ 2073:bc09d0bfac65 feature/grids/geometry_functions tip
Remove resolved review comment
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Tue, 17 Feb 2026 20:40:53 +0100 |
| parents | c36812de3f2d |
| children |
| 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 |
| 1978 | 9 """ |
| 10 Line(p,t) | |
| 11 | |
| 12 A line, as a callable object, starting at `p` with tangent `t`. | |
|
2070
c68fa6c74477
Explain parametrizations in docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
2069
diff
changeset
|
13 The parametrization is ``l(s) = p + st``. |
| 1978 | 14 |
| 15 # Example | |
| 16 ```julia-repl | |
| 17 julia> l = Grids.Line([1,1],[2,1]) | |
| 18 Diffinitive.Grids.Line{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1]) | |
| 19 | |
| 20 julia> l(0) | |
| 21 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2): | |
| 22 1 | |
| 23 1 | |
| 24 | |
| 25 julia> l(1) | |
| 26 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2): | |
| 27 3 | |
| 28 2 | |
| 29 ``` | |
| 30 | |
| 31 See also: [`LineSegment`](@ref). | |
| 32 """ | |
|
1966
478b233999c5
Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents:
1916
diff
changeset
|
33 function Line(p, t) |
|
1970
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
34 p = SVector{length(p)}(p) |
|
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
35 t = SVector{length(t)}(t) |
|
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
36 p, t = promote(p, t) |
|
1966
478b233999c5
Add tests and better constructors for Line
Jonatan Werpers <jonatan@werpers.com>
parents:
1916
diff
changeset
|
37 |
|
1970
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
38 return Line{typeof(p)}(p,t) |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 (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
|
42 |
|
1974
3ed7ca1f60c4
Implement Grids.jacobian for Line
Jonatan Werpers <jonatan@werpers.com>
parents:
1973
diff
changeset
|
43 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
|
44 |
|
1916
6859089b361e
Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents:
1915
diff
changeset
|
45 struct LineSegment{PT} |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 a::PT |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 b::PT |
|
1967
669361a8195a
Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1966
diff
changeset
|
48 |
|
669361a8195a
Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1966
diff
changeset
|
49 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
|
50 end |
|
669361a8195a
Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1966
diff
changeset
|
51 |
|
2056
00b274a118e0
Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents:
2014
diff
changeset
|
52 |
| 1978 | 53 """ |
| 54 LineSegment(a,b) | |
| 55 | |
| 56 A line segment, as a callable object, from `a` to `b`. | |
|
2071
9e9c56f5a656
Add parameter validation when calling a transfinite interpolation object
Jonatan Werpers <jonatan@werpers.com>
parents:
2070
diff
changeset
|
57 The parametrization is ``l(s) = (1-s)a + s*b`` where ``s∈(0,1)``. |
| 1978 | 58 |
| 59 # Example | |
| 60 ```julia-repl | |
| 61 julia> l = Grids.LineSegment([1,1],[2,1]) | |
| 62 Diffinitive.Grids.LineSegment{StaticArraysCore.SVector{2, Int64}}([1, 1], [2, 1]) | |
| 63 | |
| 64 julia> l(0) | |
| 65 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2): | |
| 66 1 | |
| 67 1 | |
| 68 | |
| 69 julia> l(0.5) | |
| 70 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2): | |
| 71 1.5 | |
| 72 1.0 | |
| 73 | |
| 74 julia> l(1) | |
| 75 2-element StaticArraysCore.SVector{2, Int64} with indices SOneTo(2): | |
| 76 2 | |
| 77 1 | |
| 78 ``` | |
| 79 | |
| 80 See also: [`Line`](@ref). | |
| 81 """ | |
|
1967
669361a8195a
Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1966
diff
changeset
|
82 function LineSegment(a, b) |
|
1970
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
83 a = SVector{length(a)}(a) |
|
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
84 b = SVector{length(b)}(b) |
|
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
85 a, b = promote(a, b) |
|
1967
669361a8195a
Add tests and better constructors for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1966
diff
changeset
|
86 |
|
1970
deeb61325320
Simplify constructors for Line and LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1969
diff
changeset
|
87 return LineSegment{typeof(a)}(a,b) |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 (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
|
91 |
|
1975
79adad4a15d6
Implement Grids.jacobian for LineSegment
Jonatan Werpers <jonatan@werpers.com>
parents:
1974
diff
changeset
|
92 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
|
93 |
|
2056
00b274a118e0
Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents:
2014
diff
changeset
|
94 |
| 1978 | 95 """ |
| 96 linesegments(ps...) | |
| 97 | |
| 98 An array of line segments between the points `ps[1]`, `ps[2]`, and so on. | |
| 99 | |
| 100 See also: [`polygon_edges`](@ref). | |
| 101 """ | |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 function linesegments(ps...) |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 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
|
104 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 |
| 1978 | 107 """ |
| 108 polygon_edges(ps...) | |
| 109 | |
| 110 An array of line segments between the points `ps[1]`, `ps[2]`, and so on | |
| 111 including the segment between `ps[end]` and `ps[1]`. | |
| 112 | |
| 113 See also: [`linesegments`](@ref). | |
| 114 """ | |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 function polygon_edges(ps...) |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 n = length(ps) |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 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
|
118 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 |
|
2056
00b274a118e0
Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents:
2014
diff
changeset
|
120 |
|
1969
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
121 struct Circle{PT,T} |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 c::PT |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 r::T |
|
1969
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
124 |
|
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
125 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
|
126 end |
|
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
127 |
| 1978 | 128 """ |
| 129 Circle(c,r) | |
| 130 | |
| 131 A circle with center `c` and radius `r` paramatrized with the angle to the x-axis. | |
| 132 | |
| 133 # Example | |
| 134 ```julia-repl | |
| 135 julia> c = Grids.Circle([1,1], 2) | |
| 136 Diffinitive.Grids.Circle{StaticArraysCore.SVector{2, Int64}, Int64}([1, 1], 2) | |
| 137 | |
| 138 julia> c(0) | |
| 139 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2): | |
| 140 3.0 | |
| 141 1.0 | |
| 142 | |
| 143 julia> c(π/2) | |
| 144 2-element StaticArraysCore.SVector{2, Float64} with indices SOneTo(2): | |
| 145 1.0000000000000002 | |
| 146 3.0 | |
| 147 ``` | |
| 148 """ | |
|
1969
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
149 function Circle(c,r) |
|
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
150 c = SVector{2}(c) |
|
7f4a5146c84c
Add tests and better constructor for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1967
diff
changeset
|
151 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
|
152 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 function (C::Circle)(θ) |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
155 (;c, r) = C |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
156 c + r*@SVector[cos(θ), sin(θ)] |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
157 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
158 |
|
1976
34a7e3919e9a
Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1975
diff
changeset
|
159 function Grids.jacobian(C::Circle, θ) |
|
34a7e3919e9a
Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1975
diff
changeset
|
160 (;r) = C |
|
34a7e3919e9a
Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1975
diff
changeset
|
161 r*@SVector[-sin(θ), cos(θ)] |
|
34a7e3919e9a
Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1975
diff
changeset
|
162 end |
|
34a7e3919e9a
Implement Grids.jacobian for Circle
Jonatan Werpers <jonatan@werpers.com>
parents:
1975
diff
changeset
|
163 |
|
2056
00b274a118e0
Add review comments
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents:
2014
diff
changeset
|
164 |
|
2011
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
165 struct Arc{PT,T} |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
166 c::Circle{PT,T} |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
167 θ₀::T |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
168 θ₁::T |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
169 end |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
170 |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
171 """ |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
172 Arc(C::Circle, θ₀, θ₁) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
173 |
|
2014
6478c29effce
Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2013
diff
changeset
|
174 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
|
175 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
|
176 |
|
6478c29effce
Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2013
diff
changeset
|
177 See also: [`arc`](@ref), [`Circle`](@ref). |
|
2011
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
178 """ |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
179 function Arc(C, θ₀, θ₁) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
180 r, θ₀, θ₁ = promote(C.r, θ₀, θ₁) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
181 |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
182 return Arc(Circle(C.c, r), θ₀, θ₁) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
183 end |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
184 |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
185 function (A::Arc)(t) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
186 (; θ₀, θ₁) = A |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
187 return A.c((1-t)*θ₀ + t*θ₁) |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
188 end |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
189 |
|
2013
7895b509f9bf
Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2012
diff
changeset
|
190 function Grids.jacobian(A::Arc, t) |
|
7895b509f9bf
Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2012
diff
changeset
|
191 (;c, θ₀, θ₁) = A |
|
7895b509f9bf
Implement Grids.jacobian for Arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2012
diff
changeset
|
192 return (θ₁-θ₀)*jacobian(c, t) |
|
2011
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
193 end |
|
d0b6c63c506e
Add Arc type for representing partial circles
Jonatan Werpers <jonatan@werpers.com>
parents:
1983
diff
changeset
|
194 |
|
2012
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
195 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
196 """ |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
197 arc(a,b,r) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
198 |
|
2014
6478c29effce
Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2013
diff
changeset
|
199 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
|
200 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
|
201 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
|
202 `A(1)` to `b`. |
|
6478c29effce
Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2013
diff
changeset
|
203 |
|
6478c29effce
Add docstring for Arc and arc
Jonatan Werpers <jonatan@werpers.com>
parents:
2013
diff
changeset
|
204 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
|
205 """ |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
206 function arc(a,b,r) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
207 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
|
208 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
|
209 end |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
210 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
211 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
|
212 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
213 α = 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
|
214 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
|
215 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
216 c = (a+b)/2 + α*t̂ |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
217 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
218 ca = a-c |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
219 cb = b-c |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
220 θₐ = atan(ca[2],ca[1]) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
221 θᵦ = atan(cb[2],cb[1]) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
222 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
223 Δθ = mod(θᵦ-θₐ+π, 2π)-π # Δθ in the interval (-π,π) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
224 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
225 if r > 0 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
226 Δθ = abs(Δθ) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
227 else |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
228 Δθ = -abs(Δθ) |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
229 end |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
230 |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
231 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
|
232 end |
|
4617e4b74b82
Add arc() for constructing circle arcs between two points
Jonatan Werpers <jonatan@werpers.com>
parents:
2011
diff
changeset
|
233 |
| 1978 | 234 """ |
| 235 TransfiniteInterpolationSurface(c₁, c₂, c₃, c₄) | |
| 236 | |
| 237 A surface defined by the transfinite interpolation of the curves `c₁`, `c₂`, `c₃`, and `c₄`. | |
|
2070
c68fa6c74477
Explain parametrizations in docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
2069
diff
changeset
|
238 The transfinite interpolation maps the unit square ([0,1]⊗[0,1]) to the patch delimited by the given curves. |
|
c68fa6c74477
Explain parametrizations in docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
2069
diff
changeset
|
239 The curves should encircle the patch counterclockwise. |
|
c68fa6c74477
Explain parametrizations in docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
2069
diff
changeset
|
240 |
|
c68fa6c74477
Explain parametrizations in docstrings
Jonatan Werpers <jonatan@werpers.com>
parents:
2069
diff
changeset
|
241 See https://en.wikipedia.org/wiki/Transfinite_interpolation for more information on transfinite interpolation. |
| 1978 | 242 """ |
|
1916
6859089b361e
Remove abstract types for Curve and surface
Jonatan Werpers <jonatan@werpers.com>
parents:
1915
diff
changeset
|
243 struct TransfiniteInterpolationSurface{T1,T2,T3,T4} |
|
1915
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
244 c₁::T1 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
245 c₂::T2 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
246 c₃::T3 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
247 c₄::T4 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
248 end |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
249 |
|
c003685d9926
Add geometry functions removed from feature/grids/manifolds
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
250 function (s::TransfiniteInterpolationSurface)(u,v) |
|
2071
9e9c56f5a656
Add parameter validation when calling a transfinite interpolation object
Jonatan Werpers <jonatan@werpers.com>
parents:
2070
diff
changeset
|
251 if (u,v) ∉ unitsquare() |
|
9e9c56f5a656
Add parameter validation when calling a transfinite interpolation object
Jonatan Werpers <jonatan@werpers.com>
parents:
2070
diff
changeset
|
252 throw(DomainError((u,v), "Transfinite interpolation was called with parameters outside the unit square.")) |
|
9e9c56f5a656
Add parameter validation when calling a transfinite interpolation object
Jonatan Werpers <jonatan@werpers.com>
parents:
2070
diff
changeset
|
253 end |
|
1915
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 | 268 """ |
| 269 check_transfiniteinterpolation(s::TransfiniteInterpolationSurface) | |
| 270 | |
| 271 Throw an error if the ends of the curves in the transfinite interpolation do not match. | |
| 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 | 281 """ |
|
1983
730c9848ad0b
Update docstring for check_transfiniteinterpolation
Jonatan Werpers <jonatan@werpers.com>
parents:
1982
diff
changeset
|
282 check_transfiniteinterpolation(Bool, s::TransfiniteInterpolationSurface) |
| 1978 | 283 |
| 284 Return true if the ends of the curves in the transfinite interpolation match. | |
| 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, ξ̄) |
|
2072
c36812de3f2d
Add parameter validation when evaluating jacobian for transfinite interpolation
Jonatan Werpers <jonatan@werpers.com>
parents:
2071
diff
changeset
|
307 if ξ̄ ∉ unitsquare() |
|
c36812de3f2d
Add parameter validation when evaluating jacobian for transfinite interpolation
Jonatan Werpers <jonatan@werpers.com>
parents:
2071
diff
changeset
|
308 throw(DomainError(ξ̄, "Transfinite interpolation was called with parameters outside the unit square.")) |
|
c36812de3f2d
Add parameter validation when evaluating jacobian for transfinite interpolation
Jonatan Werpers <jonatan@werpers.com>
parents:
2071
diff
changeset
|
309 end |
|
1977
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
310 u, v = ξ̄ |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
311 |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
312 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
|
313 P₀₀ = c₁(0) |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
314 P₁₀ = c₂(0) |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
315 P₁₁ = c₃(0) |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
316 P₀₁ = c₄(0) |
|
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 ∂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
|
319 -(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
|
320 ) |
|
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 ∂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
|
323 -(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
|
324 ) |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
325 |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
326 return [∂x̄∂ξ₁ ∂x̄∂ξ₂] |
|
270675bb97be
Implement Grids.jacobian for TransfiniteInterpolationSurface
Jonatan Werpers <jonatan@werpers.com>
parents:
1976
diff
changeset
|
327 end |
