How to construct a circle that is tangent to three given semi- circles?
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
begin{document}
begin{pspicture}[showgrid](-5,-5)(10,10)
psset{unit=2cm,PointSymbol=none,PointName=none}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
See the result from Asymptote(TranLeNam's code)
documentclass[border=5pt,varwidth]{standalone}
usepackage{asymptote}
begin{document}
begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=20;
unitsize(0.5cm);
import geometry;
defaultpen(fontsize(12pt));
pair A=(0,0), B=(8,0), C=(0,6);
draw(triangle(A,B,C));
pair CP=midpoint(A--B), BP=midpoint(A--C), AP=midpoint(C--B);
draw(arc(CP,A,B)^^arc(BP,C,A)^^arc(AP,B,C)) ;
inversion inv=inversion(20,A);
point AB=inv*B;
point AC=inv*C;
point AA=AB+AC;
circle cABC=excircle(AB,AC,AA);
draw(inv*cABC,red);
shipout(bbox(1mm,1mm+white));
end{asy}
end{document}
Of course it does not have center and radius!! It uses inversion which PSTricks does not have !?
I truly do not know how to draw it for PSTricks.
More detail, see http://mathworld.wolfram.com/Inversion.html and http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#struct%20inversion
pstricks asymptote
|
show 3 more comments
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
begin{document}
begin{pspicture}[showgrid](-5,-5)(10,10)
psset{unit=2cm,PointSymbol=none,PointName=none}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
See the result from Asymptote(TranLeNam's code)
documentclass[border=5pt,varwidth]{standalone}
usepackage{asymptote}
begin{document}
begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=20;
unitsize(0.5cm);
import geometry;
defaultpen(fontsize(12pt));
pair A=(0,0), B=(8,0), C=(0,6);
draw(triangle(A,B,C));
pair CP=midpoint(A--B), BP=midpoint(A--C), AP=midpoint(C--B);
draw(arc(CP,A,B)^^arc(BP,C,A)^^arc(AP,B,C)) ;
inversion inv=inversion(20,A);
point AB=inv*B;
point AC=inv*C;
point AA=AB+AC;
circle cABC=excircle(AB,AC,AA);
draw(inv*cABC,red);
shipout(bbox(1mm,1mm+white));
end{asy}
end{document}
Of course it does not have center and radius!! It uses inversion which PSTricks does not have !?
I truly do not know how to draw it for PSTricks.
More detail, see http://mathworld.wolfram.com/Inversion.html and http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#struct%20inversion
pstricks asymptote
1
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
1
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
1
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago
|
show 3 more comments
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
begin{document}
begin{pspicture}[showgrid](-5,-5)(10,10)
psset{unit=2cm,PointSymbol=none,PointName=none}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
See the result from Asymptote(TranLeNam's code)
documentclass[border=5pt,varwidth]{standalone}
usepackage{asymptote}
begin{document}
begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=20;
unitsize(0.5cm);
import geometry;
defaultpen(fontsize(12pt));
pair A=(0,0), B=(8,0), C=(0,6);
draw(triangle(A,B,C));
pair CP=midpoint(A--B), BP=midpoint(A--C), AP=midpoint(C--B);
draw(arc(CP,A,B)^^arc(BP,C,A)^^arc(AP,B,C)) ;
inversion inv=inversion(20,A);
point AB=inv*B;
point AC=inv*C;
point AA=AB+AC;
circle cABC=excircle(AB,AC,AA);
draw(inv*cABC,red);
shipout(bbox(1mm,1mm+white));
end{asy}
end{document}
Of course it does not have center and radius!! It uses inversion which PSTricks does not have !?
I truly do not know how to draw it for PSTricks.
More detail, see http://mathworld.wolfram.com/Inversion.html and http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#struct%20inversion
pstricks asymptote
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
begin{document}
begin{pspicture}[showgrid](-5,-5)(10,10)
psset{unit=2cm,PointSymbol=none,PointName=none}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
See the result from Asymptote(TranLeNam's code)
documentclass[border=5pt,varwidth]{standalone}
usepackage{asymptote}
begin{document}
begin{asy}
settings.outformat="pdf";
settings.prc=false;
settings.render=20;
unitsize(0.5cm);
import geometry;
defaultpen(fontsize(12pt));
pair A=(0,0), B=(8,0), C=(0,6);
draw(triangle(A,B,C));
pair CP=midpoint(A--B), BP=midpoint(A--C), AP=midpoint(C--B);
draw(arc(CP,A,B)^^arc(BP,C,A)^^arc(AP,B,C)) ;
inversion inv=inversion(20,A);
point AB=inv*B;
point AC=inv*C;
point AA=AB+AC;
circle cABC=excircle(AB,AC,AA);
draw(inv*cABC,red);
shipout(bbox(1mm,1mm+white));
end{asy}
end{document}
Of course it does not have center and radius!! It uses inversion which PSTricks does not have !?
I truly do not know how to draw it for PSTricks.
More detail, see http://mathworld.wolfram.com/Inversion.html and http://www.piprime.fr/files/asymptote/geometry/modules/geometry.asy.html#struct%20inversion
pstricks asymptote
pstricks asymptote
edited 18 mins ago
Artificial Stupidity
5,21511039
5,21511039
asked 4 hours ago
chishimotojichishimotoji
730318
730318
1
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
1
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
1
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago
|
show 3 more comments
1
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
1
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
1
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago
1
1
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
1
1
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
1
1
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago
|
show 3 more comments
3 Answers
3
active
oldest
votes
Supposing that: A(0,0), B(b,0), C(0,c)
So AB is horizontal and AC is vertical we can calculate it. @jfbu did these calculations and I just implemented them into a PSTricks picture.
documentclass[pstricks,dvipsnames]{standalone}
usepackage{pst-eucl}
pagestyle{empty}
begin{document}
begin{pspicture}(-3,-3.5)(4.5,5.5)
pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% A(0,0), B(3,0), C(0,4)
%% So AB is horizontal
%% AC is vertical
/xA 0 def
/yA 0 def
/xB 3 def
/yB 0 def
/xC 0 def
/yC 4 def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% @JFBU formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) / (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% @JFBU formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%pscircle(MAB){!rAB}
%pscircle(MAC){!rAC}
%pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% circle and tangent points
pnode(!x0 y0){O}
pnode(!p1x p1y){P1}
pnode(!p2x p2y){P2}
pnode(!p3x p3y){P3}
pscircle[linecolor=Green](O){!r0}
psdot[linecolor=red](P1)uput[-90](P1){$P_1$}
psdot[linecolor=red](P2)uput[180](P2){$P_2$}
psdot[linecolor=red](P3)uput[90](P3){$P_3$}
pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
end{pspicture}
end{document}
Hope this answers the question.
As an animated gif:
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
add a comment |
There maybe some rounding errors
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
defpstInv(#1)(#2)#3{% (M)(P)(radius)
pnode(#1){@@A}psRelNode(#1)(#2){20}{@@B}pnode(#2){@@C}%
pnode(!
psGetNodeCenter{@@A}psGetNodeCenter{@@B}psGetNodeCenter{@@C}
@@A.x @@A.y /y0 ED /x0 ED
@@B.x @@B.y /yP ED /xP ED
x0 y0 @@C.x @@C.y Pyth2 /radius ED
xP x0 sub /xPx0 ED
yP y0 sub /yPy0 ED
xPx0 dup mul yPy0 dup mul add /Dem ED
radius dup mul xPx0 mul Dem div x0 add
radius dup mul yPy0 mul Dem div y0 add
){#3}%
}
defpstInvCircle#1#2#3#4{%
pstMiddleAB{#1}{#2}{I1}pstMiddleAB{#2}{#3}{I2}pstMiddleAB{#3}{#1}{I3}
pstInv(I1)(#2){IAB}
psRelNode[angle=90](IAB)(#2){1}{ba}
pstInterLC{ba}{IAB}{I1}{#2}{mab1}{mab2}
pstInv(I2)(#2){ICB}
psRelNode[angle=90](ICB)(#3){1}{bc}
pstInterLC{bc}{ICB}{I2}{#2}{mbc1}{mbc2}
pstInv(I3)(#3){IAC}
psRelNode[angle=90](IAC)(#3){1}{ac}
pstInterLC{ac}{IAC}{I3}{#1}{mac1}{mac2}
pstCircleABC[linecolor=red,linewidth=2pt,dimen=inner]{mac1}{mbc2}{mab2}{#4}%
}
begin{document}
%psset{unit=0.5}
begin{pspicture}[showgrid](-6,-4)(9,10)
psset{unit=2cm,PointSymbol=none,PointName=none,dimen=inner,opacity=0.5}
pstTriangle[linecolor=blue,linewidth=2pt,linejoin=2](0,4){C}(-1,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB[fillstyle=solid,fillcolor=red!40]{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB[fillstyle=solid,fillcolor=blue!40]{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB[fillstyle=solid,fillcolor=green!40]{I3}{C}{A}
psset{linecolor=red,linewidth=2pt,dimen=inner}
pstInvCircle{A}{B}{C}{O}
psdot(O)
end{pspicture}
end{document}
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
add a comment |
One possible way/starting point (but not accurate here) is to use something like this:
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
usepackage{pst-eucl}
begin{document}
begin{pspicture}(-5,-5)(5,5)
pstTriangle[PointSymbol=none, PointName={A,B,A}](4,1){A}(1,3){B}(5,5){C}
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{A}{B}{C}{O}
end{pspicture}
end{document}
to get:
Here you basically define (atleast) three-points in space and let the circle pass through them.
Update 1:
To get the desired results, define some pseudo points (as in the so-called Bezier's trick
and 3 tangential points on the circle as in
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
%usepackage{pst-solides3d}
% https://tex.stackexchange.com/questions/7199/can-pstricks-or-others-draw-the-4-common-tangent-lines-of-2-disjoint-circles-w --> some help from Herbert's solution!
usepackage{pst-eucl}
begin{document}
begin{pspicture}
%set a few nodes at desired locations and employ the Bezier trick
pnodes(-1.8,2){M1}(3,4.2){M2}(2,-1.5){M3}(-1.7, 3){M4}
psdots(M1)(M2)(M3)
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{M1}{M2}{M3}{M4}{O}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
to get:
PS: Of course this solution is not sophisticated, but this can be achieved without too much calculations or whatsoever. Only, some trial-and-error to place the points is required.
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2ftex.stackexchange.com%2fquestions%2f472186%2fhow-to-construct-a-circle-that-is-tangent-to-three-given-semi-circles%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Supposing that: A(0,0), B(b,0), C(0,c)
So AB is horizontal and AC is vertical we can calculate it. @jfbu did these calculations and I just implemented them into a PSTricks picture.
documentclass[pstricks,dvipsnames]{standalone}
usepackage{pst-eucl}
pagestyle{empty}
begin{document}
begin{pspicture}(-3,-3.5)(4.5,5.5)
pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% A(0,0), B(3,0), C(0,4)
%% So AB is horizontal
%% AC is vertical
/xA 0 def
/yA 0 def
/xB 3 def
/yB 0 def
/xC 0 def
/yC 4 def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% @JFBU formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) / (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% @JFBU formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%pscircle(MAB){!rAB}
%pscircle(MAC){!rAC}
%pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% circle and tangent points
pnode(!x0 y0){O}
pnode(!p1x p1y){P1}
pnode(!p2x p2y){P2}
pnode(!p3x p3y){P3}
pscircle[linecolor=Green](O){!r0}
psdot[linecolor=red](P1)uput[-90](P1){$P_1$}
psdot[linecolor=red](P2)uput[180](P2){$P_2$}
psdot[linecolor=red](P3)uput[90](P3){$P_3$}
pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
end{pspicture}
end{document}
Hope this answers the question.
As an animated gif:
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
add a comment |
Supposing that: A(0,0), B(b,0), C(0,c)
So AB is horizontal and AC is vertical we can calculate it. @jfbu did these calculations and I just implemented them into a PSTricks picture.
documentclass[pstricks,dvipsnames]{standalone}
usepackage{pst-eucl}
pagestyle{empty}
begin{document}
begin{pspicture}(-3,-3.5)(4.5,5.5)
pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% A(0,0), B(3,0), C(0,4)
%% So AB is horizontal
%% AC is vertical
/xA 0 def
/yA 0 def
/xB 3 def
/yB 0 def
/xC 0 def
/yC 4 def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% @JFBU formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) / (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% @JFBU formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%pscircle(MAB){!rAB}
%pscircle(MAC){!rAC}
%pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% circle and tangent points
pnode(!x0 y0){O}
pnode(!p1x p1y){P1}
pnode(!p2x p2y){P2}
pnode(!p3x p3y){P3}
pscircle[linecolor=Green](O){!r0}
psdot[linecolor=red](P1)uput[-90](P1){$P_1$}
psdot[linecolor=red](P2)uput[180](P2){$P_2$}
psdot[linecolor=red](P3)uput[90](P3){$P_3$}
pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
end{pspicture}
end{document}
Hope this answers the question.
As an animated gif:
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
add a comment |
Supposing that: A(0,0), B(b,0), C(0,c)
So AB is horizontal and AC is vertical we can calculate it. @jfbu did these calculations and I just implemented them into a PSTricks picture.
documentclass[pstricks,dvipsnames]{standalone}
usepackage{pst-eucl}
pagestyle{empty}
begin{document}
begin{pspicture}(-3,-3.5)(4.5,5.5)
pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% A(0,0), B(3,0), C(0,4)
%% So AB is horizontal
%% AC is vertical
/xA 0 def
/yA 0 def
/xB 3 def
/yB 0 def
/xC 0 def
/yC 4 def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% @JFBU formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) / (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% @JFBU formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%pscircle(MAB){!rAB}
%pscircle(MAC){!rAC}
%pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% circle and tangent points
pnode(!x0 y0){O}
pnode(!p1x p1y){P1}
pnode(!p2x p2y){P2}
pnode(!p3x p3y){P3}
pscircle[linecolor=Green](O){!r0}
psdot[linecolor=red](P1)uput[-90](P1){$P_1$}
psdot[linecolor=red](P2)uput[180](P2){$P_2$}
psdot[linecolor=red](P3)uput[90](P3){$P_3$}
pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
end{pspicture}
end{document}
Hope this answers the question.
As an animated gif:
Supposing that: A(0,0), B(b,0), C(0,c)
So AB is horizontal and AC is vertical we can calculate it. @jfbu did these calculations and I just implemented them into a PSTricks picture.
documentclass[pstricks,dvipsnames]{standalone}
usepackage{pst-eucl}
pagestyle{empty}
begin{document}
begin{pspicture}(-3,-3.5)(4.5,5.5)
pstVerb{%
%% Enter the coordinates of the points of the rectangled triangle
%% A(0,0), B(3,0), C(0,4)
%% So AB is horizontal
%% AC is vertical
/xA 0 def
/yA 0 def
/xB 3 def
/yB 0 def
/xC 0 def
/yC 4 def
%% Midpoints of the sides
/mAx xB xC add 2 div def
/mAy yB yC add 2 div def
/mBx xA xC add 2 div def
/mBy yA yC add 2 div def
/mCx xA xB add 2 div def
/mCy yA yB add 2 div def
%% Calculating the radius of the half circles along the sides of the
%% rectangled triangle
/rAB xA xB sub 2 exp yA yB sub 2 exp add sqrt 2 div def
/AB rAB 2 mul def
/rAC xA xC sub 2 exp yA yC sub 2 exp add sqrt 2 div def
/AC rAC 2 mul def
/rBC xB xC sub 2 exp yB yC sub 2 exp add sqrt 2 div def
/BC rBC 2 mul def
/DENOM BC 5 mul AB 3 mul add AC 3 mul add def
%% @JFBU formula
%% X = 2 AB (AB + BC) / (5 BC + 3 AB + 3 AC)
%% Y = 2 AC (AC + BC) / (5 BC + 3 AB + 3 AC)
%% R = 2 (BC + AB) (BC + AC) / (5 BC + 3 AB + 3 AC)
/x0 AB BC add AB mul 2 mul DENOM div def
/y0 AC BC add AC mul 2 mul DENOM div def
/r0 BC AB add BC AC add mul 2 mul DENOM div def
%% @JFBU formula for the tangent points
%% P1 = (2(a+c)c, -(a+b+c)c) / (3a + b + 2c)
%% P2 = (-(a+b+c)b, 2(a+b)b) / (3a + 2b + c)
%% P3 = ((a+b+c)(a+c), (a+b+c)(a+b))/ (3a + 2b + 2c)
/p1x BC AB add AB mul 2 mul BC 3 mul AC add AB 2 mul add div def
/p1y BC AC add AB add AB mul BC 3 mul AC add AB 2 mul add div neg def
/p2x BC AC add AB add AC mul BC 3 mul AC 2 mul add AB add div neg def
/p2y BC AC add AC mul 2 mul BC 3 mul AC 2 mul add AB add div def
/p3x BC AC add AB add BC AB add mul BC 3 mul AC 2 mul add AB 2 mul add div def
/p3y BC AC add AB add BC AC add mul BC 3 mul AC 2 mul add AB 2 mul add div def
}
%% Setting the nodes of the points of the triangle
pstGeonode[PointSymbol=none,PosAngle={225,-45,90}](!xA yA){A}(!xB yB){B}(!xC yC){C}
pspolygon[linecolor=blue,linejoin=1](A)(B)(C)
%% Setting the nodes of the midpoints of the triangle sides
pstMiddleAB[PointSymbol=none,PointName=none]{A}{B}{MAB}
pstMiddleAB[PointSymbol=none,PointName=none]{A}{C}{MAC}
pstMiddleAB[PointSymbol=none,PointName=none]{B}{C}{MBC}
%% Full circles along the sides of the triangle (not needed!)
%pscircle(MAB){!rAB}
%pscircle(MAC){!rAC}
%pscircle(MBC){!rBC}
%% Drawing the half circles along the sides of the triangle
pstArcOAB[linecolor=lightgray]{MAB}{A}{B}
pstArcOAB[linecolor=lightgray]{MAC}{C}{A}
pstArcOAB[linecolor=lightgray]{MBC}{B}{C}
%% circle and tangent points
pnode(!x0 y0){O}
pnode(!p1x p1y){P1}
pnode(!p2x p2y){P2}
pnode(!p3x p3y){P3}
pscircle[linecolor=Green](O){!r0}
psdot[linecolor=red](P1)uput[-90](P1){$P_1$}
psdot[linecolor=red](P2)uput[180](P2){$P_2$}
psdot[linecolor=red](P3)uput[90](P3){$P_3$}
pspolygon[linejoin=1,linecolor=red,linewidth=0.5pt](P1)(P2)(P3)
end{pspicture}
end{document}
Hope this answers the question.
As an animated gif:
edited 1 hour ago
answered 2 hours ago
Jürgen GJürgen G
1,254214
1,254214
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
add a comment |
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
2
2
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
Is it possible to find the big circle by compass-and-straight-edge construction, starting from the given triangle?
– AlexG
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
@AlexG Yes it is. It is the Apollonius CCC problem. However that's quite a mess ...
– Jürgen G
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
Amenable to a nice animation, perhaps?
– AlexG
2 hours ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
hi, it changes nothing, but regarding top of answer it is B=(c,0), C=(b,0), i.e. AB=c and AC=b as one sees you do in the postscript instruction.
– jfbu
1 hour ago
add a comment |
There maybe some rounding errors
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
defpstInv(#1)(#2)#3{% (M)(P)(radius)
pnode(#1){@@A}psRelNode(#1)(#2){20}{@@B}pnode(#2){@@C}%
pnode(!
psGetNodeCenter{@@A}psGetNodeCenter{@@B}psGetNodeCenter{@@C}
@@A.x @@A.y /y0 ED /x0 ED
@@B.x @@B.y /yP ED /xP ED
x0 y0 @@C.x @@C.y Pyth2 /radius ED
xP x0 sub /xPx0 ED
yP y0 sub /yPy0 ED
xPx0 dup mul yPy0 dup mul add /Dem ED
radius dup mul xPx0 mul Dem div x0 add
radius dup mul yPy0 mul Dem div y0 add
){#3}%
}
defpstInvCircle#1#2#3#4{%
pstMiddleAB{#1}{#2}{I1}pstMiddleAB{#2}{#3}{I2}pstMiddleAB{#3}{#1}{I3}
pstInv(I1)(#2){IAB}
psRelNode[angle=90](IAB)(#2){1}{ba}
pstInterLC{ba}{IAB}{I1}{#2}{mab1}{mab2}
pstInv(I2)(#2){ICB}
psRelNode[angle=90](ICB)(#3){1}{bc}
pstInterLC{bc}{ICB}{I2}{#2}{mbc1}{mbc2}
pstInv(I3)(#3){IAC}
psRelNode[angle=90](IAC)(#3){1}{ac}
pstInterLC{ac}{IAC}{I3}{#1}{mac1}{mac2}
pstCircleABC[linecolor=red,linewidth=2pt,dimen=inner]{mac1}{mbc2}{mab2}{#4}%
}
begin{document}
%psset{unit=0.5}
begin{pspicture}[showgrid](-6,-4)(9,10)
psset{unit=2cm,PointSymbol=none,PointName=none,dimen=inner,opacity=0.5}
pstTriangle[linecolor=blue,linewidth=2pt,linejoin=2](0,4){C}(-1,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB[fillstyle=solid,fillcolor=red!40]{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB[fillstyle=solid,fillcolor=blue!40]{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB[fillstyle=solid,fillcolor=green!40]{I3}{C}{A}
psset{linecolor=red,linewidth=2pt,dimen=inner}
pstInvCircle{A}{B}{C}{O}
psdot(O)
end{pspicture}
end{document}
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
add a comment |
There maybe some rounding errors
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
defpstInv(#1)(#2)#3{% (M)(P)(radius)
pnode(#1){@@A}psRelNode(#1)(#2){20}{@@B}pnode(#2){@@C}%
pnode(!
psGetNodeCenter{@@A}psGetNodeCenter{@@B}psGetNodeCenter{@@C}
@@A.x @@A.y /y0 ED /x0 ED
@@B.x @@B.y /yP ED /xP ED
x0 y0 @@C.x @@C.y Pyth2 /radius ED
xP x0 sub /xPx0 ED
yP y0 sub /yPy0 ED
xPx0 dup mul yPy0 dup mul add /Dem ED
radius dup mul xPx0 mul Dem div x0 add
radius dup mul yPy0 mul Dem div y0 add
){#3}%
}
defpstInvCircle#1#2#3#4{%
pstMiddleAB{#1}{#2}{I1}pstMiddleAB{#2}{#3}{I2}pstMiddleAB{#3}{#1}{I3}
pstInv(I1)(#2){IAB}
psRelNode[angle=90](IAB)(#2){1}{ba}
pstInterLC{ba}{IAB}{I1}{#2}{mab1}{mab2}
pstInv(I2)(#2){ICB}
psRelNode[angle=90](ICB)(#3){1}{bc}
pstInterLC{bc}{ICB}{I2}{#2}{mbc1}{mbc2}
pstInv(I3)(#3){IAC}
psRelNode[angle=90](IAC)(#3){1}{ac}
pstInterLC{ac}{IAC}{I3}{#1}{mac1}{mac2}
pstCircleABC[linecolor=red,linewidth=2pt,dimen=inner]{mac1}{mbc2}{mab2}{#4}%
}
begin{document}
%psset{unit=0.5}
begin{pspicture}[showgrid](-6,-4)(9,10)
psset{unit=2cm,PointSymbol=none,PointName=none,dimen=inner,opacity=0.5}
pstTriangle[linecolor=blue,linewidth=2pt,linejoin=2](0,4){C}(-1,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB[fillstyle=solid,fillcolor=red!40]{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB[fillstyle=solid,fillcolor=blue!40]{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB[fillstyle=solid,fillcolor=green!40]{I3}{C}{A}
psset{linecolor=red,linewidth=2pt,dimen=inner}
pstInvCircle{A}{B}{C}{O}
psdot(O)
end{pspicture}
end{document}
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
add a comment |
There maybe some rounding errors
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
defpstInv(#1)(#2)#3{% (M)(P)(radius)
pnode(#1){@@A}psRelNode(#1)(#2){20}{@@B}pnode(#2){@@C}%
pnode(!
psGetNodeCenter{@@A}psGetNodeCenter{@@B}psGetNodeCenter{@@C}
@@A.x @@A.y /y0 ED /x0 ED
@@B.x @@B.y /yP ED /xP ED
x0 y0 @@C.x @@C.y Pyth2 /radius ED
xP x0 sub /xPx0 ED
yP y0 sub /yPy0 ED
xPx0 dup mul yPy0 dup mul add /Dem ED
radius dup mul xPx0 mul Dem div x0 add
radius dup mul yPy0 mul Dem div y0 add
){#3}%
}
defpstInvCircle#1#2#3#4{%
pstMiddleAB{#1}{#2}{I1}pstMiddleAB{#2}{#3}{I2}pstMiddleAB{#3}{#1}{I3}
pstInv(I1)(#2){IAB}
psRelNode[angle=90](IAB)(#2){1}{ba}
pstInterLC{ba}{IAB}{I1}{#2}{mab1}{mab2}
pstInv(I2)(#2){ICB}
psRelNode[angle=90](ICB)(#3){1}{bc}
pstInterLC{bc}{ICB}{I2}{#2}{mbc1}{mbc2}
pstInv(I3)(#3){IAC}
psRelNode[angle=90](IAC)(#3){1}{ac}
pstInterLC{ac}{IAC}{I3}{#1}{mac1}{mac2}
pstCircleABC[linecolor=red,linewidth=2pt,dimen=inner]{mac1}{mbc2}{mab2}{#4}%
}
begin{document}
%psset{unit=0.5}
begin{pspicture}[showgrid](-6,-4)(9,10)
psset{unit=2cm,PointSymbol=none,PointName=none,dimen=inner,opacity=0.5}
pstTriangle[linecolor=blue,linewidth=2pt,linejoin=2](0,4){C}(-1,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB[fillstyle=solid,fillcolor=red!40]{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB[fillstyle=solid,fillcolor=blue!40]{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB[fillstyle=solid,fillcolor=green!40]{I3}{C}{A}
psset{linecolor=red,linewidth=2pt,dimen=inner}
pstInvCircle{A}{B}{C}{O}
psdot(O)
end{pspicture}
end{document}
There maybe some rounding errors
documentclass[border=15pt,pstricks,12pt]{standalone}
usepackage{pst-eucl}
defpstInv(#1)(#2)#3{% (M)(P)(radius)
pnode(#1){@@A}psRelNode(#1)(#2){20}{@@B}pnode(#2){@@C}%
pnode(!
psGetNodeCenter{@@A}psGetNodeCenter{@@B}psGetNodeCenter{@@C}
@@A.x @@A.y /y0 ED /x0 ED
@@B.x @@B.y /yP ED /xP ED
x0 y0 @@C.x @@C.y Pyth2 /radius ED
xP x0 sub /xPx0 ED
yP y0 sub /yPy0 ED
xPx0 dup mul yPy0 dup mul add /Dem ED
radius dup mul xPx0 mul Dem div x0 add
radius dup mul yPy0 mul Dem div y0 add
){#3}%
}
defpstInvCircle#1#2#3#4{%
pstMiddleAB{#1}{#2}{I1}pstMiddleAB{#2}{#3}{I2}pstMiddleAB{#3}{#1}{I3}
pstInv(I1)(#2){IAB}
psRelNode[angle=90](IAB)(#2){1}{ba}
pstInterLC{ba}{IAB}{I1}{#2}{mab1}{mab2}
pstInv(I2)(#2){ICB}
psRelNode[angle=90](ICB)(#3){1}{bc}
pstInterLC{bc}{ICB}{I2}{#2}{mbc1}{mbc2}
pstInv(I3)(#3){IAC}
psRelNode[angle=90](IAC)(#3){1}{ac}
pstInterLC{ac}{IAC}{I3}{#1}{mac1}{mac2}
pstCircleABC[linecolor=red,linewidth=2pt,dimen=inner]{mac1}{mbc2}{mab2}{#4}%
}
begin{document}
%psset{unit=0.5}
begin{pspicture}[showgrid](-6,-4)(9,10)
psset{unit=2cm,PointSymbol=none,PointName=none,dimen=inner,opacity=0.5}
pstTriangle[linecolor=blue,linewidth=2pt,linejoin=2](0,4){C}(-1,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB[fillstyle=solid,fillcolor=red!40]{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB[fillstyle=solid,fillcolor=blue!40]{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB[fillstyle=solid,fillcolor=green!40]{I3}{C}{A}
psset{linecolor=red,linewidth=2pt,dimen=inner}
pstInvCircle{A}{B}{C}{O}
psdot(O)
end{pspicture}
end{document}
answered 1 hour ago
HerbertHerbert
273k24411724
273k24411724
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
add a comment |
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
Wow!!! What an approach!!!
– Jürgen G
1 hour ago
1
1
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@chishimotoji: Try with an obtuse angle.
– Artificial Stupidity
50 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@ArtificialStupidity Wow, I see a bug...:-)
– chishimotoji
44 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
@chishimotoji: I have not tried it yet actually. :-)
– Artificial Stupidity
43 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
Yes, it gets error with right angle(with my example) and obtuse angle.
– chishimotoji
37 mins ago
add a comment |
One possible way/starting point (but not accurate here) is to use something like this:
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
usepackage{pst-eucl}
begin{document}
begin{pspicture}(-5,-5)(5,5)
pstTriangle[PointSymbol=none, PointName={A,B,A}](4,1){A}(1,3){B}(5,5){C}
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{A}{B}{C}{O}
end{pspicture}
end{document}
to get:
Here you basically define (atleast) three-points in space and let the circle pass through them.
Update 1:
To get the desired results, define some pseudo points (as in the so-called Bezier's trick
and 3 tangential points on the circle as in
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
%usepackage{pst-solides3d}
% https://tex.stackexchange.com/questions/7199/can-pstricks-or-others-draw-the-4-common-tangent-lines-of-2-disjoint-circles-w --> some help from Herbert's solution!
usepackage{pst-eucl}
begin{document}
begin{pspicture}
%set a few nodes at desired locations and employ the Bezier trick
pnodes(-1.8,2){M1}(3,4.2){M2}(2,-1.5){M3}(-1.7, 3){M4}
psdots(M1)(M2)(M3)
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{M1}{M2}{M3}{M4}{O}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
to get:
PS: Of course this solution is not sophisticated, but this can be achieved without too much calculations or whatsoever. Only, some trial-and-error to place the points is required.
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
add a comment |
One possible way/starting point (but not accurate here) is to use something like this:
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
usepackage{pst-eucl}
begin{document}
begin{pspicture}(-5,-5)(5,5)
pstTriangle[PointSymbol=none, PointName={A,B,A}](4,1){A}(1,3){B}(5,5){C}
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{A}{B}{C}{O}
end{pspicture}
end{document}
to get:
Here you basically define (atleast) three-points in space and let the circle pass through them.
Update 1:
To get the desired results, define some pseudo points (as in the so-called Bezier's trick
and 3 tangential points on the circle as in
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
%usepackage{pst-solides3d}
% https://tex.stackexchange.com/questions/7199/can-pstricks-or-others-draw-the-4-common-tangent-lines-of-2-disjoint-circles-w --> some help from Herbert's solution!
usepackage{pst-eucl}
begin{document}
begin{pspicture}
%set a few nodes at desired locations and employ the Bezier trick
pnodes(-1.8,2){M1}(3,4.2){M2}(2,-1.5){M3}(-1.7, 3){M4}
psdots(M1)(M2)(M3)
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{M1}{M2}{M3}{M4}{O}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
to get:
PS: Of course this solution is not sophisticated, but this can be achieved without too much calculations or whatsoever. Only, some trial-and-error to place the points is required.
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
add a comment |
One possible way/starting point (but not accurate here) is to use something like this:
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
usepackage{pst-eucl}
begin{document}
begin{pspicture}(-5,-5)(5,5)
pstTriangle[PointSymbol=none, PointName={A,B,A}](4,1){A}(1,3){B}(5,5){C}
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{A}{B}{C}{O}
end{pspicture}
end{document}
to get:
Here you basically define (atleast) three-points in space and let the circle pass through them.
Update 1:
To get the desired results, define some pseudo points (as in the so-called Bezier's trick
and 3 tangential points on the circle as in
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
%usepackage{pst-solides3d}
% https://tex.stackexchange.com/questions/7199/can-pstricks-or-others-draw-the-4-common-tangent-lines-of-2-disjoint-circles-w --> some help from Herbert's solution!
usepackage{pst-eucl}
begin{document}
begin{pspicture}
%set a few nodes at desired locations and employ the Bezier trick
pnodes(-1.8,2){M1}(3,4.2){M2}(2,-1.5){M3}(-1.7, 3){M4}
psdots(M1)(M2)(M3)
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{M1}{M2}{M3}{M4}{O}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
to get:
PS: Of course this solution is not sophisticated, but this can be achieved without too much calculations or whatsoever. Only, some trial-and-error to place the points is required.
One possible way/starting point (but not accurate here) is to use something like this:
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
usepackage{pst-eucl}
begin{document}
begin{pspicture}(-5,-5)(5,5)
pstTriangle[PointSymbol=none, PointName={A,B,A}](4,1){A}(1,3){B}(5,5){C}
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{A}{B}{C}{O}
end{pspicture}
end{document}
to get:
Here you basically define (atleast) three-points in space and let the circle pass through them.
Update 1:
To get the desired results, define some pseudo points (as in the so-called Bezier's trick
and 3 tangential points on the circle as in
%&pdflatex
% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]
documentclass[a4paper, pdf, x11names]{standalone}
usepackage{pstricks}
usepackage{pstricks-add, auto-pst-pdf}
%usepackage{pst-solides3d}
% https://tex.stackexchange.com/questions/7199/can-pstricks-or-others-draw-the-4-common-tangent-lines-of-2-disjoint-circles-w --> some help from Herbert's solution!
usepackage{pst-eucl}
begin{document}
begin{pspicture}
%set a few nodes at desired locations and employ the Bezier trick
pnodes(-1.8,2){M1}(3,4.2){M2}(2,-1.5){M3}(-1.7, 3){M4}
psdots(M1)(M2)(M3)
pstCircleABC[CodeFig=true, CodeFigColor=white,linecolor=red, PointSymbol=none, PointName={}]{M1}{M2}{M3}{M4}{O}
pstTriangle(0,4){C}(0,0){A}(3,0){B}
pstMiddleAB{A}{B}{I1} pstArcOAB{I1}{A}{B}
pstMiddleAB{B}{C}{I2} pstArcOAB{I2}{B}{C}
pstMiddleAB{C}{A}{I3} pstArcOAB{I3}{C}{A}
end{pspicture}
end{document}
to get:
PS: Of course this solution is not sophisticated, but this can be achieved without too much calculations or whatsoever. Only, some trial-and-error to place the points is required.
edited 1 hour ago
answered 3 hours ago
RaajaRaaja
2,9722934
2,9722934
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
add a comment |
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
Seem you misunderstood my idea. I want to draw a circle " tangent " and of course without center and radius...
– chishimotoji
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@chishimotoji: Because your question is not clear as usual.
– Artificial Stupidity
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
@Chishimotoji Ohhh, I am sorry. Could you update your question accordingly. I could not get understand that straightaway from your question.
– Raaja
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
Yes, I updated it.
– chishimotoji
2 hours ago
add a comment |
Thanks for contributing an answer to TeX - LaTeX 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.
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%2ftex.stackexchange.com%2fquestions%2f472186%2fhow-to-construct-a-circle-that-is-tangent-to-three-given-semi-circles%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
1
ah! that was exactly my comment in your other question in its original formulation! since then I have determined the coordinates of all three points of tangency, of the center, and the radius in terms of a, b, c... good luck.
– jfbu
2 hours ago
1
notice that you have another remarkable circle which is tangent internally to big semi-circle and externally to the (non-drawn) other small half-semi-circles. You obtain it in the asy code by using inscribed rather than ex-scribed circle. (and using the two other exscribed circles you have in total 4 remarkable circles with the red one in your picture one of them)
– jfbu
2 hours ago
@jfbu Oh no, I simply want to know if PStricks has any syntax to draw like Asymptote. :-))
– chishimotoji
2 hours ago
1
Yes that's good question (I don't know enough PSTricks to answer). The specific geometric problem here is something else (to which I devoted some hours over the last week-end to convert the construction (as you give in asy code) into explicit formulas... :) )
– jfbu
2 hours ago
@jfbu Oh, no problem, if you have any ways to solve my problem, feel free to post your solution. :-)
– chishimotoji
2 hours ago