HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Koordinátapontokhoz kapcsolódó kalkulációk


Példaprogram letöltése

14560 bájt

A cikkben két, a koordinátapontokhoz kapcsolódó számítási műveletet mutatunk be. Az első példában egy képzeletbeli koordinátarendszer tengelyeit rajzoljuk fel az alkalmazás Form-jára, és megjelenítjük, hogy a kurzor éppen milyen relatív koordinátapontban tartózkodik, illetve a képzeletbeli tengelyek metszéspontjától az adott pont hány pixel távolságra található. A másik példában egy pontnak a képzeletbeli origótól mért távolságnak és az origóhoz viszonyított iránynak a megadásával kérdezhetjük le a relatív koordinátáit.

PCTip01 projekt
A példa dialógusablakát reprezentáló osztály OnPaint metódusában valósítottuk meg, hogy a bevezetőben említett koordinátatengely (két egymásra merőleges egyenes) megjelenjen a Form felületén. Ehhez a követezőket kellett végrehajtani.
A két egyenest két-két pont megadásával rajzoltuk ki. Az egyenesek a Form oldalfelező merőlegeseinek felelnek meg.
Az egyenesek metszéspontjában található a (0;0) koordinátájú origó.
Point p1 = new Point(0,ClientSize.Height/2);
Point p2 = new Point(ClientSize.Width,ClientSize.Height/2);
e.Graphics.DrawLine(new Pen(Color.Black),p1,p2);
p1 = new Point(ClientSize.Width/2,0);
p2 = new Point(ClientSize.Width/2,ClientSize.Height);
e.Graphics.DrawLine(new Pen(Color.Black),p1,p2);
A feladatban az egér aktuális pozíciójában lekérdezhető koordinátáját, valamint a koordináta és az origó távolságát számítjuk ki. A számítás a Form átméretezésekor is helyes lesz.
A Distance metódusban számítjuk ki a két pont távolságát, a pontokat egy-egy Point objektumként a metódus paraméterében adhatjuk meg. Első lépésben meghatározzuk a koordinátapontok X és Y alkotóinak a különbségét.
double dx;
double dy;
dx = p1.X - p2.X;
dy = p1.Y - p2.Y;
Majd kiszámítjuk a két érték négyzetösszegének a gyökét, a derékszögű háromszögekre vonatkozó átfogó-számítási tétel alapján.
A Form felületén történő egérmozgás eseményének kezelőmetódusában kérdezzük le a kurzor aktuális koordinátáját, valamint számítjuk ki a távolságot a fenti metódussal. Ezt utóbbi művelet kódja a következő:
Point origo = new Point(ClientSize.Width/2,ClientSize.Height/2);
Point p = new Point(e.X,e.Y);
double dist = Math.Round(Distance(origo,p));
A kurzor relatív koordinátáját a két pont összetevőinek különbsége adja.
double x = p.X - origo.X;
double y = p.Y - origo.Y;
label1.Text = "A kurzor koordinátái: (" + x.ToString() + ";" + y.ToString() + ")";
PCTip02 projekt
A második feladatban a Form egy képzeletbeli pontjától való távolságot, valamint egy tetszőleges irányt adunk meg fokban, majd lekérdezzük a pont relatív koordinátáit.
A műveletet a Calculate metódusban végezzük el, melynek paraméterként adjuk meg a két adatot. A művelet első lépése, hogy a fokban megadott irányt radiánná alakítjuk.
double rad = angle*(Math.PI/180);
Majd két kapcsolódó geometriai tétel felhasználásával kiszámítjuk a pont koordinátáit.
double x = dist * Math.Cos(rad);
double y = dist * Math.Sin(rad);
return new Point(Convert.ToInt32(Math.Round(x)),Convert.ToInt32(Math.Round(y)));
A művelet elvégzéséhez szükséges fok értékét egy NumericUpDown kontrol segítségével adhatjuk meg.

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 764. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |