The Bisectorpoint of olympiad.asy and of geometry.asy in Asymptote
by Klaus-Anton, Feb 23, 2020, 3:32 PM
I had my problems to feel me able to reproduce this answer. There was used the code:
![[asy]
size(6cm);
unitsize(2cm);
pair A,B,C,X,Y,I;
A= (0,0);
B = (1.5,0);
C = (0.3,0.7);
pair bspA=bisectorpoint(B,A,C)
,bspB=bisectorpoint(C,B,A)
;
X = intersectionpoint(B--C , A -- bspA);
//Y=extension(A,C,B,bspB);
/*
///////////////////////
or:
"line" of geometry.asy accepts "pair", and does not need "point",
and therefore here is no need to convert from point to pair.
*/
import geometry;
Y=intersectionpoint(line(A,C),line(B,bspB));
I = intersectionpoint(A--X, B--Y);
draw(X--A--C--B--Y);
draw(A--B);
// /*
draw(A--bspA,red);
draw(B--bspB,blue);
draw(circle(A,1),red);
draw(circle(B,1),blue);
dot(bspA^^A,red);
dot(bspB^^B,blue);
label(scale(.4)*"$bsp_A$",bspA,.6*SSW,red);
label(scale(.6)*"$bsp_B$",bspB,.8*dir(-50),blue);
// */
label("$A$",A,SW);
label("$B$",B,SE);
label("$C$",C,N);
label("$I$",I,S);
label("$X$",X,NE);
label("$Y$",Y,NW);
[/asy]](//latex.artofproblemsolving.com/6/f/f/6ff64a4a474e806f3ad4fdf2b296116401130cab.png)
In geometry.asy - to hit the points
- we can say directly (without that we have to make use of intersectionpoint(path p, path q) or of extension(pair, pair, pair, pair)):
![[asy]
size(6cm);
unitsize(2cm);
pair A,B,C,X,Y,I;
A= (0,0);
B = (1.5,0);
C = (0.3,0.7);
pair bspA=bisectorpoint(B,A,C)
,bspB=bisectorpoint(C,B,A)
;
X = intersectionpoint(B--C , A -- bspA);
//Y=extension(A,C,B,bspB);
/*
///////////////////////
or:
"line" of geometry.asy accepts "pair", and does not need "point",
and therefore here is need to convert from point to pair.
*/
import geometry;
Y=intersectionpoint(line(A,C),line(B,bspB));
I = intersectionpoint(A--X, B--Y);
draw(X--A--C--B--Y);
draw(A--B);
// /*
draw(A--bspA,red);
draw(B--bspB,blue);
draw(circle(A,1),red);
draw(circle(B,1),blue);
dot(bspA^^A,red);
dot(bspB^^B,blue);
label(scale(.6)*"$bsp_A$",bspA,.6*ENE,red);
label(scale(.6)*"$bsp_B$",bspB,.8*dir(-50),blue);
triangle t=triangle(A,B,C);
point A=A,B=B,C=C;
point bspX=bisectorpoint(t.BC);
point bspY=bisectorpoint(t.AC);
point bspZ=bisectorpoint(t.AB);
draw(C--bspZ,gray(.6));
dot("$Y$",bspY,.7*dir(B--bspY));
dot("$X$",bspX,//dir(A--bspX)
dir(bspZ--bspX));
dot("$Z$",bspZ,S//dir(C--bspZ)
);
label("$A$",A,SW);
label("$B$",B,SE);
label("$C$",C,N);
label("$I$",I,S);
//label("$X$",X,NE);
//label("$Y$",Y,NW);
[/asy]](//latex.artofproblemsolving.com/7/8/b/78b7a532928abb7a21e045f79b6f5c71cd736ce2.png)
And so now i can say in geometry.asy (without the need of olympiad.asy, what was my problem go to url, my answer here) for the
triangle t=triangleabc(3,7,5);:
![[asy]
size(8cm);
import geometry;
triangle t=triangleabc(3,7,5);
point M=t.A, myN=t.B, P=t.C;
point D=bisectorpoint(t.BC);
point K=bisectorpoint(t.AC);
pair O=intersectionpoint(M--D,myN--K);
//draw(bisector(t.VA));
//draw(bisector(t.VB));
//draw(bisector(t.VC));
draw(t.A--bisectorpoint(t.BC),.95red);
draw(t.B--bisectorpoint(t.AC),.8*green);
draw(t,blue+1bp);
//show(t);
//drawline(t);
dot(M^^myN^^P^^D^^K^^O, UnFill);
label("$D$",D, -dir(t.VA));
label("$K$",K,-dir(t.VB));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));// olypmiad.asy
label("$M$",M,dir(t.VA));
label("$N$",myN,dir(t.VB));
label("$P$",P,dir(t.VC));
label("$x$",O--K, .7*RightSide);
label("$y$",myN--O, .7*RightSide);
[/asy]](//latex.artofproblemsolving.com/a/3/4/a34b74932e8d2171c5c40156456a60ac305ebc85.png)
The labeling of
goes easier:
![[asy]
size(8cm);
import geometry;
triangle t=triangleabc(3,7,5);
point M=t.A, myN=t.B, P=t.C;
point D=bisectorpoint(t.BC);
point K=bisectorpoint(t.AC);
pair O=intersectionpoint(M--D,myN--K);
point I_1=intouch(t).VA;
point I_2=intouch(t).VB;
point I_3=intouch(t).VC;
draw(intouch(t),paleblue);
draw(incircle(t),paleblue);
draw(t.A--bisectorpoint(t.BC),red);
draw(t.B--bisectorpoint(t.AC),.8*green);
draw(t,.8blue);
dot(M^^myN^^P^^D^^K, UnFill);
dot(O,paleblue,UnFill);
label("$D$",D, -dir(t.VA));
label("$K$",K,-dir(t.VB));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));// olypmiad.asy
/*
label("$M$",M,dir(t.VA));
label("$N$",myN,dir(t.VB));
label("$P$",P,dir(t.VC));
*/
label("$M$","$N$","$P$",t);
label(scale(.5)*"$x$",O--K, .4*RightSide,.8green);
label(scale(.5)*"$y$",myN--O, .4*RightSide,.8green);
//label(intouch(t));
label("$I_1$","","$I_3$",intouch(t),paleblue);
label("$I_2$",I_2,dir(I_3--I_2),paleblue);
dot(I_1^^I_2^^I_3,paleblue,UnFill);
//dot(intouch(t),UnFill);//works not
//dot(incenter(t));//=O
[/asy]](//latex.artofproblemsolving.com/8/8/5/88588e1d3cf5caafa6fb03afbef72d5993895c0d.png)
But i still do not understand why things go wrong here with bisector(side,side) of geometry.asy:
![[asy]
size(8cm);
import olympiad;
import geometry;
triangle t=triangleabc(3,7,5);
//drawline(t, linewidth(bp));
//show(t);
draw(t);
// /*
label("M",t.A,W);
label("N",t.B,S);
label("P",t.C,N);
// */
point M=t.A, myN=t.B, P=t.C;
/*
point D=bisectorpoint(t.AB,t.AC);
dot(D,red);
// no matching function 'bisectorpoint(side, side)'
// but on page 76 of geometry_en.pdf mentioned
// so asy here interprets olypiad.asy?
*/
point D=intersectionpoint(line(t.B,t.C),bisector(t.AB,t.AC));
//draw(bisector(t.AB,t.AC));//MD
//draw(bisector(t.BC,t.CA));//PJ on MN
//draw(bisector(t.CA,t.CB));//PJ on MN
//draw(bisector(t.CB,t.CA));//PJ on MN
//draw(bisector(t.CA,t.CB));//PJ on MN
draw(Label("(?!?)",S),bisector(t.BA,t.BC),red);//parralel MP through N (?!?)
//dot(bisectorpoint(P,myN,M),red); draw(circle(myN,1));
pair K_help=bisectorpoint(M,myN,P);
pair K_help=bisectorpoint(M,myN,P);
//dot(K_help);//draw(circle(myN,1));
pair K=intersectionpoint(line(myN,K_help),line(M,P));
draw(myN--K);
pair O=intersectionpoint(M--D,myN--K);
/*
Oh no, oh no!! - Not parallel to MP through myN!!! - But perpendicular through myN of myNK.
draw(bisector(t.AB,t.BC),.8*green);// t.B but parallel to MP through myN
draw(bisector(t.BC,t.AB),.8*green);// t.B but also parallel to MP through myN
draw(bisector(t.BA,t.BC),.8*green);// t.B but dito
draw(bisector(t.BC,t.BA),.8*green);// t.B but dito
draw(bisector(t.CB,t.AB),.8*green);// t.B but dito
draw(bisector(t.CB,t.BA),.8*green);// t.B but dito
//draw(bisector(t.BA,t.CB));//parralel MP through N
//draw(bisector(t.CB,t.BA));//parralel MP through N
//draw(bisector(t.BA,t.BC));//parralel MP through N
//draw(bisector(t.AB,t.BC));//parralel MP through N
draw(bisector(t.AB,t.AC),red);// t.A
//draw(bisector(t.BC,t.AB),.8*green);// t.B but parralel MP through N?!?
draw(bisector(t.VB),.8*green);// works!!!
draw(bisector(t.AC,t.CB),blue);// t.C
*/
draw(M--D);
label("$D$",D, -I*dir(myN--P));
label("$K$",K,I*dir(M--P));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));
label("$x$",O--K, .7*RightSide);
label("$y$",myN--O, .7*RightSide);
dot(M^^myN^^P^^D^^K^^O, UnFill);
[/asy]](//latex.artofproblemsolving.com/b/1/b/b1bf61ff4df029ca529760b489dc31dc17d09fe1.png)
We still have to point out more distinctly and more exactly the difference between the bisectorpoint a) of geometry.asy and b) of olymoiad.asy.
We take another diagram. A triangle with the vertices A, B, and C. We take it here from my blog Angle bisector theorem.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
dot(D);
//show(t);
draw(t);
dot(t);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](//latex.artofproblemsolving.com/9/6/6/9668998451f52fba4792dadf9c653325ffda63e5.png)
And now let us have a look on the definition of the bisectorpoint of olypiad.asy:
We repeat our last diagram. And there in now we draw also a dot in blue - which we label (also in blue) with the uppercase letter E on the point which olympiad.asy calls bisectorpoint.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D,myE;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
pair myE=bisectorpoint(A,C,B);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
draw(t);
//show(t);
dot(D);
dot(t);
dot(myE,blue);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$E$",myE,dir(myE--A),blue);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](//latex.artofproblemsolving.com/c/3/e/c3e381148df38123ccb98e0e4aeaeaff23a77f73.png)
You see E is on the bisector half line CD. But how far away is it from the point C?
I know it. And i am just going to tell it to you. It is exactly one unit away. One unit from what you ask me directly. Ahhh. I tell you this too. It is one unitlength away. To demonstrate this to you i will draw in the color blue a circle around C, a circle with radius r=1. We introduce a further point F, and label the line segment CF with 1 to indicate the length of it. You conclude that CF = CE = 1, the points E and F are concyclic, you find them on the same circle.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D,myE,F=C+1;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
myE=bisectorpoint(A,C,B);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
draw(t);
//show(t);
draw(circle(C,1)^^C--F,blue);
dot(D);
dot(t);
dot(myE^^F,blue);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$E$",myE,1.375*dir(myE--relpoint(A--D,(1/6))),blue);
label("$F$",F,.8*E,blue);
label("$1$",F--C,blue);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](//latex.artofproblemsolving.com/b/d/f/bdf3ba9d77dfba3bc1fc4654f9fc60a1cb11da8f.png)
We summarize. The bisectorpoint of geometry.asy always is placed on the triangle. To speak it out more exactly and to emphasize the in the following explained difference, it is found on the outline of the triangle . And in contrast to this olympiad.asy sets the bisectorpoint inside the triangle - just one unit away from the vertex and this in the direction of the geometry.asy-bisectorpoint, but - you see - just not on the outline of the triangle. Both bisectorpoints are found on the bisectorline.
So. In the case you do not know enough of geometry.asy to be able to find the point D, you alternatively can declare it as
[Note: You may declare a point with the name E. But be aware in this way you overwrite the compass direction E which is standing for East. Now if you have done so, you can still get the compass direction E by calling it with the name plain.E, which is E as it is defined in the module plain.asy. See my answer go to url on AoPS Error in placement of label for length of side, post #5 or John Bowman explains plain.E: "Regarding the variable E, it is okay to define a user variable E but then you must use plain.E to access the direction East." (Bowman 2010).
What may still confuse you? To simplyfie things one step - which on the other side makes it more complicated - in the code for the following diagram i ommitted the above declared variable t, which i couldt choose freely and which was in the meaning standing as abreviation for triangle:
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,E;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
E=bisectorpoint(A,C,B);
/* E is the bisectorpoint of olympiad.asy */
draw(triangle(A,B,C));
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
dot(triangle(A,B,C));
dot("$D$",D,S);
dot("$E$",E, dir(E--A),blue);
label(triangle(A,B,C));
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](//latex.artofproblemsolving.com/1/a/c/1ac0afb5465326dc3dafc49aaf44c6d3f6a8de97.png)
There is still one problem for the understanding. I just called from olympiad.asy: bisectorpoint(A,C,B). But above i quoted from olympiad.asy: bisectorpoint(A,B,C). - Yes. This here is very important as difference to work correctly. The sequential order of giving the point change. This is therefore, because it refers to the general triange
.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,D_prime,E,E_prime,F,F_prime;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
point F=bisectorpoint(triangle(A,B,C).AC);
/* F is the bisectorpoint of geometry.asy */
D_prime=bisectorpoint(A,C,B);
/* D_prime is the bisectorpoint of olympiad.asy */
F_prime=bisectorpoint(A,B,C);
/* F_prime is the bisectorpoint of olympiad.asy */
draw(triangle(A,B,C));
draw(C--D^^B--F,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(C,B,F,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(F,B,A,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
dot(triangle(A,B,C));
dot("$D$",D,S);
dot("F",F,dir(B--F));
dot("$D^\prime$",D_prime, I*dir(C--D),blue);
dot("$F^\prime$",F_prime, I*dir(B--F),blue);
label(triangle(A,B,C));
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
label(scale(.7)*"$\beta_1$", B,7*dir(B--bisectorpoint(C,B,F)),red);
label(scale(.7)*"$\beta_2$", B,7*dir(B--bisectorpoint(F,B,A)),red);
//draw(circle(B,1));
[/asy]](//latex.artofproblemsolving.com/d/0/b/d0bbd3aef0a4d0a4cc380f73f52fee3c4625c794.png)
Really? - Only one single problem has rested us? No, no, no. - No no. The direction how the triangle is thought - if clockwise or couterclockwise also seems me to differ. Analyse why the above code just gives this output as it does. Compare input and output. Study this. What do you can conclude? - Is it so as i think it me here?
But. The angle
is clearly just not the same as the triangle
. olypiad.asy returns for both - the bisectorpoint(A,B,C) and the bisectorpoint(C,B,A) - the same point. The both return the above indrawn
. This seems to allow you to tear the conclusion, that in both of these two cases it is “thinking” at the same triangle.
![[asy]
size(8cm);
unitsize(2.5cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,D_prime,E,E_prime,F,F_prime;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
point E=bisectorpoint(triangle(A,B,C).BC);
/* E is the bisectorpoint of geometry.asy */
point F=bisectorpoint(triangle(A,B,C).AC);
/* F is the bisectorpoint of geometry.asy */
D_prime=bisectorpoint(A,C,B);
/* D_prime is the bisectorpoint of olympiad.asy */
E_prime=bisectorpoint(B,A,C);
/* E_prime is the bisectorpoint of olympiad.asy */
F_prime=bisectorpoint(A,B,C);
/* F_prime is the bisectorpoint of olympiad.asy */
point myI=intersectionpoint(A--E,B--F);
draw(triangle(A,B,C));
draw(C--D^^B--F^^A--E,.8green);
//draw(circle(A,1)^^circle(B,1)^^circle(C,1));
//show(triangle(A,C,B).AC,red);
//draw(circle(A,1));
draw(scale(.6)*"$\vec{u}=dir(1,0)$",A--A+1,red,Arrow,DotMargin);
draw(scale(.6)*"$\vec{v}=dir(0,1)$",A--(A.x,A.y+1),LeftSide,red,Arrow,DotMargin);
draw(arc(A,1,0,90),red+dotted);
markangle(B,A,E,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(E,A,C,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(C,B,F,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(F,B,A,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(3,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(3,2mm,red),true)));
//dot(triangle(A,B,C));
dot(A^^B^^C,UnFill);
dot("$D$",D,S,.8green,UnFill);
//dot("$E$",E,dir(A--E),.8green,UnFill);
dot("$E$",E,I*dir(C--B),.8green,UnFill);
dot("$F$",F,dir((.75,0)--F),.8green,UnFill);
dot("$I$",myI,3.0*dir(myI--bisectorpoint(B,myI,E)),.8green,UnFill);
dot("$D^\prime$",D_prime, I*dir(C--D),.8blue,UnFill);
dot("$E^\prime$",E_prime,1.5*dir(E_prime--relpoint(A--D,.55)),.8blue,UnFill);
dot("$F^\prime$",F_prime, I*dir(B--F),.8blue,UnFill);
dot(A+1^^(A.x,A.y+1),.8red,UnFill);
label(triangle(A,B,C));
/*
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
*/
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
label(scale(1)*"$\alpha_1$", A,6*dir(A--bisectorpoint(B,A,E)),red);
label(scale(1)*"$\alpha_2$", A,6*dir(A--bisectorpoint(E,A,C)),red);
label(scale(.7)*"$\beta_1$", B,7*dir(B--bisectorpoint(C,B,F)),red);
label(scale(.7)*"$\beta_2$", B,7*dir(B--bisectorpoint(F,B,A)),red);
[/asy]](//latex.artofproblemsolving.com/8/d/1/8d1304c76a7f5d360772e516f321002ec06ecee0.png)
See also The Bisectorline of a Line in the Triangle (with geometry.asy).
Y = intersectionpoint(A--C, B -- B + scale(6)*( (bisectorpoint(C,B,A)) - B));The way i chose and which i understand better to declare the point Y is:
pair bspA=bisectorpoint(B,A,C) ,bspB=bisectorpoint(C,B,A) ; X = intersectionpoint(B--C , A -- bspA); //Y=extension(A,C,B,bspB); /* /////////////////////// or: "line" of geometry.asy accepts "pair", and does not need "point", and therefore here is need to convert from point to pair. */ import geometry; Y=intersectionpoint(line(A,C),line(B,bspB));
![[asy]
size(6cm);
unitsize(2cm);
pair A,B,C,X,Y,I;
A= (0,0);
B = (1.5,0);
C = (0.3,0.7);
pair bspA=bisectorpoint(B,A,C)
,bspB=bisectorpoint(C,B,A)
;
X = intersectionpoint(B--C , A -- bspA);
//Y=extension(A,C,B,bspB);
/*
///////////////////////
or:
"line" of geometry.asy accepts "pair", and does not need "point",
and therefore here is no need to convert from point to pair.
*/
import geometry;
Y=intersectionpoint(line(A,C),line(B,bspB));
I = intersectionpoint(A--X, B--Y);
draw(X--A--C--B--Y);
draw(A--B);
// /*
draw(A--bspA,red);
draw(B--bspB,blue);
draw(circle(A,1),red);
draw(circle(B,1),blue);
dot(bspA^^A,red);
dot(bspB^^B,blue);
label(scale(.4)*"$bsp_A$",bspA,.6*SSW,red);
label(scale(.6)*"$bsp_B$",bspB,.8*dir(-50),blue);
// */
label("$A$",A,SW);
label("$B$",B,SE);
label("$C$",C,N);
label("$I$",I,S);
label("$X$",X,NE);
label("$Y$",Y,NW);
[/asy]](http://latex.artofproblemsolving.com/6/f/f/6ff64a4a474e806f3ad4fdf2b296116401130cab.png)
In geometry.asy - to hit the points

point bspX=bisectorpoint(t.BC); point bspY=bisectorpoint(t.AC); point bspZ=bisectorpoint(t.AB);
![[asy]
size(6cm);
unitsize(2cm);
pair A,B,C,X,Y,I;
A= (0,0);
B = (1.5,0);
C = (0.3,0.7);
pair bspA=bisectorpoint(B,A,C)
,bspB=bisectorpoint(C,B,A)
;
X = intersectionpoint(B--C , A -- bspA);
//Y=extension(A,C,B,bspB);
/*
///////////////////////
or:
"line" of geometry.asy accepts "pair", and does not need "point",
and therefore here is need to convert from point to pair.
*/
import geometry;
Y=intersectionpoint(line(A,C),line(B,bspB));
I = intersectionpoint(A--X, B--Y);
draw(X--A--C--B--Y);
draw(A--B);
// /*
draw(A--bspA,red);
draw(B--bspB,blue);
draw(circle(A,1),red);
draw(circle(B,1),blue);
dot(bspA^^A,red);
dot(bspB^^B,blue);
label(scale(.6)*"$bsp_A$",bspA,.6*ENE,red);
label(scale(.6)*"$bsp_B$",bspB,.8*dir(-50),blue);
triangle t=triangle(A,B,C);
point A=A,B=B,C=C;
point bspX=bisectorpoint(t.BC);
point bspY=bisectorpoint(t.AC);
point bspZ=bisectorpoint(t.AB);
draw(C--bspZ,gray(.6));
dot("$Y$",bspY,.7*dir(B--bspY));
dot("$X$",bspX,//dir(A--bspX)
dir(bspZ--bspX));
dot("$Z$",bspZ,S//dir(C--bspZ)
);
label("$A$",A,SW);
label("$B$",B,SE);
label("$C$",C,N);
label("$I$",I,S);
//label("$X$",X,NE);
//label("$Y$",Y,NW);
[/asy]](http://latex.artofproblemsolving.com/7/8/b/78b7a532928abb7a21e045f79b6f5c71cd736ce2.png)
And so now i can say in geometry.asy (without the need of olympiad.asy, what was my problem go to url, my answer here) for the

draw(t.A--bisectorpoint(t.BC),.8*red); draw(t.B--bisectorpoint(t.AC),.8*green);
![[asy]
size(8cm);
import geometry;
triangle t=triangleabc(3,7,5);
point M=t.A, myN=t.B, P=t.C;
point D=bisectorpoint(t.BC);
point K=bisectorpoint(t.AC);
pair O=intersectionpoint(M--D,myN--K);
//draw(bisector(t.VA));
//draw(bisector(t.VB));
//draw(bisector(t.VC));
draw(t.A--bisectorpoint(t.BC),.95red);
draw(t.B--bisectorpoint(t.AC),.8*green);
draw(t,blue+1bp);
//show(t);
//drawline(t);
dot(M^^myN^^P^^D^^K^^O, UnFill);
label("$D$",D, -dir(t.VA));
label("$K$",K,-dir(t.VB));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));// olypmiad.asy
label("$M$",M,dir(t.VA));
label("$N$",myN,dir(t.VB));
label("$P$",P,dir(t.VC));
label("$x$",O--K, .7*RightSide);
label("$y$",myN--O, .7*RightSide);
[/asy]](http://latex.artofproblemsolving.com/a/3/4/a34b74932e8d2171c5c40156456a60ac305ebc85.png)
The labeling of

label("$M$","$N$","$P$",t);
![[asy]
size(8cm);
import geometry;
triangle t=triangleabc(3,7,5);
point M=t.A, myN=t.B, P=t.C;
point D=bisectorpoint(t.BC);
point K=bisectorpoint(t.AC);
pair O=intersectionpoint(M--D,myN--K);
point I_1=intouch(t).VA;
point I_2=intouch(t).VB;
point I_3=intouch(t).VC;
draw(intouch(t),paleblue);
draw(incircle(t),paleblue);
draw(t.A--bisectorpoint(t.BC),red);
draw(t.B--bisectorpoint(t.AC),.8*green);
draw(t,.8blue);
dot(M^^myN^^P^^D^^K, UnFill);
dot(O,paleblue,UnFill);
label("$D$",D, -dir(t.VA));
label("$K$",K,-dir(t.VB));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));// olypmiad.asy
/*
label("$M$",M,dir(t.VA));
label("$N$",myN,dir(t.VB));
label("$P$",P,dir(t.VC));
*/
label("$M$","$N$","$P$",t);
label(scale(.5)*"$x$",O--K, .4*RightSide,.8green);
label(scale(.5)*"$y$",myN--O, .4*RightSide,.8green);
//label(intouch(t));
label("$I_1$","","$I_3$",intouch(t),paleblue);
label("$I_2$",I_2,dir(I_3--I_2),paleblue);
dot(I_1^^I_2^^I_3,paleblue,UnFill);
//dot(intouch(t),UnFill);//works not
//dot(incenter(t));//=O
[/asy]](http://latex.artofproblemsolving.com/8/8/5/88588e1d3cf5caafa6fb03afbef72d5993895c0d.png)
But i still do not understand why things go wrong here with bisector(side,side) of geometry.asy:
![[asy]
size(8cm);
import olympiad;
import geometry;
triangle t=triangleabc(3,7,5);
//drawline(t, linewidth(bp));
//show(t);
draw(t);
// /*
label("M",t.A,W);
label("N",t.B,S);
label("P",t.C,N);
// */
point M=t.A, myN=t.B, P=t.C;
/*
point D=bisectorpoint(t.AB,t.AC);
dot(D,red);
// no matching function 'bisectorpoint(side, side)'
// but on page 76 of geometry_en.pdf mentioned
// so asy here interprets olypiad.asy?
*/
point D=intersectionpoint(line(t.B,t.C),bisector(t.AB,t.AC));
//draw(bisector(t.AB,t.AC));//MD
//draw(bisector(t.BC,t.CA));//PJ on MN
//draw(bisector(t.CA,t.CB));//PJ on MN
//draw(bisector(t.CB,t.CA));//PJ on MN
//draw(bisector(t.CA,t.CB));//PJ on MN
draw(Label("(?!?)",S),bisector(t.BA,t.BC),red);//parralel MP through N (?!?)
//dot(bisectorpoint(P,myN,M),red); draw(circle(myN,1));
pair K_help=bisectorpoint(M,myN,P);
pair K_help=bisectorpoint(M,myN,P);
//dot(K_help);//draw(circle(myN,1));
pair K=intersectionpoint(line(myN,K_help),line(M,P));
draw(myN--K);
pair O=intersectionpoint(M--D,myN--K);
/*
Oh no, oh no!! - Not parallel to MP through myN!!! - But perpendicular through myN of myNK.
draw(bisector(t.AB,t.BC),.8*green);// t.B but parallel to MP through myN
draw(bisector(t.BC,t.AB),.8*green);// t.B but also parallel to MP through myN
draw(bisector(t.BA,t.BC),.8*green);// t.B but dito
draw(bisector(t.BC,t.BA),.8*green);// t.B but dito
draw(bisector(t.CB,t.AB),.8*green);// t.B but dito
draw(bisector(t.CB,t.BA),.8*green);// t.B but dito
//draw(bisector(t.BA,t.CB));//parralel MP through N
//draw(bisector(t.CB,t.BA));//parralel MP through N
//draw(bisector(t.BA,t.BC));//parralel MP through N
//draw(bisector(t.AB,t.BC));//parralel MP through N
draw(bisector(t.AB,t.AC),red);// t.A
//draw(bisector(t.BC,t.AB),.8*green);// t.B but parralel MP through N?!?
draw(bisector(t.VB),.8*green);// works!!!
draw(bisector(t.AC,t.CB),blue);// t.C
*/
draw(M--D);
label("$D$",D, -I*dir(myN--P));
label("$K$",K,I*dir(M--P));
label("$O$",O,dir(O--bisectorpoint(myN,O,M)));
label("$x$",O--K, .7*RightSide);
label("$y$",myN--O, .7*RightSide);
dot(M^^myN^^P^^D^^K^^O, UnFill);
[/asy]](http://latex.artofproblemsolving.com/b/1/b/b1bf61ff4df029ca529760b489dc31dc17d09fe1.png)
We still have to point out more distinctly and more exactly the difference between the bisectorpoint a) of geometry.asy and b) of olymoiad.asy.
We take another diagram. A triangle with the vertices A, B, and C. We take it here from my blog Angle bisector theorem.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
dot(D);
//show(t);
draw(t);
dot(t);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](http://latex.artofproblemsolving.com/9/6/6/9668998451f52fba4792dadf9c653325ffda63e5.png)
And now let us have a look on the definition of the bisectorpoint of olypiad.asy:
// The point on the angle bisector of <ABC that is a unit distance from B. // If only two points A and B are specified, the function returns a point // on the perpendicular bisector of AB, a unit distance from the segment. pair bisectorpoint(pair A ... pair[] BC) { pair P,B,C,M; if (BC.length==1) { B=BC[0]; M=midpoint(A--B); P=unit(rotate(90,M)*A-M)+M; } else if (BC.length==2) { B=BC[0]; C=BC[1]; P=unit(midpoint((unit(A-B)+B)--(unit(C-B)+B))-B)+B; } return P; }
We repeat our last diagram. And there in now we draw also a dot in blue - which we label (also in blue) with the uppercase letter E on the point which olympiad.asy calls bisectorpoint.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D,myE;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
pair myE=bisectorpoint(A,C,B);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
draw(t);
//show(t);
dot(D);
dot(t);
dot(myE,blue);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$E$",myE,dir(myE--A),blue);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](http://latex.artofproblemsolving.com/c/3/e/c3e381148df38123ccb98e0e4aeaeaff23a77f73.png)
You see E is on the bisector half line CD. But how far away is it from the point C?
I know it. And i am just going to tell it to you. It is exactly one unit away. One unit from what you ask me directly. Ahhh. I tell you this too. It is one unitlength away. To demonstrate this to you i will draw in the color blue a circle around C, a circle with radius r=1. We introduce a further point F, and label the line segment CF with 1 to indicate the length of it. You conclude that CF = CE = 1, the points E and F are concyclic, you find them on the same circle.
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,bisectorpoint_D,myE,F=C+1;
triangle t=triangle(A,B,C);
point bisectorpoint_D=bisectorpoint(t.AB), D=bisectorpoint_D;
triangle t2=triangle(A,D,C);
triangle t3=triangle(D,B,C);
myE=bisectorpoint(A,C,B);
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
draw(t);
//show(t);
draw(circle(C,1)^^C--F,blue);
dot(D);
dot(t);
dot(myE^^F,blue);
/*
label("$A$",A,dir(t.VA));
label("$B$",B,dir(t.VB));
label("$C$",C,dir(t.VC));
*/
label(t);
label("$a$",B--C);
label("$b$",C--A);
label("$c$",A--D);
label("$d$",D--B);
label("$D$",D,S);
label("$E$",myE,1.375*dir(myE--relpoint(A--D,(1/6))),blue);
label("$F$",F,.8*E,blue);
label("$1$",F--C,blue);
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](http://latex.artofproblemsolving.com/b/d/f/bdf3ba9d77dfba3bc1fc4654f9fc60a1cb11da8f.png)
We summarize. The bisectorpoint of geometry.asy always is placed on the triangle. To speak it out more exactly and to emphasize the in the following explained difference, it is found on the outline of the triangle . And in contrast to this olympiad.asy sets the bisectorpoint inside the triangle - just one unit away from the vertex and this in the direction of the geometry.asy-bisectorpoint, but - you see - just not on the outline of the triangle. Both bisectorpoints are found on the bisectorline.
So. In the case you do not know enough of geometry.asy to be able to find the point D, you alternatively can declare it as
pair E=extension(A,B,C,D);
[Note: You may declare a point with the name E. But be aware in this way you overwrite the compass direction E which is standing for East. Now if you have done so, you can still get the compass direction E by calling it with the name plain.E, which is E as it is defined in the module plain.asy. See my answer go to url on AoPS Error in placement of label for length of side, post #5 or John Bowman explains plain.E: "Regarding the variable E, it is okay to define a user variable E but then you must use plain.E to access the direction East." (Bowman 2010).
What may still confuse you? To simplyfie things one step - which on the other side makes it more complicated - in the code for the following diagram i ommitted the above declared variable t, which i couldt choose freely and which was in the meaning standing as abreviation for triangle:
![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,E;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
E=bisectorpoint(A,C,B);
/* E is the bisectorpoint of olympiad.asy */
draw(triangle(A,B,C));
draw(C--D,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
dot(triangle(A,B,C));
dot("$D$",D,S);
dot("$E$",E, dir(E--A),blue);
label(triangle(A,B,C));
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
[/asy]](http://latex.artofproblemsolving.com/1/a/c/1ac0afb5465326dc3dafc49aaf44c6d3f6a8de97.png)
D=bisectorpoint(triangle(A,B,C).AB); /* D is the bisectorpoint of geometry.asy */ E=bisectorpoint(A,C,B); /* E is the bisectorpoint of olympiad.asy */
There is still one problem for the understanding. I just called from olympiad.asy: bisectorpoint(A,C,B). But above i quoted from olympiad.asy: bisectorpoint(A,B,C). - Yes. This here is very important as difference to work correctly. The sequential order of giving the point change. This is therefore, because it refers to the general triange

![[asy]
size(6cm);
unitsize(2cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,D_prime,E,E_prime,F,F_prime;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
point F=bisectorpoint(triangle(A,B,C).AC);
/* F is the bisectorpoint of geometry.asy */
D_prime=bisectorpoint(A,C,B);
/* D_prime is the bisectorpoint of olympiad.asy */
F_prime=bisectorpoint(A,B,C);
/* F_prime is the bisectorpoint of olympiad.asy */
draw(triangle(A,B,C));
draw(C--D^^B--F,red);
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(C,B,F,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(F,B,A,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
dot(triangle(A,B,C));
dot("$D$",D,S);
dot("F",F,dir(B--F));
dot("$D^\prime$",D_prime, I*dir(C--D),blue);
dot("$F^\prime$",F_prime, I*dir(B--F),blue);
label(triangle(A,B,C));
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
label(scale(.7)*"$\beta_1$", B,7*dir(B--bisectorpoint(C,B,F)),red);
label(scale(.7)*"$\beta_2$", B,7*dir(B--bisectorpoint(F,B,A)),red);
//draw(circle(B,1));
[/asy]](http://latex.artofproblemsolving.com/d/0/b/d0bbd3aef0a4d0a4cc380f73f52fee3c4625c794.png)
point D=bisectorpoint(triangle(A,B,C).AB); /* D is the bisectorpoint of geometry.asy */ point F=bisectorpoint(triangle(A,B,C).AC); /* F is the bisectorpoint of geometry.asy */ D_prime=bisectorpoint(A,C,B); /* D_prime is the bisectorpoint of olympiad.asy */ F_prime=bisectorpoint(A,B,C); /* F_prime is the bisectorpoint of olympiad.asy */
Really? - Only one single problem has rested us? No, no, no. - No no. The direction how the triangle is thought - if clockwise or couterclockwise also seems me to differ. Analyse why the above code just gives this output as it does. Compare input and output. Study this. What do you can conclude? - Is it so as i think it me here?
But. The angle



![[asy]
size(8cm);
unitsize(2.5cm);
import markers;
//import olympiad.asy;
import geometry;
point A=(0,0),B=(3,0),C=(.5,2),D,D_prime,E,E_prime,F,F_prime;
point D=bisectorpoint(triangle(A,B,C).AB);
/* D is the bisectorpoint of geometry.asy */
point E=bisectorpoint(triangle(A,B,C).BC);
/* E is the bisectorpoint of geometry.asy */
point F=bisectorpoint(triangle(A,B,C).AC);
/* F is the bisectorpoint of geometry.asy */
D_prime=bisectorpoint(A,C,B);
/* D_prime is the bisectorpoint of olympiad.asy */
E_prime=bisectorpoint(B,A,C);
/* E_prime is the bisectorpoint of olympiad.asy */
F_prime=bisectorpoint(A,B,C);
/* F_prime is the bisectorpoint of olympiad.asy */
point myI=intersectionpoint(A--E,B--F);
draw(triangle(A,B,C));
draw(C--D^^B--F^^A--E,.8green);
//draw(circle(A,1)^^circle(B,1)^^circle(C,1));
//show(triangle(A,C,B).AC,red);
//draw(circle(A,1));
draw(scale(.6)*"$\vec{u}=dir(1,0)$",A--A+1,red,Arrow,DotMargin);
draw(scale(.6)*"$\vec{v}=dir(0,1)$",A--(A.x,A.y+1),LeftSide,red,Arrow,DotMargin);
draw(arc(A,1,0,90),red+dotted);
markangle(B,A,E,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(E,A,C,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(1,2mm,red),true)));
markangle(C,B,F,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(F,B,A,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(2,2mm,red),true)));
markangle(A,C,D,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(3,2mm,red),true)));
markangle(D,C,B,radius=13.75mm
,blue,PenMargins,marker(markinterval(1,stickframe(3,2mm,red),true)));
//dot(triangle(A,B,C));
dot(A^^B^^C,UnFill);
dot("$D$",D,S,.8green,UnFill);
//dot("$E$",E,dir(A--E),.8green,UnFill);
dot("$E$",E,I*dir(C--B),.8green,UnFill);
dot("$F$",F,dir((.75,0)--F),.8green,UnFill);
dot("$I$",myI,3.0*dir(myI--bisectorpoint(B,myI,E)),.8green,UnFill);
dot("$D^\prime$",D_prime, I*dir(C--D),.8blue,UnFill);
dot("$E^\prime$",E_prime,1.5*dir(E_prime--relpoint(A--D,.55)),.8blue,UnFill);
dot("$F^\prime$",F_prime, I*dir(B--F),.8blue,UnFill);
dot(A+1^^(A.x,A.y+1),.8red,UnFill);
label(triangle(A,B,C));
/*
label("$\gamma_1=\gamma_2\Leftrightarrow\frac{b}{a}=\frac{c}{d}=\frac{|AC|}{|BC|}=\frac{|AD|}{|BD|}$",(1.5,-.4),S);
*/
label("$\gamma_1$", C,6*dir(C--bisectorpoint(A,C,D)),red);
label("$\gamma_2$", C,6*dir(C--bisectorpoint(D,C,B)),red);
label(scale(1)*"$\alpha_1$", A,6*dir(A--bisectorpoint(B,A,E)),red);
label(scale(1)*"$\alpha_2$", A,6*dir(A--bisectorpoint(E,A,C)),red);
label(scale(.7)*"$\beta_1$", B,7*dir(B--bisectorpoint(C,B,F)),red);
label(scale(.7)*"$\beta_2$", B,7*dir(B--bisectorpoint(F,B,A)),red);
[/asy]](http://latex.artofproblemsolving.com/8/d/1/8d1304c76a7f5d360772e516f321002ec06ecee0.png)
See also The Bisectorline of a Line in the Triangle (with geometry.asy).
This post has been edited 32 times. Last edited by Klaus-Anton, Mar 12, 2020, 1:59 PM