Skip to content

Commit 2f12709

Browse files
committed
Merge branch 'next' into base/sharp-features
2 parents 972a41f + 95b3d67 commit 2f12709

File tree

14 files changed

+444
-130
lines changed

14 files changed

+444
-130
lines changed

cmake/GlobalOptions.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ include(InstallRequiredSystemLibraries)
1717
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1818
set(CMAKE_CXX_EXTENSIONS OFF)
1919
set(CMAKE_COLOR_DIAGNOSTICS ON)
20+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.29)
21+
set(CMAKE_LINKER_TYPE "SYSTEM")
22+
endif()
2023

2124
find_program(CLANG_TIDY "clang-tidy")
2225
if(CLANG_TIDY)

include/geode/basic/assert.hpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ namespace geode
5959
public:
6060
template < typename... Args >
6161
explicit OpenGeodeException( const Args&... message )
62-
: std::runtime_error{ absl::StrCat( message... ) },
63-
stack_size_{ absl::GetStackTrace(
64-
stack_.data(), MAX_STACK_DEPTH, NB_SKIPPED_STACKS ) }
62+
: std::runtime_error{ absl::StrCat( message... ) }
6563
{
64+
stack_.fill( nullptr );
65+
stack_size_ = absl::GetStackTrace(
66+
stack_.data(), MAX_STACK_DEPTH, NB_SKIPPED_STACKS );
6667
}
6768

6869
~OpenGeodeException() noexcept override = default;

include/geode/geometry/basic_objects/tetrahedron.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ namespace geode
3232
FORWARD_DECLARATION_DIMENSION_CLASS( Point );
3333
ALIAS_3D( BoundingBox );
3434
ALIAS_3D( Point );
35+
class Tetrahedron;
3536
class OwnerTetrahedron;
3637

3738
template < index_t dimension >
@@ -82,6 +83,7 @@ namespace geode
8283
Point3D point2,
8384
Point3D point3 ) noexcept;
8485

86+
OwnerTetrahedron( const Tetrahedron& other ) noexcept;
8587
OwnerTetrahedron( const OwnerTetrahedron& other ) noexcept;
8688
OwnerTetrahedron& operator=( const OwnerTetrahedron& other ) noexcept;
8789
OwnerTetrahedron( OwnerTetrahedron&& other ) noexcept;
@@ -111,10 +113,10 @@ namespace geode
111113
public:
112114
template < typename... Args >
113115
explicit OpenGeodeTetrahedronException(
114-
Tetrahedron tetrahedron_in, const Args&... message )
116+
const Tetrahedron& tetrahedron_in, const Args&... message )
115117
: OpenGeodeException{ absl::StrCat(
116118
message..., " at ", tetrahedron_in.string() ) },
117-
tetrahedron{ std::move( tetrahedron_in ) }
119+
tetrahedron{ tetrahedron_in }
118120
{
119121
}
120122

include/geode/mesh/builder/geode/geode_vertex_set_builder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@ namespace geode
6161
absl::Span< const index_t > old2new ) final;
6262

6363
private:
64-
OpenGeodeVertexSet& geode_vertex_set_;
64+
[[maybe_unused]] OpenGeodeVertexSet& geode_vertex_set_;
6565
};
6666
} // namespace geode

