Mercurial > repos > public > sbplib_julia
comparison src/Grids/geometry.jl @ 1967:669361a8195a feature/grids/geometry_functions
Add tests and better constructors for LineSegment
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 12 Feb 2025 15:40:19 +0100 |
parents | 478b233999c5 |
children | 7f4a5146c84c |
comparison
equal
deleted
inserted
replaced
1966:478b233999c5 | 1967:669361a8195a |
---|---|
27 | 27 |
28 | 28 |
29 struct LineSegment{PT} | 29 struct LineSegment{PT} |
30 a::PT | 30 a::PT |
31 b::PT | 31 b::PT |
32 | |
33 LineSegment{PT}(p::PT, tangent::PT) where PT = new{PT}(p,tangent) | |
34 end | |
35 | |
36 function LineSegment(a, b) | |
37 S = length(a) | |
38 T = promote_type(eltype(a), eltype(b)) | |
39 | |
40 PT = SVector{S,T} | |
41 return LineSegment{PT}( | |
42 convert(PT, a), | |
43 convert(PT, b), | |
44 ) | |
45 end | |
46 | |
47 function LineSegment(a::Tuple, b::Tuple) | |
48 a = promote(a...) | |
49 b = promote(b...) | |
50 | |
51 return LineSegment(SVector(a), SVector(b)) | |
32 end | 52 end |
33 | 53 |
34 (c::LineSegment)(s) = (1-s)*c.a + s*c.b | 54 (c::LineSegment)(s) = (1-s)*c.a + s*c.b |
35 | 55 |
36 | 56 |