Hogyan lehetne ezt megvalósítani Javascriptben?
Már sokszor próbálkoztam de nem jött össze.
Canvasban szeretnék egy olyat hogy középen van egy kör és a kör mentén (oldalán) "keringene" egy kisebb kör
Ha lehet akkor kódot kérek
#1: Nem azt kérdezte, hogy kell-e hozzá canvas vagy JS... nyilván meg lehet oldanu egy problémát több féle képpen, css animáció vagy akár berakhat animált gifet is:D
A kérdés adott..
Kérdező: hol akadtál el? Nem tudsz canvasra kört rajzolni?
Vagy nem tudod a keringő kör középontját kiszámolni? Alap matekkal (szinus, koszinusz) megoldható.
Kör rajzolás: [link]
Ezt szeretném elérni Javascriptben!
A nagy körig minden megy csak a keringési útvonalnál akadtam el
#5: a kép alapján nekem úgy tűnik, hogy a nagy körön mozog a kis kör középpontja, azaz nem csak érinti. Tehát nem r+R sugarú körön mozog, csak R sugarún, feltéve ha a nagy kör sugara R.... vagy csak hiányzik a nagy kör az ábráról, nem az akar lenni a zöld kör.
Kérdező: A kis kör x koordinátája t időpontban:
x = cos(omega*t)
y koordinátája:
y = sin(omega*t)
omega a szogsebesség, ami nálad gondolom konstans, tehát csak próbálj beírbi számokat és majd meglátod melyik a megfelelő sebesség neked.
Sikerült megoldanom! Köszönöm mindenkinek!
A kód:
ctx.beginPath();
ctx.moveTo(0, H/2);
ctx.lineTo(W, H/2);
ctx.moveTo(W/2, 0);
ctx.lineTo(W/2, H);
ctx.strokeStyle = "red";
ctx.stroke();
ctx.closePath();
ctx.beginPath();
ctx.arc(W/2, H/2, r, 0, 2 * Math.PI);
ctx.fillStyle = "rgba(0, 255, 0, 0.5)";
ctx.fill();
ctx.stroke();
ctx.closePath();
ctx.beginPath();
var omega = 10;
var t = 1;
x = W/2 + Math.cos(omega * t + i) * r;
y = H/2 + Math.sin(omega * t + i) * r;
i += t / 100;
var radius = r/10;
ctx.arc(x, y, radius, 0, 2 * Math.PI);
ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
ctx.fill();
ctx.stroke();
Kapcsolódó 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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!