- Wstęp
- Konstrukcje geometryczne
- Rozwiązanie programistyczne
- Autor
|
W rombie przekątna jest dwusieczną kątów o wierzchołkach, które łączy. Wektorowo oznacza to równość (patrz rys.): .
Rysunek ilustruje rozwiązanie, w którym doprowadzamy do tego by odcinki ramion kąta miały tę samą długość.
W praktyce zwykle mamy sytuację, że rysujemy dwusieczną < CAB, gdzie punkty C, A i B nie wyznaczają rombu.
Przypomnę jeszcze wzory: długość wektora:
suma wek. :
iloczyn przez liczbę:
Aplet pokazuje poprawność rozwiązania, poniżej kod funkcji realizujących wzory.
pkt2d wektor(pkt2d p,pkt2d k)
{
return(new pkt2d(k.x-p.x , k.y-p.y));
}
//----------------------------------------
pkt2d suma(pkt2d x,pkt2d y)
{
return(new pkt2d(x.x+y.x , x.y+y.y));
}
//-----------------------------------------
pkt2d skaluj(double t , pkt2d x)
{
return(new pkt2d(t*x.x , t*x.y));
}
|
Możesz zmieniać położenie punktów A, B i C, przeciągając je myszą w dowolne miejsce. Obserwuj dwusieczną kąta.
I na koniec dwusieczna oraz funkcja licząca długość wektora:
void dwusieczna(Graphics g,pkt2d C,pkt2d A,pkt2d B)
{
pkt2d a=wektor(A , B);
pkt2d b=wektor(A , C);
double da=dlugosc(a);
double db=dlugosc(b);
pkt2d w_dw=suma(skaluj(db,a) , skaluj(da,b));
prosta(g , A , suma(A , w_dw),0,1.4);
}
|
double dlugosc(pkt2d a)
{
return(Math.sqrt(a.x*a.x+a.y*a.y));
}
|
|