Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:1f7:f886:7b...–

peter
Pascal › Simulace oběhu planety v Pas…
16. 9. 2014   #193997

Mno, prepsal jsem to do js. Ale tez tam mam nekde chybu :) Pro x to pocita nejaky straslivy cisla nez pro y a ujizdi na stranu. (Kit - se nesmej!)
Ty tam mas nejake nepresnosti v pocitani sily, umocneni 1.5 se mi nezda, kdyz ma vzorecek bud r na druhou nebo r na druhou * r/r. A pak uz je treba pocitat aktualni polohu a ne nulovy stav (to ti psal Kit s tou vztaznou soustavou). 

<html>
<style>
#graph {border:1px solid #f00; width:600px; height:500px; position:relative;}
#graph div {position:absolute;}
</style>
<div id="graph">
  <div id="o0"><b>o</b></div>
  <div id="o1">o</div>
  <div id="o2">o</div>
</div>
<div id="label">
  <div id="l0"></div>
  <div id="l1"></div>
  <div id="l2"></div>
  <div>
    <input type=button value=start onclick="if (timer!=null) {clearInterval(timer);} timer = setInterval(rotace,k.timer);">
    <input type=button value=stop onclick="clearInterval(timer);">
  </div>
</div>

<script>
function kresli(obj)
{
obj.label.innerHTML = obj.name + ": x = %1, y = %2".replace('%1',obj.x).replace('%2',obj.y);
obj.el.style.left   = k.x0 + Math.floor(obj.x * k.zoomx) + 'px';
obj.el.style.top    = k.y0 + Math.floor(obj.y * k.zoomy) + 'px';
}

function rotace()
{
var r2, F, ax, ay, vx, vy, x,y;
// zeme
r2 = Math.pow(slunce.x - zeme.x, 2) + Math.pow(slunce.y - zeme.y, 2);
F = - k.kappa * slunce.m * zeme.m / r2;
ax = F * zeme.x;
ay = F * zeme.y;
vx = zeme.vx + ax * k.dt;	// v = vo + a * t
vy = zeme.vy + ay * k.dt;
x  = zeme.x + vx * k.dt;
y  = zeme.y + vy * k.dt;
zeme.vx = vx;
zeme.vy = vy;
zeme.x = x;
zeme.y = y;

/*
// mesic
r = 
F = - k.kappa * slunce.m * zeme.m / (r * r);
ax = F * mesic.x0;
ay = F * mesic.y0;
vx = mesic.vx0 + ax * k.dt;
vy = mesic.vy0 + ay * k.dt;
x  = mesic.x0 + vx * k.dt;
y  = mesic.y0 + vy * k.dt;
mesic.x = x;
mesic.y = y;
*/

kresli(slunce);
kresli(zeme);
kresli(mesic);
}

var k = {
	// nasa units: http://nssdc.gsfc.nasa.gov/…t_notes.html
	// nasa earth: http://nssdc.gsfc.nasa.gov/…rthfact.html
	// nasa sun:   http://nssdc.gsfc.nasa.gov/…sunfact.html
	zoomx: 1e-41,	// x * zoom, y * zoom
	zoomy: 1e-8,	// x * zoom, y * zoom
	x0:   300,	//px
	y0:   200,	//px
	timer: 300,	//ms
	
        kappa: 6.67384E-11,	// Gravitational Constant [m3*kg-1*s-2] (N*m2*kg-2) - nasaU
        AU:    1.49597900E+11,	// AU [m] - nasaU
	s_m: 1.988500E+30,	// mass [kg] - nasaS
	z_m: 5.9726E+24,	// mass [kg] - nasaE
        z_rp: 1.4709E+11,	// peri [m] = 0.98329 * AU - nasaE
	z_vmax: -30.29E+3,	// rychlost v perihelu [m/s] - nasaE
        dt: 3600		// time step [s]
}

var slunce = {
        name:  'Slunce',
        el:    document.getElementById('o0'),
        label: document.getElementById('l0'),
	x: 0,
	y: 0,
	m: k.s_m
}
var zeme = {
        name:  'Zeme',
        el:    document.getElementById('o1'),
        label: document.getElementById('l1'),
	x:  k.z_rp,	//x0
	y:  0,		//y0
        vx: 0,
        vy: k.z_vmax,
	m:  k.z_m,
	x0: k.z_rp,
	y0: 0,
        vx0: 0,
        vy0: k.z_vmax
}

var mesic = {
        name:  'Mesic',
        el:    document.getElementById('o2'),
        label: document.getElementById('l2'),
	x:  k.z_rp,		//x0
	y:  0,		//y0
        vx: 0,
        vy: k.z_vmax,
	m:  k.m_m,
	x0: k.z_rp,
	y0: 0,
        vx0: 0,
        vy0: k.z_vmax
}

kresli(slunce);
kresli(zeme);
kresli(mesic);


var timer = null;
</script>
</html>
peter
Pascal › Simulace oběhu planety v Pas…
16. 9. 2014   #193992

Pouzil bych matematickou rotaci pres sin, cos. S vektory bych se nedrbal. Rychlost rotace pak urcuje narust uhlu. A udelal bych is na to objekty. Funkci pak predal jmeno objektu

obj.uhel += 0.2;
obj.x = floor (obj.x0 + obj.rx * cos(obj.uhel))
obj.y = floor (obj.y0 + obj.ry * sin(obj.uhel))

spocitej (slunce);
kresli (slunce);
spocitej (zeme);
kresli (zeme);
spocitej (mesic);
kresli (mesic);

peter
CSS › Velikost buňky v každém proh…
16. 9. 2014   #193987

Vidis, takze lepsi prohlizec umi zobrazit efekty, ktere ten druhy neumi, A zpusob pouziti ma jednodussi a logictejsi nez konkurence nebo predchozi verze. Problem jen nastava, kdyz se zmeny deji v kratkem casovem obdobi, to zas vyvojari vyhodnoti jako nespolehlive a nebudou chtit dany efekt pouzivat. Coz je presne pripad FF, kterej ruzne specialni veci menil tak casto, ze se o ne prestali lide zajimat.

peter
Hry › Tetris - systém levelů
16. 9. 2014   #193986

??? Prave jsi neco nahodne nasel googlem a chces vedet, co to je? No, to teda netusim. Ja nasel googlem uplne neco jineho, peknou modelku :) Hledal jsem sice nejaky den z kalendare, ale modelka je taky dobra.

Level se vetsinou zveda s poctem nahranych bodu, poctem shozenych linii nebo rucne zadany od uzivatele. S levelem roste rychlost i pocet bodu.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý