Kezdőoldal » Számítástechnika » Programozás » JavaSriptel hogy tudok egy...

Lakrmotanika kérdése:

JavaSriptel hogy tudok egy ingaórát csinálni valaki segítene?

Figyelt kérdés
2014. okt. 4. 16:25
 1/9 anonim ***** válasza:
Szerintem te sehogy.
2014. okt. 4. 16:33
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
vagy valaki elküldené a kódját?
2014. okt. 4. 16:35
 3/9 anonim ***** válasza:

Google:

[link]


Első találat:

[link]

2014. okt. 4. 16:39
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:
köszönöm
2014. okt. 4. 16:43
 5/9 A kérdező kommentje:

Ezt mért nem működik? ha megnyitom internet explorer-el mozilláával???????


<html>

<head>

<title>Inga óra</title>

</head>

<body>

<canvas id="canvas" height="600" width="400"></canvas>

<script>


var height = 600; var width = 400;

var canvas = ctx = false;

var frameRate = 1/40;

var frameDelay = frameRate * 1000;

var loopTimer = false;

var lastTime = false;


window.requestAnimFrame = (function(){

return window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||

function( callback ){

window.setTimeout(callback, 1000 / 60);

};

})();


var pendulum = {mass: 100, length:500, theta: (Math.PI/2) - 0.05, omega: 0, alpha:0, J:0};

var setup = function() {

pendulum.J = pendulum.mass * pendulum.length * pendulum.length / 500;

canvas = document.getElementById("canvas");

ctx = canvas.getContext("2d");


ctx.strokeStyle = "black";

ctx.fillStyle = "gold";


// loopTimer = setInterval(loop, frameDelay);

lastTime = new Date();

requestAnimFrame(loop);

}

var loop = function(time) {

var deltaT = (time - lastTime.getTime()) / 1000;


/*

When switching away from the window,

requestAnimationFrame is paused. Switching back

will give us a giant deltaT and cause an explosion.

We make sure that the biggest possible deltaT is 50 ms

*/


if (deltaT > 0.050)

{

deltaT = 0.050;

}

deltaT = 0.01;


time = new Date(time);


/* Velocity Verlet */

/* Calculate current position from last frame's position, velocity, and acceleration */

pendulum.theta += pendulum.omega * deltaT + ( 0.5 * pendulum.alpha * deltaT * deltaT );


/* Calculate forces from current position. */

var T = pendulum.mass * 9.81 * Math.cos(pendulum.theta) * pendulum.length;


/* Current acceleration */

var alpha = T / pendulum.J;


/* Calculate current velocity from last frame's velocity and

average of last frame's acceleration with this frame's acceleration. */

pendulum.omega += 0.5 * (alpha + pendulum.alpha) * deltaT;


/* Update acceleration */

pendulum.alpha = alpha;


var px = width/2 + pendulum.length*Math.cos(pendulum.theta);

var py = 50 + pendulum.length*Math.sin(pendulum.theta);



// Start drawing

ctx.clearRect(0,0, width, height);

// Draw bar for Pendulum

ctx.strokeStyle = 'black';

ctx.beginPath();

ctx.moveTo(width/2, 50);

ctx.lineTo(px, py);

ctx.stroke();

ctx.closePath();

ctx.fillStyle ='beige';

// Draw pendulum

ctx.beginPath();

ctx.arc(px, py, 30, 0, Math.PI*2, false);

ctx.fill();

ctx.closePath();


// Draw clock face

ctx.fillStyle = 'beige';

ctx.beginPath();

ctx.arc(width/2, 100, 80, 0, Math.PI*2, false);

ctx.fill();

ctx.closePath();


// Draw hour hand


var ang = (time.getHours() % 12) + (time.getMinutes()/60);

ang *= 30 * Math.PI/180;

ang -= Math.PI/2;

ctx.fillStyle = '#666';

ctx.beginPath();


ctx.moveTo(width/2, 100);

ctx.lineTo(

width/2 + 40*Math.cos(ang+0.06),

100 + 40*Math.sin(ang+0.06)

);

ctx.lineTo(

width/2 + 50*Math.cos(ang-0.06),

100 + 50*Math.sin(ang-0.06)

);

ctx.closePath();

ctx.fill();


// Draw minute hand

var ang = time.getMinutes() + (time.getSeconds()/60);

ang *= 6*Math.PI/180;

ang -= Math.PI/2;

ctx.fillStyle = '#999';

ctx.beginPath();


ctx.moveTo(width/2, 100);

ctx.lineTo(

width/2 + 60*Math.cos(ang+0.03),

100 + 60*Math.sin(ang+0.03)

);

ctx.lineTo(

width/2 + 70*Math.cos(ang-0.03),

100 + 70*Math.sin(ang-0.03)

);

ctx.closePath();

ctx.fill();


// Draw second hand

var ms = Math.round(time.getMilliseconds() / 250) / 4;

var ang = time.getSeconds() + ms;

ang *= 6*Math.PI/180;

ang -= Math.PI/2;

ctx.strokeStyle = '#CCC';

ctx.beginPath();

ctx.moveTo(width/2, 100);

ctx.lineTo(

width/2 + 70*Math.cos(ang),

100 + 70*Math.sin(ang)

);

ctx.stroke();

ctx.closePath();


lastTime = new Date();

requestAnimFrame(loop);


}


setup();


</sript>

</body>


</html>

2014. okt. 4. 17:21
 6/9 A kérdező kommentje:
jaj megvan hülye vok végén elírtam valamit....
2014. okt. 4. 17:23
 7/9 A kérdező kommentje:
esetleg hogy tudok olyat csinálni hogy másodpercenként legyen hangja és óránkit is legyen egy hangja?
2014. okt. 4. 17:24
 8/9 A kérdező kommentje:
és még azt szeretném tudni mit töröljek k és irjak be hogy a pontos időt mutassa.
2014. okt. 4. 17:36
 9/9 anonim ***** válasza:

"esetleg hogy tudok olyat csinálni hogy másodpercenként legyen hangja és óránkit is legyen egy hangja?"

Ugyancsak Google:

[link]


hogy időnként legyen: setInterval()

[link]

2014. okt. 4. 17:38
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!