Wykres pola grawitacyjnego
Z wikipedii :
Newton uznał, że grawitacja jest siłą, z jaką oddziałują na siebie wszelkie ciała obdarzone masą. Prawo powszechnego ciążenia głosi, że:
Między dowolną parą ciał posiadających masy pojawia się siła przyciągająca, która działa na linii łączącej ich środki, a jej wartość rośnie z iloczynem ich mas i maleje z kwadratem odległości.
Myszą zmienisz położenie każdego ciała.
Matematycznie związek ten wyraża się wzorem:
(*)
, gdzie
ei jest wektorem jednostkowym (ee = 1) łączącym środki mas obu ciał.
Narysuję ilustrację pola grawitacyjnego dla trzech ciał o masach : m1, m2, m3
.
Zastosuję technikę "rysuję dywan".
1. wizualizacji dokonam przy pomocy gradientów :
void gradienty()
{
for(int i=0;i<55;i++)
{
paleta[i]=new Color(35+4*i,i,i);
paleta[55+i]=new Color(255-i,255-i,0);
}
}
|
2. Obliczę siłę przyciągania 2-ch ciał (
jeszcze bez uwzgl. mas )
3. ustalę kolor dla punktu pola grawitacyjnego
double F(pkt2d w0,pkt2d w)
{double ODL=Math.pow(w0.x-w.x,2)+Math.pow(w0.y-w.y,2);
if(w0.x!=w.x||w0.y!=w.y) ODL=Math.sqrt(ODL);
else ODL=1;
return(1.3/ODL);
}
|
Color JakiKolor(pkt2d p)
{int k_pola, double pole;
pole=m1*F(p,p1)+m2*F(p,p2)+m3*F(p,p3);
k_pola=(int)(sk*pole);
if(k_pola>109) k_pola=100;
return(paleta[k_pola]);
}
|
4. Narysuję dywan
void rysuj(Graphics g
{pkt2d p=new pkt2d(0,0);
Color kolor;
for(p.x=-max_x();p.x<max_x();p.x+=0.05)
for(p.y=-max_y()+0.05;p.y<max_y();p.y+=0.05)
{
kolor=JakiKolor(p);
lo28.punkt(g,p,kolor);
}
}
|