| | |
| Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Autor | Správa |
---|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 29.12.2010 10:58 | |
|
Potreboval by som s takou vecou pomomoct a to je prave vykreslovanie drahy robota v DELPHI na nejaku graficku plochu. Ide o to, ze napr. pojde rovno, tak aj ciara bude smerovat kolmo po grafickej ploche, lenze otoci sa dany objekt pod urcitym uhlom (napr 45 st) tak uz aj ta vykreslovana ciara musi ist pod tym 45st vpred a prave toto ako by sa dalo naprogramovat v DELPHI? Este na upresnenie dodam, ta ciara sa vlastne bude vykreslovat po usekoch a to bud po 1 pixeli alebo po usekoch kratkych ciar.
Tento princip je vlastne obdobny ako u 2D hier s autami, ked je pohlad zhora a auto sa pohybuje po ploche.
napr. takto by vyzeral vystup
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 29.12.2010 18:05 | |
|
kreslit mozes na componenty ktore obsahuju canvas , funkciami moveto lineto
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 29.12.2010 22:03 | |
|
no to viem
Ale mne ide o to, ze ked sa ten robot otoci o dani uhol, tak aj nech tu ciaru stale vykresluje o ten uhol. A toto je dost velky problem aspon pre mna naprogramovat. Pretoze ked ten robot pojde rovno alebo sa otoci o uhol 90, 180, 270 st. tak sa vlastne bude menit len jedna suradnica (x alebo y), ale ked sa otoci o 18st. tak uz sa budu naraz menit obe suradnice (sucastne x a y). Toto je ta vec, ktoru neviem ako mam naprogramovat, urcite na to treba znalosti z matematiky - vektory a podobne, lenze tam este v skole nie sme
|
|
Registrovaný: 11.01.09 Prihlásený: 24.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 30.12.2010 19:54 | |
|
Môžeš sa zatiaľ oprieť o toto ( na form si daj jeden TEdit a jeden TButton a do uses pridaj unit Math ):
Kód: var OldPosition: TPoint;
const VECTORLENGTH = 50; rad = pi/180;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
Canvas.MoveTo( 300, 200 ); OldPosition.X := 300; OldPosition.Y := 200;
end;
procedure TForm1.Button1Click(Sender: TObject); var x, y, angle: integer;
begin
angle := StrToInt( Edit1.Text );
x := round( OldPosition.X + sin( angle * rad ) * VECTORLENGTH ); y := round( OldPosition.Y + cos( angle * rad ) * VECTORLENGTH );
Canvas.LineTo( x, y ); OldPosition.X := x; OldPosition.Y := y;
end;
Do editu píš uhol, v akom sa pohybuje robot. Konštanta VECTORLENGTH je dĺžka, o koľko sa robot pohne po plátne.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 31.12.2010 11:36 | |
|
Velka vdaka Fico , presne toto som myslel
Program si uz upravim aby mi vyhovaval na mieru a doprogramujem komunikaciu a potom Vam ukazem vysledok.
Len tak aby ste vedeli o co sa jedna, robot pojde po zemi a bude sa danym zariadenim ovladat, bud cez PC (klavesnica, joystick,..) alebo cez mobil, popripadne cez dialkovy ovladac. Kazdu sekundu (alebo aj castejsie) sa bude vysielat stav s rotacnich inkrementacnich enkoderoch (IRC) o pohybe kazdeho kolesa, nasledne sa tieto data v PC spracuvaju a pekne sa vykresli draha. Pri zatoceni sa len vyrata uhol a zas bude vykreslovat drahu danym smerom. Presnost tohoto vykreslovania, nebude moc velka, pretoze nedisponujem el. kompasom, ale dostacujuca pre mna.
Myslim nieco na tento system: http://projects.adamh.cz/robot2 , az na to, ze ja tam nemam el. kompas.
este raz velke diky Fico
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 16.02.2011 10:52 | |
|
Esta raz by som sa chcel vratit k tejto teme, potreboval by som o nieco vylepsit vykreslovanie.
Pri zmene uhla otocenia by sa nenakreslila lomena ciara, ale by sa vykreslil vysek kruznice, polomer kruznice by bol nastaveny konstantne.
Ako priklad uvediem, bola by vykreslovana ciara stale rovno, pri zmene uhla o 90° by sa vykreslila 1/4 kruznice do prislusnej strany a za nou by sa standartne vykreslovala ciara.
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 16.02.2011 15:02 | |
|
myslis nieco taketo ?
Kód: procedure TForm1.Button1Click(Sender: TObject); var x, y, angle: integer; i,e : Integer; polomer : Integer; OldPosition: TPoint; begin OldPosition.X := 200; OldPosition.Y := 230; Canvas.MoveTo( OldPosition.X, OldPosition.Y ); OldPosition.X := 230; OldPosition.Y := 230; Canvas.LineTo( OldPosition.X, OldPosition.Y ); polomer := 40; for i:= 1 to 90 do begin
x := Round(sin(i*(pi/180))*polomer); y := Round(cos(i*(pi/180))*polomer);
Canvas.LineTo( OldPosition.X+x, OldPosition.y+y-polomer ); Sleep(10); Application.ProcessMessages; end; Canvas.LineTo( OldPosition.X+x, OldPosition.y+y-polomer-50 ); end;
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 16.02.2011 16:52 | |
|
Ano, nieco na tento system. diky.
Snad sa mi to podari este prerobit na moje uceli, ak nie ozvem sa
EDIT:
Este poradil by si mi, ako sa da najjednoduchsie zmenit smer zakrivenia kruznice (myslim tym nie zprava dolava, ale opacne zlava doprava)?
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 16.02.2011 18:54 | |
|
skusal si vymenit sin/cos ?
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 16.02.2011 19:34 | |
|
Ja som to trochu inak myslel, vykreslovat obraz v opacnom smere, ale v zrkadlovo otocenom.
Ten vlavo je povodny a ja to myslim vykreslit ako je na to na pravom obrazku:
EDIT:
OK, Uz som na to prisiel, treba zmenit iba znamienka:
Kód: x := Round(sin(i*(pi/180))*polomer); y := - Round(cos(i*(pi/180))*polomer);
Canvas.LineTo( OldPosition.X+x, OldPosition.y+y+polomer );
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
| Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Delphi - Dynamické vykreslovanie (runtime) komponentov v Delphi, Visual Basic | 3 | 546 | 15.10.2010 10:05 coldak | | delphi zapis cisla do editu v delphi v Delphi, Visual Basic | 3 | 1107 | 11.05.2008 12:02 p360t | | drahy apple v PC zostavy | 27 | 1515 | 01.02.2008 23:56 salamoon | | ISIC Ceske Drahy v Vzdelanie, štúdium, škola | 9 | 2477 | 22.06.2012 7:47 Vlad | | Je Mac Pro drahý? [ Choď na stránku: 1, 2, 3, 4 ] v Novinky | 106 | 2622 | 30.12.2013 18:16 Spartan.Ex | | vykreslovanie grafu v Delphi, Visual Basic | 6 | 865 | 27.08.2011 11:54 vama | | Zbytočne drahý monitor pre kamaráta v Monitory, televízory a projektory | 13 | 779 | 18.03.2017 23:29 marekk5111 | | Nový iPhone bude rekordne drahý [ Choď na stránku: 1 ... 23, 24, 25 ] v Novinky | 749 | 15799 | 07.04.2015 19:53 brmbo | | Vykreslovanie do Canvas v Assembler, C, C++, Pascal, Java | 4 | 287 | 13.04.2013 12:14 XOLOO | | gts250 1gb vykreslovanie v nVidia grafické karty | 4 | 356 | 01.01.2011 9:47 marko13 | | QtCreator - vykreslovanie pixelov v Assembler, C, C++, Pascal, Java | 9 | 580 | 27.02.2011 23:40 Fico | | Pomale vykreslovanie Photoshop v Grafické programy | 4 | 548 | 12.11.2009 12:29 El_locco | | nahodne vykreslovanie - pascal v Assembler, C, C++, Pascal, Java | 16 | 1659 | 03.06.2007 22:38 juho | | Osetrenie vyjdenie z drahy (turbo pascal) v Assembler, C, C++, Pascal, Java | 11 | 778 | 14.12.2008 11:54 Blackshadow | | C - vykreslovanie sikmych ciar v Assembler, C, C++, Pascal, Java | 8 | 634 | 29.05.2010 13:48 stopa27 | | SVG vykreslovanie v cecku v Assembler, C, C++, Pascal, Java | 12 | 763 | 19.06.2011 17:52 ice-g |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|