From ed90cb0f916b9edfec4f4443718e091a55a36ed3 Mon Sep 17 00:00:00 2001 From: Gerharbo Date: Fri, 17 Jul 2020 12:50:11 +0200 Subject: [PATCH 1/2] Updates Surge & added speed --- .../project.pbxproj | 4 +-- .../AppIcon.appiconset/Contents.json | 31 +++++++++++++++++++ HCKalmanFilter.podspec | 4 +-- HCKalmanFilter/HCKalmanAlgorithm.swift | 4 +-- HCKalmanFilter/HCMatrixObject.swift | 5 ++- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.pbxproj b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.pbxproj index 6ebb116..e790e22 100644 --- a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.pbxproj +++ b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.pbxproj @@ -405,7 +405,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.hypercubesoft.HCKalmanFilter; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Debug; }; @@ -420,7 +420,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.hypercubesoft.HCKalmanFilter; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.2; }; name = Release; }; diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample/Assets.xcassets/AppIcon.appiconset/Contents.json b/HCKalmanFilter Sample/HCKalmanFilter Sample/Assets.xcassets/AppIcon.appiconset/Contents.json index 36fc834..2a33078 100644 --- a/HCKalmanFilter Sample/HCKalmanFilter Sample/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/HCKalmanFilter Sample/HCKalmanFilter Sample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -144,6 +144,11 @@ "filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x" }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + }, { "size" : "60x60", "idiom" : "car", @@ -190,6 +195,20 @@ "role" : "appLauncher", "subtype" : "38mm" }, + { + "size" : "44x44", + "idiom" : "watch", + "scale" : "2x", + "role" : "appLauncher", + "subtype" : "40mm" + }, + { + "size" : "50x50", + "idiom" : "watch", + "scale" : "2x", + "role" : "appLauncher", + "subtype" : "44mm" + }, { "size" : "86x86", "idiom" : "watch", @@ -203,6 +222,18 @@ "scale" : "2x", "role" : "quickLook", "subtype" : "42mm" + }, + { + "size" : "108x108", + "idiom" : "watch", + "scale" : "2x", + "role" : "quickLook", + "subtype" : "44mm" + }, + { + "idiom" : "watch-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/HCKalmanFilter.podspec b/HCKalmanFilter.podspec index 017765f..d8326e7 100644 --- a/HCKalmanFilter.podspec +++ b/HCKalmanFilter.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.platform = :ios s.name = "HCKalmanFilter" -s.version = "1.2.2" +s.version = "1.2.3" s.summary = "HCKalmanFilter is Swift implementation of Kalman filter algorithm intended to solve problem with GPS tracking" s.description = <<-DESC @@ -17,6 +17,6 @@ s.source = { :git => "https://github.com/Hypercubesoft/HCKalmanFilter. s.ios.deployment_target = "9.0" s.source_files = "HCKalmanFilter/*" -s.dependency 'Surge', '~> 2.0.0' +s.dependency 'Surge', '~> 2.3.0' end \ No newline at end of file diff --git a/HCKalmanFilter/HCKalmanAlgorithm.swift b/HCKalmanFilter/HCKalmanAlgorithm.swift index 77b7007..e23c522 100644 --- a/HCKalmanFilter/HCKalmanAlgorithm.swift +++ b/HCKalmanFilter/HCKalmanAlgorithm.swift @@ -241,8 +241,8 @@ open class HCKalmanAlgorithm let lon = xk1.matrix[2,0] let altitude = xk1.matrix[4,0] - let kalmanCLLocation = CLLocation(coordinate: CLLocationCoordinate2D(latitude: lat,longitude: lon), altitude: altitude, horizontalAccuracy: self.previousLocation.horizontalAccuracy, verticalAccuracy: self.previousLocation.verticalAccuracy, timestamp: previousMeasureTime) - + let kalmanCLLocation = CLLocation(coordinate: CLLocationCoordinate2D(latitude: lat,longitude: lon), altitude: altitude, horizontalAccuracy: self.previousLocation.horizontalAccuracy, verticalAccuracy: self.previousLocation.verticalAccuracy, course:self.previousLocation.course, speed:self.previousLocation.speed, timestamp: previousMeasureTime) + return kalmanCLLocation } } diff --git a/HCKalmanFilter/HCMatrixObject.swift b/HCKalmanFilter/HCMatrixObject.swift index d99d301..70159ef 100644 --- a/HCKalmanFilter/HCMatrixObject.swift +++ b/HCKalmanFilter/HCMatrixObject.swift @@ -173,7 +173,7 @@ class HCMatrixObject { let result = HCMatrixObject(rows: left.rows, columns: left.columns) - result.matrix = Surge.add(left.matrix, y: right.matrix) + result.matrix = Surge.add(left.matrix, right.matrix) return result } @@ -214,7 +214,7 @@ class HCMatrixObject /// - returns: result HCMatrixObject object of multiplication operation static func *(left:HCMatrixObject, right:HCMatrixObject) -> HCMatrixObject? { - let resultMatrix = Surge.mul(left.matrix, y: right.matrix) + let resultMatrix = Surge.mul(left.matrix, right.matrix) let result = HCMatrixObject(rows: resultMatrix.rows,columns: resultMatrix.columns) result.matrix = resultMatrix @@ -222,4 +222,3 @@ class HCMatrixObject return result } } - From 3cd7b3ac1741e5420b03c910fd855fb56846b968 Mon Sep 17 00:00:00 2001 From: Gerharbo Date: Fri, 17 Jul 2020 12:50:28 +0200 Subject: [PATCH 2/2] Updates Surge & added speed --- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ .../xcschemes/xcschememanagement.plist | 14 ++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 20600 bytes 4 files changed, 30 insertions(+) create mode 100644 HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/xcuserdata/gerhardbos.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcuserdata/gerhardbos.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/xcuserdata/gerhardbos.xcuserdatad/xcschemes/xcschememanagement.plist b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/xcuserdata/gerhardbos.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..03a9019 --- /dev/null +++ b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcodeproj/xcuserdata/gerhardbos.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + HCKalmanFilter Sample.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcuserdata/gerhardbos.xcuserdatad/UserInterfaceState.xcuserstate b/HCKalmanFilter Sample/HCKalmanFilter Sample.xcworkspace/xcuserdata/gerhardbos.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8cb585e46f4b8cf77ee022ef1e3c128e34ea3438 GIT binary patch literal 20600 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 F`F|Z%;>G{~ literal 0 HcmV?d00001