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:
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]
In geometry.asy - to hit the points $X,\ Y\, \text{and }Z$ - we can say directly (without that we have to make use of intersectionpoint(path p, path q) or of extension(pair, pair, pair, pair)):
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]
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 $\Delta(a,b,c)=$ triangle t=triangleabc(3,7,5);:
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]
The labeling of $\Delta(M,N,P)$ goes easier:
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]
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]
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]

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]

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]

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]
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 $\vartriangle(A,B,C)$.

[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]

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 $\varangle(A,B,C)$ is clearly just not the same as the triangle $\vartriangle(A,B,C)$. 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 $\color{blue}F^\prime$. 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]

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

Comment

0 Comments

Archives
+ April 2025
+ September 2014
+ August 2014
+ May 2013
Shouts
Submit
  • same, luckyleaf

    by MightySpider, Mar 31, 2025, 4:06 AM

  • woah this blog is older than me lol
    nice blog! :coolspeak:

    by luckyleaf77, Jan 11, 2025, 3:20 PM

  • admits
    ed

    by sixoneeight, Aug 10, 2024, 12:13 AM

  • https://artofproblemsolving.com/community/c3841395

    by Rename, Jul 21, 2024, 3:12 PM

  • wow cool blog! :D

    by BakedPotato66, Jan 10, 2024, 2:27 AM

  • Awesome!

    by Neurotricity, Oct 20, 2022, 9:38 AM

  • Can I be contrib? Thanks!

    by MC413551, Oct 8, 2022, 2:14 PM

  • Very nice blog :)

    by programmeruser, Sep 19, 2022, 12:23 PM

  • Wow! this is EPIC!

    by mathkid369, Jul 11, 2022, 2:43 PM

  • This blog is amazing! I've found so much useful information on here. Thank you!

    by je100, Mar 25, 2022, 5:04 PM

  • Unarguably one of the best blogs on AoPS created by one of the most amazing people on AoPS :)

    by player01, Mar 24, 2022, 6:38 PM

  • Thank you for this wonderful resource, K-A! It's helped me a lot. Not many sites have asymptotic tutorials that make sense, or Google just understands "asymptote" wrong.

    by fuzimiao2013, Dec 12, 2021, 6:43 PM

  • wow you are a pro at asymptote great job klaus-anton!!!

    by HWenslawski, Oct 20, 2021, 5:24 PM

  • Amazing blog. You are so good at asymptote!

    by player01, Aug 27, 2021, 12:48 PM

  • ngl, Klaus-Anton is pr0 at LaTeX and asymptote

    by mathlearner2357, Mar 19, 2021, 9:44 AM

  • Thanks! This blog had a lot of asymptote functions that I needed for olympiad geometry diagrams.

    by eduD_looC, Mar 16, 2021, 12:28 AM

  • @player01 now 30k visits

    by ObjectZ, Feb 2, 2021, 2:14 PM

  • @pog now 29k visits :P

    by player01, Nov 11, 2020, 5:14 PM

  • 18 shouts and 26k visits?

    by pog, Sep 9, 2020, 3:48 PM

  • yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet
    yeet

    by ARay10, Sep 4, 2020, 4:21 PM

  • What software do you use to make asymptote diagrams?

    -πφ

    by piphi, Jun 18, 2020, 3:09 AM

  • dang this is an old blog

    by CoolCarsOnTheRun, Jun 7, 2020, 10:07 PM

  • Is it possible to export an asymptote drawing as an SVG?

    -piphi

    by piphi, May 12, 2020, 6:56 PM

  • Yah, I remember that...

    by sonone, May 1, 2020, 2:39 PM

  • Actually, the making pies thing is from AoPS challenge problems in PA2.

    by RedSox2, Apr 23, 2020, 4:53 PM

  • I like your blog. How did you learn so much?

    by sonone, Apr 3, 2020, 2:36 PM

  • nice blog!

    by matharcher, Mar 21, 2020, 2:10 AM

  • wow, this is awesome! Im subscribing

    by piphi, Feb 12, 2020, 8:28 PM

  • Yes sure it is!

    by mathboy282, Dec 21, 2019, 9:38 PM

  • I like this blog. It is very helpful.

    by Chishimotoji, Jan 23, 2019, 3:12 AM

  • Great blog!

    by WizardMath, Mar 9, 2018, 10:59 AM

  • Asymptote = good = probably better that I ever will be

    by coolmath34, Nov 23, 2017, 1:03 AM

  • Wow you are good at asy!

    by fuegocaliente, May 24, 2017, 9:20 PM

  • first shout of 2017!!

    by Mathisfun04, Mar 6, 2017, 3:00 PM

  • Nice asymptote!

    by Boomer, Apr 2, 2014, 4:22 PM

  • :blush: I wonder, I wonder.

    by Klaus-Anton, Jan 8, 2011, 6:19 PM

  • First shout!

    by El_Ectric, Jan 4, 2011, 9:14 PM

