webForumDet fria alternativet

Räkna ut vinklar och flytta objekt

Programmering

3 svar · 442 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Frågan#1

Om jag vet en bolls vinkel när den koliderar med en sida på en fyrkant. Hur räknar jag då ut den nya vinkeln om jag vill att den ska studsa iväg?

Jag tror jag vet hur jag ska göra det, men jag har större påroblem med hur jag ska flytta bollen i den vinkeln.
Hur gör jag det?

Medlem sedan maj 20002 993 inlägg
#2

Lyckades flytta bollen i den vinkeln jag ville med DelphiX's funktioner sin256 och cos256. Men hur ändrar jag vinklarna när de koliderar?

Medlem sedan aug. 2001723 inlägg
#3

Har du en ruta som följer skärmen och som bollen studsar runt i?

I så fall föreslår jag att du inför en riktningsvaraiabel höger/vänster och en upp/ner. Vinkeln kan nu variera mellan 0 och 90 grader. En horisontell linje kan vara 0 grader. Bollens riktning kan nu beskrivas som "70 grader höger uppåt" eller "45 grader vänster neråt".

Krockar du i en av sidoväggarna byts höger/vänsterriktningen och krockar du i topp- eller bottenväggen byts upp mot ner och tvärtom. Vinkeln ändras aldrig.

Bra, då slapp du det problemet att ändra på vinkeln! Nädå... du måste göra en funktion för att omvandla din {H/V, U/N, VINKEL} som du har till en fullständig vinkel. Den kan se ut så här med pseudokod:

if sidled = höger then
  if höjdled = upp then resultat := vinkel
  else resultat := 360 - vinkel
  end if
else
  if höjdled = upp then resultat := 180 - vinkel
  else resultat := 270 - vinkel
  end if
end if
Medlem sedan juli 2002581 inlägg
#4

Är det inte bättre att lagra hastigheten som en vektor?

397 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
137 ms — deklarationer (db)
127 ms — hämta statistik (db)
130 ms — hämta tråd, inlägg och bilagor (db)