Skip to content

Commit a25653d

Browse files
committed
Update Euclid to 0.8.13
1 parent 6806820 commit a25653d

33 files changed

+1226
-312
lines changed

Euclid/CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
# Change Log
22

3-
## [0.8.12](https://github.com/nicklockwood/Euclid/releases/tag/0.8.12) (2025-10-25)
3+
## [0.8.13](https://github.com/nicklockwood/Euclid/releases/tag/0.8.13) (2025-11-09)
4+
5+
- Added `Mesh.minkowskiDifference()` function (inverse of `minkowskiSum()`)
6+
- Added divide and remainder functions for `Angle` type
7+
- Fixed missing vertices when using `Mesh.convexHull` or `minkowskiSum()`
8+
- Fixed incorrect normal calculation for extrusions along a path
9+
- Fixed angular misalignment with twisted extrusions
10+
- Fixed bug where lofting coplanar shapes produced inverted faces
11+
- Fixed `Path.orderedEdges` output for nested paths
12+
- Fixed spurious assertion when merging polygons
13+
- Improved `Mesh.convexHull()` performance by ~20%
14+
- Renamed `Polygon.center` to `centroid`
15+
16+
## [0.8.12](https://github.com/nicklockwood/Euclid/releases/tag/0.8.12) (2025-10-26)
417

518
- Fixed crash when creating a path from empty subpaths
619
- Fixed `Mesh.minkowskiSum()` output for off-center input meshes

