[fizyka] ruch po okręgu

Odpowiedz Nowy wątek
2006-09-08 20:38

Rejestracja: 14 lat temu

Ostatnio: 13 lat temu

0

Jaki jest wzór na pozycję ciała w ruchu po okręgu? Ale taki żeby były współrzędne i było to "kreślenie kółka", bo jak korzystam z x=cos(th)r+x0 y=sin(th)r+y0 to niby działa ale to robi tak odcinkami zamiast jednym ciągiem...


>>HI! I'm a .sygnature ViRuS... Copy me into your *.sygnature to help me spread.

Pozostało 580 znaków

2006-09-08 20:48

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Powinno dzialac - co znaczy 'rysuje odcinkami'?

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-08 20:56

Rejestracja: 17 lat temu

Ostatnio: 8 lat temu

0

1.przyrost kąta jest za duży
2.któraś zmienna jest całkowita zamiast zmiennoprzecinkowej


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2006-09-08 21:39

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Aha, jeszcze moze byc, ze sin i cos przyjmuja argumenty w radianach, a ty podajesz np. w stopniach, to czesty blad.

pozdrawiam
johny


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-09-08 22:42

Rejestracja: 16 lat temu

Ostatnio: 6 lat temu

0

albo rysujesz pixele zamiast linie o początku w punkcie n-1 a końcu w punkcie n :) Rysując linie niee musisz mieć tak małego kroku (przyrostu kąta) jak przy pixelach.


Pozostało 580 znaków

2006-09-08 22:49

Rejestracja: 14 lat temu

Ostatnio: 10 lat temu

0

dokladniejsze jest radiussin(kątpi/180); podajesz kat w stopniach
ale ogolnie z kola kwadratu nie zrobisz

Pozostało 580 znaków

2006-09-09 12:27

Rejestracja: 14 lat temu

Ostatnio: 13 lat temu

0

tzn. ja zrobiłem tak że mam środek koła w x0 i y0 a Theta (kąt) jest 0 i liczę z tamtych współrzędne i tak w "kółko" pętlą 360 razy zwiększając Thetę

to jest w timerze:

// ...
  Canvas.Pixels[oX, oY]:=clRed;
  Theta:=sbTimeSpan.Position;
  posX1:=Cos(Theta)*R1+oX;
  posY1:=Sin(Theta)*R1+oY;
  Canvas.Pixels[Round(posX1), Round(posY1)]:=clBlack;
  (*Canvas.LineTo(Round(posX1), Round(posY1));
  Canvas.MoveTo(Round(posX1), Round(posY1));*)
  lblTimeSpan.Caption:=FloatToStr(Theta);
//...

sbTimeSpan to ScrollBar z max = 360
potem inkrementuję sbTimeSpan.Position

i to rysuje takie kropkowane kółko, potem po całym obiegu robi kropkę obok każdej kropki itd aż się połączą zamiast w jednym ciągu... bo chciałbym w ten sposób poruszać np. TShape'em albo TImage'em a to bezczelnie skacze


>>HI! I'm a .sygnature ViRuS... Copy me into your *.sygnature to help me spread.

Pozostało 580 znaków

2006-09-09 12:42

Rejestracja: 17 lat temu

Ostatnio: 8 lat temu

0
FALCO napisał(a)

i to rysuje takie kropkowane kółko, potem po całym obiegu robi kropkę obok każdej kropki itd aż się połączą zamiast w jednym ciągu...

czyli podajesz stopnie zamiast radianów. u Ciebie funkcja sin/cos dostaje liczby o różnicy 1 zamiast 0,01745(3), czyli masz ~57 kółek zamiast 1.
DegToRad


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2006-09-09 13:27

Rejestracja: 14 lat temu

Ostatnio: 13 lat temu

0

dzięki


>>HI! I'm a .sygnature ViRuS... Copy me into your *.sygnature to help me spread.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0