How to calculate coordinate X meters away from a point but towards another in C#
Let's say I have 2 coordinates that are ~222.33 meters away from each other :
A: 49.25818, -123.20626
B: 49.25813, -123.2032
Those 2 points makes a segment.
How can I calculate the coordinate of point Z that is X
meters away from either A or B but towards the other point?
I already know the distance between my 2 points using System.Device.Location
library.
GeoCoordinate A = new GeoCoordinate(49.25818, -123.20626);
GeoCoordinate B = new GeoCoordinate(49.25813, -123.2032);
var distanceInMeters = A.GetDistanceTo(B);
// distanceInMeters = 222.33039783713738
I'm looking for something like this:
GeoCoordinate GetPointTowards(GeoCoordinate fromPoint, GeoCoordinate towardPoint, double distanceInMeter) {
[???]
}
I think I may need the bearing or something to be able to get the new point location.
Most examples I've found are for iOS, Android or GMaps with specific libraries..
c# geospatial distance
|
show 1 more comment
Let's say I have 2 coordinates that are ~222.33 meters away from each other :
A: 49.25818, -123.20626
B: 49.25813, -123.2032
Those 2 points makes a segment.
How can I calculate the coordinate of point Z that is X
meters away from either A or B but towards the other point?
I already know the distance between my 2 points using System.Device.Location
library.
GeoCoordinate A = new GeoCoordinate(49.25818, -123.20626);
GeoCoordinate B = new GeoCoordinate(49.25813, -123.2032);
var distanceInMeters = A.GetDistanceTo(B);
// distanceInMeters = 222.33039783713738
I'm looking for something like this:
GeoCoordinate GetPointTowards(GeoCoordinate fromPoint, GeoCoordinate towardPoint, double distanceInMeter) {
[???]
}
I think I may need the bearing or something to be able to get the new point location.
Most examples I've found are for iOS, Android or GMaps with specific libraries..
c# geospatial distance
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
1
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26
|
show 1 more comment
Let's say I have 2 coordinates that are ~222.33 meters away from each other :
A: 49.25818, -123.20626
B: 49.25813, -123.2032
Those 2 points makes a segment.
How can I calculate the coordinate of point Z that is X
meters away from either A or B but towards the other point?
I already know the distance between my 2 points using System.Device.Location
library.
GeoCoordinate A = new GeoCoordinate(49.25818, -123.20626);
GeoCoordinate B = new GeoCoordinate(49.25813, -123.2032);
var distanceInMeters = A.GetDistanceTo(B);
// distanceInMeters = 222.33039783713738
I'm looking for something like this:
GeoCoordinate GetPointTowards(GeoCoordinate fromPoint, GeoCoordinate towardPoint, double distanceInMeter) {
[???]
}
I think I may need the bearing or something to be able to get the new point location.
Most examples I've found are for iOS, Android or GMaps with specific libraries..
c# geospatial distance
Let's say I have 2 coordinates that are ~222.33 meters away from each other :
A: 49.25818, -123.20626
B: 49.25813, -123.2032
Those 2 points makes a segment.
How can I calculate the coordinate of point Z that is X
meters away from either A or B but towards the other point?
I already know the distance between my 2 points using System.Device.Location
library.
GeoCoordinate A = new GeoCoordinate(49.25818, -123.20626);
GeoCoordinate B = new GeoCoordinate(49.25813, -123.2032);
var distanceInMeters = A.GetDistanceTo(B);
// distanceInMeters = 222.33039783713738
I'm looking for something like this:
GeoCoordinate GetPointTowards(GeoCoordinate fromPoint, GeoCoordinate towardPoint, double distanceInMeter) {
[???]
}
I think I may need the bearing or something to be able to get the new point location.
Most examples I've found are for iOS, Android or GMaps with specific libraries..
c# geospatial distance
c# geospatial distance
edited Nov 21 at 2:15
asked Nov 21 at 1:23
Remi
15211
15211
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
1
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26
|
show 1 more comment
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
1
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
1
1
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26
|
show 1 more comment
1 Answer
1
active
oldest
votes
Here's an outline of how I would do it. With this approach, there is no need to explicitly deal with the difference in units between coordinates and distances because taking the ratio of target to total distance eliminates the unit.
totalDistance = distance in meters between point A and point B.
targetDistance = distance in meters to travel from point A to point B
ratio = targetDistance / totalDistance
diffX = B.X - A.X
diffY = B.Y - A.Y
targetX = A.X + (ratio * diffX)
targetY = A.Y + (ratio * diffY)
But this wouldn't handle the edge cases like being at 179 degrees longitude and adding 3 degrees which would put you at -178 longitude.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53404008%2fhow-to-calculate-coordinate-x-meters-away-from-a-point-but-towards-another-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Here's an outline of how I would do it. With this approach, there is no need to explicitly deal with the difference in units between coordinates and distances because taking the ratio of target to total distance eliminates the unit.
totalDistance = distance in meters between point A and point B.
targetDistance = distance in meters to travel from point A to point B
ratio = targetDistance / totalDistance
diffX = B.X - A.X
diffY = B.Y - A.Y
targetX = A.X + (ratio * diffX)
targetY = A.Y + (ratio * diffY)
But this wouldn't handle the edge cases like being at 179 degrees longitude and adding 3 degrees which would put you at -178 longitude.
add a comment |
Here's an outline of how I would do it. With this approach, there is no need to explicitly deal with the difference in units between coordinates and distances because taking the ratio of target to total distance eliminates the unit.
totalDistance = distance in meters between point A and point B.
targetDistance = distance in meters to travel from point A to point B
ratio = targetDistance / totalDistance
diffX = B.X - A.X
diffY = B.Y - A.Y
targetX = A.X + (ratio * diffX)
targetY = A.Y + (ratio * diffY)
But this wouldn't handle the edge cases like being at 179 degrees longitude and adding 3 degrees which would put you at -178 longitude.
add a comment |
Here's an outline of how I would do it. With this approach, there is no need to explicitly deal with the difference in units between coordinates and distances because taking the ratio of target to total distance eliminates the unit.
totalDistance = distance in meters between point A and point B.
targetDistance = distance in meters to travel from point A to point B
ratio = targetDistance / totalDistance
diffX = B.X - A.X
diffY = B.Y - A.Y
targetX = A.X + (ratio * diffX)
targetY = A.Y + (ratio * diffY)
But this wouldn't handle the edge cases like being at 179 degrees longitude and adding 3 degrees which would put you at -178 longitude.
Here's an outline of how I would do it. With this approach, there is no need to explicitly deal with the difference in units between coordinates and distances because taking the ratio of target to total distance eliminates the unit.
totalDistance = distance in meters between point A and point B.
targetDistance = distance in meters to travel from point A to point B
ratio = targetDistance / totalDistance
diffX = B.X - A.X
diffY = B.Y - A.Y
targetX = A.X + (ratio * diffX)
targetY = A.Y + (ratio * diffY)
But this wouldn't handle the edge cases like being at 179 degrees longitude and adding 3 degrees which would put you at -178 longitude.
edited Nov 21 at 2:55
answered Nov 21 at 2:42
Lynn
212
212
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53404008%2fhow-to-calculate-coordinate-x-meters-away-from-a-point-but-towards-another-in-c%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
maybe this nuget library can help? numerics.mathdotnet.com
– JohnB
Nov 21 at 1:28
Could you provide another two coordinates with the correct meters please.. Need to test my logic before posting a Method that you can pass into.
– Levon Ravel
Nov 21 at 1:48
@LevonRavel : {49.25835, -123.21894}, {49.25837, -123.21989}. They are 69.038124262531255 meters away.
– Remi
Nov 21 at 1:52
okay I can post the equation
– Levon Ravel
Nov 21 at 1:53
1
stackoverflow.com/questions/3225803/… Found this answer hope it helps. It is in kilometers but I think the conversion to meters should be easy enough.
– Levon Ravel
Nov 21 at 2:26