Euclid/Euclid.docc/Extensions/Angle.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
- ``Angle/-=(_:_:)``
3939
- ``Angle/*(_:_:)-2ew65``
4040
- ``Angle/*(_:_:)-8l78z``
41-
- ``Angle/*=(_:_:)``
42-
- ``Angle//(_:_:)``
43-
- ``Angle//=(_:_:)``
41+
- ``Angle/*=(_:_:)-(_,Double)``
42+
- ``Angle/*=(_:_:)-(_,Int)``
43+
- ``Angle//(_:_:)->Double``
44+
- ``Angle//(_:_:)-(_,Double)``
45+
- ``Angle//(_:_:)-(_,Int)``
46+
- ``Angle//=(_:_:)-(_,Double)``
47+
- ``Angle//=(_:_:)-(_,Int)``

Euclid/Euclid.podspec.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Euclid",
3-
"version": "0.8.12",
3+
"version": "0.8.13",
44
"license": {
55
"type": "MIT",
66
"file": "LICENSE.md"
@@ -10,7 +10,7 @@
1010
"authors": "Nick Lockwood",
1111
"source": {
1212
"git": "https://github.com/nicklockwood/Euclid.git",
13-
"tag": "0.8.12"
13+
"tag": "0.8.13"
1414
},
1515
"source_files": "Sources",
1616
"requires_arc": true,

Euclid/Euclid.xcodeproj/project.pbxproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,7 @@
912912
"@executable_path/../Frameworks",
913913
"@loader_path/Frameworks",
914914
);
915-
MARKETING_VERSION = 0.8.12;
915+
MARKETING_VERSION = 0.8.13;
916916
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
917917
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14";
918918
OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=75";
@@ -951,7 +951,7 @@
951951
"@executable_path/../Frameworks",
952952
"@loader_path/Frameworks",
953953
);
954-
MARKETING_VERSION = 0.8.12;
954+
MARKETING_VERSION = 0.8.13;
955955
MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
956956
MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++14";
957957
OTHER_SWIFT_FLAGS = "-Xfrontend -warn-long-expression-type-checking=75";
@@ -1035,7 +1035,7 @@
10351035
"$(inherited)",
10361036
"@executable_path/Frameworks",
10371037
);
1038-
MARKETING_VERSION = 0.8.12;
1038+
MARKETING_VERSION = 0.8.13;
10391039
PRODUCT_BUNDLE_IDENTIFIER = com.charcoaldesign.EuclidExample;
10401040
PRODUCT_NAME = EuclidExample;
10411041
SDKROOT = iphoneos;
@@ -1068,7 +1068,7 @@
10681068
"$(inherited)",
10691069
"@executable_path/Frameworks",
10701070
);
1071-
MARKETING_VERSION = 0.8.12;
1071+
MARKETING_VERSION = 0.8.13;
10721072
PRODUCT_BUNDLE_IDENTIFIER = com.charcoaldesign.EuclidExample;
10731073
PRODUCT_NAME = EuclidExample;
10741074
SDKROOT = iphoneos;
@@ -1097,7 +1097,7 @@
10971097
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
10981098
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
10991099
MACOSX_DEPLOYMENT_TARGET = 10.14;
1100-
MARKETING_VERSION = 0.8.12;
1100+
MARKETING_VERSION = 0.8.13;
11011101
PRODUCT_BUNDLE_IDENTIFIER = com.charcoaldesign.PerformanceTests;
11021102
PRODUCT_NAME = "$(TARGET_NAME)";
11031103
SDKROOT = auto;
@@ -1127,7 +1127,7 @@
11271127
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
11281128
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
11291129
MACOSX_DEPLOYMENT_TARGET = 10.14;
1130-
MARKETING_VERSION = 0.8.12;
1130+
MARKETING_VERSION = 0.8.13;
11311131
PRODUCT_BUNDLE_IDENTIFIER = com.charcoaldesign.PerformanceTests;
11321132
PRODUCT_NAME = "$(TARGET_NAME)";
11331133
SDKROOT = auto;

Euclid/Euclid.xcodeproj/xcshareddata/xcbaselines/01F995E62E6455BD0017AAC8.xcbaseline/8C068051-1BA5-4790-A538-AF1EC8F13366.plist

Lines changed: 125 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,92 @@
66
<dict>
77
<key>PerformanceTests</key>
88
<dict>
9+
<key>testConvexHullOfLineSegments()</key>
10+
<dict>
11+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
12+
<dict>
13+
<key>baselineAverage</key>
14+
<real>0.161000</real>
15+
<key>baselineIntegrationDisplayName</key>
16+
<string>Local Baseline</string>
17+
</dict>
18+
</dict>
919
<key>testConvexHullOfMeshes()</key>
1020
<dict>
1121
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
1222
<dict>
1323
<key>baselineAverage</key>
14-
<real>0.161218</real>
24+
<real>0.181000</real>
25+
<key>baselineIntegrationDisplayName</key>
26+
<string>Local Baseline</string>
27+
</dict>
28+
</dict>
29+
<key>testConvexHullOfPaths()</key>
30+
<dict>
31+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
32+
<dict>
33+
<key>baselineAverage</key>
34+
<real>0.173000</real>
35+
<key>baselineIntegrationDisplayName</key>
36+
<string>Local Baseline</string>
37+
</dict>
38+
</dict>
39+
<key>testConvexHullOfVertices()</key>
40+
<dict>
41+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
42+
<dict>
43+
<key>baselineAverage</key>
44+
<real>0.170000</real>
45+
<key>baselineIntegrationDisplayName</key>
46+
<string>Local Baseline</string>
47+
</dict>
48+
</dict>
49+
<key>testDetesselate()</key>
50+
<dict>
51+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
52+
<dict>
53+
<key>baselineAverage</key>
54+
<real>0.060000</real>
55+
<key>baselineIntegrationDisplayName</key>
56+
<string>Local Baseline</string>
57+
</dict>
58+
</dict>
59+
<key>testDifference()</key>
60+
<dict>
61+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
62+
<dict>
63+
<key>baselineAverage</key>
64+
<real>0.071889</real>
65+
<key>baselineIntegrationDisplayName</key>
66+
<string>Local Baseline</string>
67+
</dict>
68+
</dict>
69+
<key>testEdgeStroke()</key>
70+
<dict>
71+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
72+
<dict>
73+
<key>baselineAverage</key>
74+
<real>0.209000</real>
75+
<key>baselineIntegrationDisplayName</key>
76+
<string>Local Baseline</string>
77+
</dict>
78+
</dict>
79+
<key>testMakeWatertight()</key>
80+
<dict>
81+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
82+
<dict>
83+
<key>baselineAverage</key>
84+
<real>0.055247</real>
85+
<key>baselineIntegrationDisplayName</key>
86+
<string>Local Baseline</string>
87+
</dict>
88+
</dict>
89+
<key>testMakeWatertightWhenAlreadyWatertight()</key>
90+
<dict>
91+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
92+
<dict>
93+
<key>baselineAverage</key>
94+
<real>0.005662</real>
1595
<key>baselineIntegrationDisplayName</key>
1696
<string>Local Baseline</string>
1797
</dict>
@@ -21,7 +101,7 @@
21101
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
22102
<dict>
23103
<key>baselineAverage</key>
24-
<real>0.098703</real>
104+
<real>0.094800</real>
25105
<key>baselineIntegrationDisplayName</key>
26106
<string>Local Baseline</string>
27107
</dict>
@@ -31,7 +111,7 @@
31111
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
32112
<dict>
33113
<key>baselineAverage</key>
34-
<real>0.067399</real>
114+
<real>0.059100</real>
35115
<key>baselineIntegrationDisplayName</key>
36116
<string>Local Baseline</string>
37117
</dict>
@@ -51,7 +131,7 @@
51131
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
52132
<dict>
53133
<key>baselineAverage</key>
54-
<real>1.300000</real>
134+
<real>0.332000</real>
55135
<key>baselineIntegrationDisplayName</key>
56136
<string>Local Baseline</string>
57137
</dict>
@@ -61,7 +141,47 @@
61141
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
62142
<dict>
63143
<key>baselineAverage</key>
64-
<real>0.343000</real>
144+
<real>0.213000</real>
145+
<key>baselineIntegrationDisplayName</key>
146+
<string>Local Baseline</string>
147+
</dict>
148+
</dict>
149+
<key>testPathFill()</key>
150+
<dict>
151+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
152+
<dict>
153+
<key>baselineAverage</key>
154+
<real>0.208000</real>
155+
<key>baselineIntegrationDisplayName</key>
156+
<string>Local Baseline</string>
157+
</dict>
158+
</dict>
159+
<key>testPathStroke()</key>
160+
<dict>
161+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
162+
<dict>
163+
<key>baselineAverage</key>
164+
<real>0.032600</real>
165+
<key>baselineIntegrationDisplayName</key>
166+
<string>Local Baseline</string>
167+
</dict>
168+
</dict>
169+
<key>testStencil()</key>
170+
<dict>
171+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
172+
<dict>
173+
<key>baselineAverage</key>
174+
<real>0.070657</real>
175+
<key>baselineIntegrationDisplayName</key>
176+
<string>Local Baseline</string>
177+
</dict>
178+
</dict>
179+
<key>testUnion()</key>
180+
<dict>
181+
<key>com.apple.XCTPerformanceMetric_WallClockTime</key>
182+
<dict>
183+
<key>baselineAverage</key>
184+
<real>0.073559</real>
65185
<key>baselineIntegrationDisplayName</key>
66186
<string>Local Baseline</string>
67187
</dict>

0 commit comments

Comments
 (0)