Finding the interior tangent circles of a given radius of a concave polygon
$begingroup$
I am trying to write an algorithm for calculating toolpath's for CNC machines and in doing so I need to find a way of determining all the circles of a given radius whose centers lie on the bisector of each internal angle and be also tangent to both sides that form the angle.
We have:
-a polygon of n sides which is not self-intersecting and whose internal angles may or may not be greater than pi radians.
-n vertices which are given in a clockwise direction and n internal angles
-the radius of the circle
What I did is
- calculate the n clockwise vectors ( from V1 to V2...... Vn-1 to Vn) and the n anticlockwise vectors ( from V2 to V1......Vn to Vn-1)
- calculate the n angles by taking the arccosine of the scalar product of the clockwise vector with it's previous anticlockwise vector all divided by the product of the length of the adjacent sides
Now since the circle is tangent to both sides the distance from the center of the circle to each side is equal to the radius. So this means that the distance from the vertex to the center of the circle is equal to the sine of half the internal angle divided by the radius.
To calculate the direction, I have calculated the clockwise and anticlockwise vectors of magnitude 1. By adding the adjacent vectors of magnitude 1 I have obtained the bisector direction and I have divided the resulting vector by twice the cosine of half the internal angle to ensure that it always has a magnitude of one. By multiplying this vector with the distance from the the vector, we get the change in x and change in y and so can we find the center of the circle.
The issue is that this way of finding the internal angle doesn't works when the angle is greater than pi radians, and so it places the circle outside our given polygon. What I am trying to find is a modification of this formula so that when the angle is greater than pi radians, the circle is placed tangent to the internal corner, on the bisector of the angle. Thanks!
algorithms analytic-geometry
$endgroup$
add a comment |
$begingroup$
I am trying to write an algorithm for calculating toolpath's for CNC machines and in doing so I need to find a way of determining all the circles of a given radius whose centers lie on the bisector of each internal angle and be also tangent to both sides that form the angle.
We have:
-a polygon of n sides which is not self-intersecting and whose internal angles may or may not be greater than pi radians.
-n vertices which are given in a clockwise direction and n internal angles
-the radius of the circle
What I did is
- calculate the n clockwise vectors ( from V1 to V2...... Vn-1 to Vn) and the n anticlockwise vectors ( from V2 to V1......Vn to Vn-1)
- calculate the n angles by taking the arccosine of the scalar product of the clockwise vector with it's previous anticlockwise vector all divided by the product of the length of the adjacent sides
Now since the circle is tangent to both sides the distance from the center of the circle to each side is equal to the radius. So this means that the distance from the vertex to the center of the circle is equal to the sine of half the internal angle divided by the radius.
To calculate the direction, I have calculated the clockwise and anticlockwise vectors of magnitude 1. By adding the adjacent vectors of magnitude 1 I have obtained the bisector direction and I have divided the resulting vector by twice the cosine of half the internal angle to ensure that it always has a magnitude of one. By multiplying this vector with the distance from the the vector, we get the change in x and change in y and so can we find the center of the circle.
The issue is that this way of finding the internal angle doesn't works when the angle is greater than pi radians, and so it places the circle outside our given polygon. What I am trying to find is a modification of this formula so that when the angle is greater than pi radians, the circle is placed tangent to the internal corner, on the bisector of the angle. Thanks!
algorithms analytic-geometry
$endgroup$
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56
add a comment |
$begingroup$
I am trying to write an algorithm for calculating toolpath's for CNC machines and in doing so I need to find a way of determining all the circles of a given radius whose centers lie on the bisector of each internal angle and be also tangent to both sides that form the angle.
We have:
-a polygon of n sides which is not self-intersecting and whose internal angles may or may not be greater than pi radians.
-n vertices which are given in a clockwise direction and n internal angles
-the radius of the circle
What I did is
- calculate the n clockwise vectors ( from V1 to V2...... Vn-1 to Vn) and the n anticlockwise vectors ( from V2 to V1......Vn to Vn-1)
- calculate the n angles by taking the arccosine of the scalar product of the clockwise vector with it's previous anticlockwise vector all divided by the product of the length of the adjacent sides
Now since the circle is tangent to both sides the distance from the center of the circle to each side is equal to the radius. So this means that the distance from the vertex to the center of the circle is equal to the sine of half the internal angle divided by the radius.
To calculate the direction, I have calculated the clockwise and anticlockwise vectors of magnitude 1. By adding the adjacent vectors of magnitude 1 I have obtained the bisector direction and I have divided the resulting vector by twice the cosine of half the internal angle to ensure that it always has a magnitude of one. By multiplying this vector with the distance from the the vector, we get the change in x and change in y and so can we find the center of the circle.
The issue is that this way of finding the internal angle doesn't works when the angle is greater than pi radians, and so it places the circle outside our given polygon. What I am trying to find is a modification of this formula so that when the angle is greater than pi radians, the circle is placed tangent to the internal corner, on the bisector of the angle. Thanks!
algorithms analytic-geometry
$endgroup$
I am trying to write an algorithm for calculating toolpath's for CNC machines and in doing so I need to find a way of determining all the circles of a given radius whose centers lie on the bisector of each internal angle and be also tangent to both sides that form the angle.
We have:
-a polygon of n sides which is not self-intersecting and whose internal angles may or may not be greater than pi radians.
-n vertices which are given in a clockwise direction and n internal angles
-the radius of the circle
What I did is
- calculate the n clockwise vectors ( from V1 to V2...... Vn-1 to Vn) and the n anticlockwise vectors ( from V2 to V1......Vn to Vn-1)
- calculate the n angles by taking the arccosine of the scalar product of the clockwise vector with it's previous anticlockwise vector all divided by the product of the length of the adjacent sides
Now since the circle is tangent to both sides the distance from the center of the circle to each side is equal to the radius. So this means that the distance from the vertex to the center of the circle is equal to the sine of half the internal angle divided by the radius.
To calculate the direction, I have calculated the clockwise and anticlockwise vectors of magnitude 1. By adding the adjacent vectors of magnitude 1 I have obtained the bisector direction and I have divided the resulting vector by twice the cosine of half the internal angle to ensure that it always has a magnitude of one. By multiplying this vector with the distance from the the vector, we get the change in x and change in y and so can we find the center of the circle.
The issue is that this way of finding the internal angle doesn't works when the angle is greater than pi radians, and so it places the circle outside our given polygon. What I am trying to find is a modification of this formula so that when the angle is greater than pi radians, the circle is placed tangent to the internal corner, on the bisector of the angle. Thanks!
algorithms analytic-geometry
algorithms analytic-geometry
asked Dec 22 '18 at 10:38
vldsvlds
213
213
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56
add a comment |
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56
add a comment |
0
active
oldest
votes
Your Answer
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
});
}
});
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%2fmath.stackexchange.com%2fquestions%2f3049294%2ffinding-the-interior-tangent-circles-of-a-given-radius-of-a-concave-polygon%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
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.
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%2fmath.stackexchange.com%2fquestions%2f3049294%2ffinding-the-interior-tangent-circles-of-a-given-radius-of-a-concave-polygon%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
$begingroup$
Your question is not clear, here's a couple of issues. 1) A generic polygon doesn't have, in general, an incircle; are you dealing with particular polygons? 2) A polygon with an internal angle greater than 180° is concave, and concave polygons don't have an incircle. You should make clear what exactly you are trying to do.
$endgroup$
– Aretino
Dec 31 '18 at 10:56