Find a new point on a rectangle given an angle from the center












2












$begingroup$




I am a software engineer and I'm trying to edit some images. Trying to find a good formula to find a new point on the rectangle, I know the center x and y coordinates, the height and width of the rectangle, and the theta in the direction of the new point.



if I can find the length of the line from the center to the edge I can just take a sin and cos to get my new position. The issue I'm having is that it seems like there are a lot of special cases given different angles for whether I should be shifting it with regards to width or height etc and I was hoping that someone would have a simpler formula I could use.



Thanks a lot for taking the time to try and help me!










share|cite|improve this question









$endgroup$








  • 2




    $begingroup$
    Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
    $endgroup$
    – T. Bongers
    Dec 3 '18 at 23:03










  • $begingroup$
    Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
    $endgroup$
    – rogerl
    Dec 3 '18 at 23:24










  • $begingroup$
    Thank you both, the corner angle property is especially helpful!
    $endgroup$
    – Justin
    Dec 3 '18 at 23:28










  • $begingroup$
    Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
    $endgroup$
    – amd
    Dec 4 '18 at 0:08
















2












$begingroup$




I am a software engineer and I'm trying to edit some images. Trying to find a good formula to find a new point on the rectangle, I know the center x and y coordinates, the height and width of the rectangle, and the theta in the direction of the new point.



if I can find the length of the line from the center to the edge I can just take a sin and cos to get my new position. The issue I'm having is that it seems like there are a lot of special cases given different angles for whether I should be shifting it with regards to width or height etc and I was hoping that someone would have a simpler formula I could use.



Thanks a lot for taking the time to try and help me!










share|cite|improve this question









$endgroup$








  • 2




    $begingroup$
    Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
    $endgroup$
    – T. Bongers
    Dec 3 '18 at 23:03










  • $begingroup$
    Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
    $endgroup$
    – rogerl
    Dec 3 '18 at 23:24










  • $begingroup$
    Thank you both, the corner angle property is especially helpful!
    $endgroup$
    – Justin
    Dec 3 '18 at 23:28










  • $begingroup$
    Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
    $endgroup$
    – amd
    Dec 4 '18 at 0:08














2












2








2





$begingroup$




I am a software engineer and I'm trying to edit some images. Trying to find a good formula to find a new point on the rectangle, I know the center x and y coordinates, the height and width of the rectangle, and the theta in the direction of the new point.



if I can find the length of the line from the center to the edge I can just take a sin and cos to get my new position. The issue I'm having is that it seems like there are a lot of special cases given different angles for whether I should be shifting it with regards to width or height etc and I was hoping that someone would have a simpler formula I could use.



Thanks a lot for taking the time to try and help me!










share|cite|improve this question









$endgroup$






I am a software engineer and I'm trying to edit some images. Trying to find a good formula to find a new point on the rectangle, I know the center x and y coordinates, the height and width of the rectangle, and the theta in the direction of the new point.



if I can find the length of the line from the center to the edge I can just take a sin and cos to get my new position. The issue I'm having is that it seems like there are a lot of special cases given different angles for whether I should be shifting it with regards to width or height etc and I was hoping that someone would have a simpler formula I could use.



Thanks a lot for taking the time to try and help me!







trigonometry






share|cite|improve this question













share|cite|improve this question











share|cite|improve this question




share|cite|improve this question










asked Dec 3 '18 at 23:01









JustinJustin

1112




1112








  • 2




    $begingroup$
    Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
    $endgroup$
    – T. Bongers
    Dec 3 '18 at 23:03










  • $begingroup$
    Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
    $endgroup$
    – rogerl
    Dec 3 '18 at 23:24










  • $begingroup$
    Thank you both, the corner angle property is especially helpful!
    $endgroup$
    – Justin
    Dec 3 '18 at 23:28










  • $begingroup$
    Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
    $endgroup$
    – amd
    Dec 4 '18 at 0:08














  • 2




    $begingroup$
    Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
    $endgroup$
    – T. Bongers
    Dec 3 '18 at 23:03










  • $begingroup$
    Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
    $endgroup$
    – rogerl
    Dec 3 '18 at 23:24










  • $begingroup$
    Thank you both, the corner angle property is especially helpful!
    $endgroup$
    – Justin
    Dec 3 '18 at 23:28










  • $begingroup$
    Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
    $endgroup$
    – amd
    Dec 4 '18 at 0:08








2




2




$begingroup$
Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
$endgroup$
– T. Bongers
Dec 3 '18 at 23:03




$begingroup$
Here's a suggestion about how to organize the cases more effectively: Compute the angle (based at the center of the rectangle) from the horizontal axis to the upper right-hand corner and save it. For angles between $0$ and this special angle, you're on the right hand side and you have something involving the cosine. For angles between the special angle and $pi/2$, you're on top. Repeat for other quadrants as needed.
$endgroup$
– T. Bongers
Dec 3 '18 at 23:03












$begingroup$
Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
$endgroup$
– rogerl
Dec 3 '18 at 23:24




$begingroup$
Further, assuming the center is at the origin and the rectangle is oriented parallel to the axes, the angle from the horizontal axis to the upper right corner is the angle whose tangent is $frac{h}{w}$.
$endgroup$
– rogerl
Dec 3 '18 at 23:24












$begingroup$
Thank you both, the corner angle property is especially helpful!
$endgroup$
– Justin
Dec 3 '18 at 23:28




$begingroup$
Thank you both, the corner angle property is especially helpful!
$endgroup$
– Justin
Dec 3 '18 at 23:28












$begingroup$
Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
$endgroup$
– amd
Dec 4 '18 at 0:08




$begingroup$
Instead of going through all of the case analysis you could just compute all four intersections and select the nearest one that’s in the correct direction from the ray. This is particularly simple to do if the sides are axis-aligned.
$endgroup$
– amd
Dec 4 '18 at 0:08










0






active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
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
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3024831%2ffind-a-new-point-on-a-rectangle-given-an-angle-from-the-center%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Mathematics Stack Exchange!


  • 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.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3024831%2ffind-a-new-point-on-a-rectangle-given-an-angle-from-the-center%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Le Mesnil-Réaume

Ida-Boy-Ed-Garten

web3.py web3.isConnected() returns false always