37 shouts
Tags
Asymptote
Golden Ratio
Asy
Label
ellipse
Cardioid
geometry.asy
Hans Walser
Isosceles Triangle
path
tikz2asy
LaTeX
tangent
graph
Format
FAQ
Golden Trapezoid
incircle
Isosceles Trapezoid
right triangle
Quotes
Triangle
circle
color
complex numbers
dir
Dominotriangle
grid
trigonometry
Art of Understanding
Asymptote Programming
loop
Bisectorpoint
Intersectionpoints
mp2asy
philosophy
TikZ
unitcircle
angle
Arbelos
arrow
Art of Coming down
bisector
function
Gadamer
Inversion
nicefrac
olympiad.asy
pentagon
Poetry
square
Tangents
Array
asyFAQ
Fibonacci Numbers
Golden Spiral
Line
parabola
siunitx
size
string
trapezoid
AoPS
arcsubtended
bqe
Christmas
dirtime
display
Domino Triangle
fetch
fprintf
Golden Rectangle
Golden Triangle
Goldener Schnitt
Goldenes Trapez
Helmut Postel
Lebenswelt
locale
pentagram
point
programming
RadialShade
Silver Ratio
Vernunft
Acute Golden Triangle
amsmath
arclength
arrowhead
Arrowhead Design
art
atan2
Banana
Bivariate Quadratic Equation
box
clip
complex plane
coordinates
cosine
deferred drawing
degrees
Divide by zero
Fermat Point
font
geometry
greek
Insquare
Intersection Area
Kardioide
language
Lune of Hippocrates
maximum
minimum
Miquel point
notation
Obtuse Golden Triangle
pair
pascals triangle
Philosophie
power of a point
quadrilateral
relpoint
reltime
sector
Silver Ellipse
spiral
subpath
TeXLions
Trigonal Grid
Tutorium
unitsize
upright
varphi
Wiki
3d
add
animation
Anthropologie
Aphorism
approximation
Art of Problem Solving
asy overview
ASY3D
ASYfb.pdf
asyprog
autosizing
bisectordir
Bisectorline
Bivariate Quadratic Function
Circle of Thales
circles
Circumcenter
circumcircle
Classical Cardioid
colorpicker
Complex Unit
conic
Construction of Golden Ratio
Cos
Cosine Square
cube
currentpicture
dbinom
defaultformat
degPQ
derivative
dfrac
Dialektik
Didactics
distance
DOT
DotMargin
Equilateral Triangle
excircle
expi
Extension
Fibonacci
Focal Points
foci
fontsize
foot from point to line
frame
Gauss
Gedanken
Gergonne Triangle
gmaths
gmerris
Graphics Language
Grid of dots
Height
interp
invert
Jim Hefferon
Klaus-Antons blog Errata
Konstruktion Goldener Schnitt
Label Rotation
latticeshade
length
listings
Local Minimum
logo
Love
Lucas numbers
marker
mathematics
maxtimes
Meander
Mensch
Metafont
mintimes
miterjoin
numberline
octagon
octahedron
Odom
Opacity
pair invert
pair point
Pascalsches Dreieck
pathtime
pathtimes
Peace
perpendicularmark
picture
png
polygon
postcontrol
Postscript
precontrol
radians
radPQ
Reals
Rechtwinkliges Dreieck
Round Banana
Santa Claus house
scale
Sein
semicircle
Shading
shift
Silberne Ellipse
Silver Rectangle
sin
Sprache
squareroot
standard normal distribution
tangent circles
Tennis Ball
tex
TeX Logo
TeXlogo
texpath
time
times
transformation
TrigMacros.asy
Trigonometric Identities
Trigonometrie
Trisectrix of Maclaurin
Typography
understanding
Venn
woman
Yin Yang
YinYang
1overx
3-4-5-Triangle
6-character RGB hexadecimal
666
above
Abrollen
accel
accell
acute
Adaption
advanved fields
Aerea
Aestetics
Aesthetik
Affine Abbildung
Affine Transormation
Affinitaet (Mathematik)
Affinite (mathmatiques)
altitude
am
amsfonts
Analogous
Angela Merkel
angle bisector
Angle trisection
angles
angpoint
Ankreis
Antiparallelogramm
Antykwa Toruska
anunulus
AoPS asy
Aphorismen
Arbelos of Archimedes
Archimedes
arclength.asy
arctan2
arctanof2
area
Aristoteles
Armin Iske
arraycolsep
arrows
asy2png
asy2svg
asymptote 3D
Asymptote Competition
Asymptote guide
asymptote_tutorial.pdf
Aufwachen
autosize
axes
axialshade
axialshading
axis
Ballance
Bar Graph
barycenter
beauty
Beginning
Beste Freundin
beveljoin
Bewusstsein
Bewuustsein
bezier
beziered polygon
bezulate
Bildbeschreibung
Bildungspolitik
Binet
binom
binomial coefficient
binomial theorem
Birthday
bool
bool3
boundingbox
Brace
buildcycle
calligra
Canetti
Cardiod
Carnation
cartesian plane
center of mass
Cercle de Ford
Cercles de Ford
charts
Cherries
Cherry Blossoms
Chevian
Circle inversion
circlenodesnumber
circlenodesnumberfactor
circumradius
clever
clockwise
CM
cmfr
cminch
Cocatenating
coefficients
college math
Color Conversion
color scheme
Compass Directions
complementary
Complex Logarithm
Complex number
Complex Recusion
Connector
copy asy code
cos2theta
Critical Judgement Power
criticism
cse5
cse5.asy
Curly Brace
cylinder
Das erste Polygon
Das erste Wort
David Acheson
defaultpen
deferrered drawing
definition
deg2rad
degreesz1z2
Denken
density function
depth
diagonal
diagram
dialectic
Didaktik
Die erste Zahl
Diminutive
DIN
DIN Trapez
Dircectrix
Display boolean
division by zero
dodonaomik Circle
Dogmatism
Donut
donuts
DotMargins
Dots
Doubt
Drehung
Dreieck
Duet
Egyptian Triangle
Einschlafen
eintauchen
elegance
Elias Canetti
Ending
epsdice
equation
Esthetics
esvect
ethics
Euler Line
eulergreek
Eulersche Gerade
EuroTeX 89
evan.sty
Even and odd
expandafter
exponential function
extrude
eyes
faul
Faulheit
FetchAndDisplay
Fibonacci Spiral
Fibonacci Zahlen
Fibonacii Numbers
Fiboncci Ellipse
filldraw
filloutside
First Fermat Point
Five Points
flag
flower
Folium of Descartes
Foot
for everyone
ford
Ford Circle
Ford circles
Ford Kreis
Ford Kreise
form
Formatting
Formel
formula
Fraktur
Freundschaft
function invert
Gaetan Marris
Geodesy
Geogebra
geometric mean
Geometric Mean Theorem
geometric progression
Gergonne Point
german
Geschichte
gingerbread
Giovanni Salvemini
global
Gm
Goethe
Golden 60 Degree Trapezoid
Golden Arbelos
Golden Banner
Golden Circle
Golden Circles
Golden Ellipse
Golden Frustum
Golden Gnomon
Golden Traoezoid
Golden Window
Goldenes 60 Grad Trapez
good
Gothic
graph.asy
greetings
Grid of Lines
grpoint
Guide
Halb Silberne Ellipse
handy
Hans Georg Gadamer
Haus vom Nikolaus
Healing Art
heart
heartsuite
Hermeneutik
hexagon
HGG
history
Hm
hyperbola
ifeven
ifodd
illusion
Imagin re Eihheit
Imagin re Zahlen
imaginary numbers
Imaginary Unit
Immanuel Kant
Incircle Isosceles Trapezoid
Individualization
inequalities
Inkreis
inner tangents
inscribed square
Integral
intelligent
Intersection
intersectionpoint
intersections
intouch
invers
Inverse Value
ipen
Iteration
Jean Castillion
Jim Herfferon
jpen
jump.asy
Karl Kraus
Kegelschnitte
Kehrwert
keywords
kiss
KISS Principle
Klassische Kardioide
Knauth Figure
knife
KonTiki
Kosinus
Kritik
Kunst
Kunst des Verstehens
Labeling
labelscalefactor
LaTeX Array
latex package
LaTeX Symbol
Law of Cosines
LeftSide
Lemnicate of Bernoulli
Lemniscate of Bernoulli
lie
Liebe
linecaps
linejoins
LineMargin
LineMargins
listing
Local
Local Maximum
Locus
long division
Love Feelings
lowercase
lshort
Lucas
mandala
MAP
markangle
Marris
mathasttext
mathematik
matrix
max
Max Planck
mean
means
measure
Meine beste Freundin
Meinmond
Memory
metapost
mf2asy
Michelle Delapenha
min
Miquel
Miquel-Circle
Mnemotic Art
modification
Monotone Spline
morality
mpost
Multiple Arrows
multiplication
music
Mymoon
Natural Spline
Nested Loop
node
Notation of Constants
Notizen
Number of the beast
numbers
Object
oblique
obtuse
Olaf Scholz
Olympic Rings
operator..
optimization
Osculating Circle
outer tangents
package
Painting
pairs uvw
Pappus Chain
parallel
parallel marks
Parallel Tangents
parallelogram
parallels
parametric equation
Parametric Function
pascal triangle
paterns.asy
pathticks
Patterns
pedal curve of a circle
Pentagramm
percent sign
perpendicular
perpendicular bisector
perpfactor
Personalization
Peter Gallin
Ph. Ivaldi
Phi
Photosythesis
Phu Nguyen
pie
plot
plunge
pm
Poesie
point(path p real r)
points
Polar Circle
polar equation
polar graph
polarcircle
portrait
post pics
powers
Pre-Existance
Primfaktorzerlegung
Problem of Apollonius
ProfCollege
ps2asy
pstricks
pstricks-add
pstricks2asy
Pythagorean Fibonacci Tree
Pythagorean Triple
Pythagoreisches Tripel
Quadrat
quadratic function
quality
quartercircle
rad2deg
rag
Rainbow
random
Real
really smart
reals uvw
Rearrangement
rectangle
recursion
Reduced Latitude
reduzierte Breite
Reflexionen
regular polygon
regular triangle
Reiteration
relative
relpoint of a segment
rename
Render
rfrac
Riemann Surface
right angle
right angle mark
RightSide
Rms
rose
rotate
rotation
roundcap
roundedpath
roundjoin
SAS Triangle
sayings
Scaling
Schwabacher
Second Fermat Point
second leg
Segment
Selfie Quote
Semi latus rectum
Semiincircle
Sentence of Thales
seperate picture
Sepulchral Stone
set
Sharp Golden Triangle
SharpArrow
shipout
showthe
Sides
Silver Trapezoid
similarity
sine
Sine Theorem
sinus
Skepticism
smakelijk
Smart
SmoothShading
Solit Complementary
space
Special Points
Spline
sport
Sportwissenschaft
Spracherwerb
Sprachphilosophie
spring
sqrt
squarecap
squareroot 2
squareroot 8
squareroot3
Squares on Triangle
StackExchange
stackrel
Star
StealthHead
Steiner Chain
string array
String Cocatenation
Substitution
subtended
Summer Time
Superellipse
svg
Symmetric Arbelos
synchron
Tailing Patterns
Tan
Tangens
tangent circles in circle
Tangente
tangents to parabola
tasty
tbinom
Technik
Tetradic
TeXBook
text
textgreek
tfrac
Thales Circle
the golden ratio
The letter N
The texbook
theater
theorem of Thales
ThreeFourFiveTriangle
tick
tick mark
Tiling
times(path p pair z)
times(path p real xa)
Torus
trailing zeros
trajectory
Tran Quan
Tran-Quan-Square
transparency
Trapezoid with Incircle
Triadic
triangle aerea
Triangle with Incircle
triangleabc
Trigonal
trigonomety
trilinear coordinates
Trisection of Angle
truesize
Trueth
TUG
Twin Circles
twincircle
twincircles
Two Circles
Typograohy
underset
unfill
unit
unitsquare
unitvector
Unterbewusstsein
upgreek
Uppercase
Uppercase Letters
upright greek
Urteilskraft
uvw
vector
Verbindung
Verkleinerungsform
Vesiva Piscis
Viviani
Void
war
Waynet
Weisheit
width
wise
Wissen
Wurzel 15
Wurzel 2
Wurzel 3
Wurzel 5
xaxis
xpen
yaxis
ypen
About Owner
  • Posts: 732
  • Joined: Sep 24, 2010
Blog Stats
  • Blog created: Nov 3, 2010
  • Total entries: 769
  • Total visits: 77386
  • Total comments: 73
Search Blog
a