include/geode/mesh/core/internal/grid_impl.hpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ namespace geode
125125
for( const auto v : Range{ nv } )
126126
{
127127
tasks[task_id++] =
128-
async::spawn( [&builder, &origin, v, du, dv, nu, nv] {
128+
async::spawn( [&builder, &origin, v, du, dv, nu] {
129129
for( const auto u : Range{ nu } )
130130
{
131131
const auto vertex = u + v * nu;
@@ -156,7 +156,7 @@ namespace geode
156156
for( const auto v : Range{ nv } )
157157
{
158158
tasks[task_id++] = async::spawn(
159-
[&builder, &origin, v, &vector_u, &vector_v, nu, nv] {
159+
[&builder, &origin, v, &vector_u, &vector_v, nu] {
160160
for( const auto u : Range{ nu } )
161161
{
162162
const auto vertex = u + v * nu;
@@ -188,17 +188,16 @@ namespace geode
188188
{
189189
for( const auto v : Range{ nv } )
190190
{
191-
tasks[task_id++] = async::spawn(
192-
[&builder, &origin, v, w, du, dv, dw, nu, nv, nw] {
193-
for( const auto u : Range{ nu } )
194-
{
195-
const auto vertex = u + v * nu + w * nu * nv;
196-
const Point3D translation{ { u * du, v * dv,
197-
w * dw } };
198-
builder.set_point(
199-
vertex, origin + translation );
200-
}
201-
} );
191+
tasks[task_id++] = async::spawn( [&builder, &origin, v, w,
192+
du, dv, dw, nu, nv] {
193+
for( const auto u : Range{ nu } )
194+
{
195+
const auto vertex = u + v * nu + w * nu * nv;
196+
const Point3D translation{ { u * du, v * dv,
197+
w * dw } };
198+
builder.set_point( vertex, origin + translation );
199+
}
200+
} );
202201
}
203202
}
204203
for( auto& task : async::when_all( tasks ).get() )
@@ -228,7 +227,7 @@ namespace geode
228227
{
229228
tasks[task_id++] =
230229
async::spawn( [&builder, &origin, v, w, &vector_u,
231-
&vector_v, &vector_w, nu, nv, nw] {
230+
&vector_v, &vector_w, nu, nv] {
232231
for( const auto u : Range{ nu } )
233232
{
234233
const auto vertex = u + v * nu + w * nu * nv;

include/geode/model/representation/builder/brep_builder.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,16 +230,16 @@ namespace geode
230230
const Surface3D& surface, const ModelBoundary3D& boundary );
231231

232232
void add_corner_in_corner_collection(
233-
const Corner3D& surface, const CornerCollection3D& collection );
233+
const Corner3D& corner, const CornerCollection3D& collection );
234234

235235
void add_line_in_line_collection(
236-
const Line3D& surface, const LineCollection3D& collection );
236+
const Line3D& line, const LineCollection3D& collection );
237237

238238
void add_surface_in_surface_collection(
239239
const Surface3D& surface, const SurfaceCollection3D& collection );
240240

241241
void add_block_in_block_collection(
242-
const Block3D& surface, const BlockCollection3D& collection );
242+
const Block3D& block, const BlockCollection3D& collection );
243243

244244
void set_point( index_t unique_vertex, const Point3D& point );
245245

src/geode/geometry/basic_objects/tetrahedron.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,14 @@ namespace geode
117117
: Base( point0, point1, point2, point3 )
118118
{
119119
}
120+
OwnerTetrahedron::OwnerTetrahedron( const Tetrahedron& other ) noexcept
121+
: Base( other.vertices()[0],
122+
other.vertices()[1],
123+
other.vertices()[2],
124+
other.vertices()[3] )
125+
{
126+
}
127+
120128
OwnerTetrahedron::OwnerTetrahedron(
121129
const OwnerTetrahedron& ) noexcept = default;
122130
OwnerTetrahedron& OwnerTetrahedron::operator=(

src/geode/geometry/bounding_box.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ namespace geode
292292

293293
template <>
294294
template <>
295-
bool BoundingBox< 3 >::intersects< 3 >(
295+
bool opengeode_geometry_api BoundingBox< 3 >::intersects< 3 >(
296296
const Triangle< 3 >& triangle ) const
297297
{
298298
const auto& vertices = triangle.vertices();
@@ -382,7 +382,7 @@ namespace geode
382382

383383
template <>
384384
template <>
385-
bool BoundingBox< 2 >::intersects< 2 >(
385+
bool opengeode_geometry_api BoundingBox< 2 >::intersects< 2 >(
386386
const Triangle< 2 >& triangle ) const
387387
{
388388
if( point_triangle_position( center(), triangle ) == POSITION::inside )
@@ -512,10 +512,6 @@ namespace geode
512512
template class opengeode_geometry_api BoundingBox< 2 >;
513513
template class opengeode_geometry_api BoundingBox< 3 >;
514514

515-
template opengeode_geometry_api bool BoundingBox< 2 >::intersects< 2 >(
516-
const Triangle< 2 >& ) const;
517-
template opengeode_geometry_api bool BoundingBox< 3 >::intersects< 3 >(
518-
const Triangle< 3 >& ) const;
519515
template opengeode_geometry_api bool BoundingBox< 3 >::intersects< 3 >(
520516
const Tetrahedron& ) const;
521517
} // namespace geode

src/geode/geometry/distance.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
#include <geode/geometry/barycentric_coordinates.hpp>
3232
#include <geode/geometry/basic_objects/circle.hpp>
33+
#include <geode/geometry/basic_objects/ellipse.hpp>
3334
#include <geode/geometry/basic_objects/infinite_line.hpp>
3435
#include <geode/geometry/basic_objects/plane.hpp>
3536
#include <geode/geometry/basic_objects/segment.hpp>
@@ -846,8 +847,9 @@ namespace geode
846847
}
847848

848849
template <>
849-
std::tuple< double, Point3D > point_triangle_distance(
850-
const Point3D& point, const Triangle3D& triangle )
850+
std::tuple< double, Point3D >
851+
opengeode_geometry_api point_triangle_distance(
852+
const Point3D& point, const Triangle3D& triangle )
851853
{
852854
if( const auto pivot = triangle.pivot() )
853855
{
@@ -858,8 +860,9 @@ namespace geode
858860
}
859861

860862
template <>
861-
std::tuple< double, Point2D > point_triangle_distance(
862-
const Point2D& point, const Triangle2D& triangle )
863+
std::tuple< double, Point2D >
864+
opengeode_geometry_api point_triangle_distance(
865+
const Point2D& point, const Triangle2D& triangle )
863866
{
864867
if( may_point_be_in_triangle( point, triangle ) )
865868
{
@@ -1565,8 +1568,6 @@ namespace geode
15651568
segment_line_distance( const Segment2D&, const InfiniteLine2D& );
15661569
template double opengeode_geometry_api point_line_distance(
15671570
const Point2D&, const InfiniteLine2D& );
1568-
template std::tuple< double, Point2D > opengeode_geometry_api
1569-
point_triangle_distance( const Point2D&, const Triangle2D& );
15701571
template std::tuple< double, Point2D > opengeode_geometry_api
15711572
point_sphere_distance( const Point2D&, const Sphere2D& );
15721573
template std::tuple< double, Point2D > opengeode_geometry_api
@@ -1586,8 +1587,6 @@ namespace geode
15861587
segment_line_distance( const Segment3D&, const InfiniteLine3D& );
15871588
template double opengeode_geometry_api point_line_distance(
15881589
const Point3D&, const InfiniteLine3D& );
1589-
template std::tuple< double, Point3D > opengeode_geometry_api
1590-
point_triangle_distance( const Point3D&, const Triangle3D& );
15911590
template std::tuple< double, Point3D > opengeode_geometry_api
15921591
point_sphere_distance( const Point3D&, const Sphere3D& );
15931592
template std::tuple< double, Point3D > opengeode_geometry_api

src/geode/mesh/core/light_regular_grid.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <geode/basic/logger.hpp>
2727
#include <geode/basic/pimpl_impl.hpp>
2828

29+
#include <geode/geometry/bounding_box.hpp>
2930
#include <geode/geometry/point.hpp>
3031
#include <geode/geometry/vector.hpp>
3132

0 commit comments

Comments
 (0)