Souřadnice a úsečka – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Souřadnice a úsečka – C / C++ – Fórum – Programujte.comSouřadnice a úsečka – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
BDS+2
Věrný člen
1. 12. 2013   #1
-
0
-

Ahoj, nevím jak to správně nazvat (v geometrii se moc nevyznám), tak se pokusím to vysvětlit.

Mám pole  UINT8 Map[256][256];

Strukturu: struct POINT8UINT8 x; UINT8 y; };

Vektor: std::vector<POINT8>Items;

Potřeboval bych funkci, která mi do vektoru vypíše seznam bodů, kterými by procházela teoretická úsečka něco jako:

PrintItems(POINT8 From, POINT8 To)

(úsečka sice začíná na pozici From a končí na pozici To, ale je mi jedno v jakém pořadí ty body funkce vypíše)

Nahlásit jako SPAM
IP: 85.71.83.–
Visual Studio C/C#/C++
(pouze samouk)
Reklama
Reklama
Řešení
BDS+2
Věrný člen
1. 12. 2013   #2
-
0
-
Vyřešeno Nejlepší odpověď

našel jsem funkční řešení problému (je to pouze testovací zdroják): 

void line(int x0, int y0, int x1, int y1) {

  int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
  int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
  int err = (dx>dy ? dx : -dy)/2, e2;

  while(1)
  {
	POINT8 p;
	p.x = x0;
	p.y = y0;
	MapItems.push_back(p);

	if (x0==x1 && y0==y1) break;
	e2 = err;
	if (e2 > dx*-1) { err -= dy; x0 += sx; }
	if (e2 < dy) { err += dx; y0 += sy; }
  }
}

je to Bresenhamův algoritmus

Nahlásit jako SPAM
IP: 85.71.83.–
Visual Studio C/C#/C++
(pouze samouk)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 103 hostů

Podobná vlákna

C# úsečka jako objetk — založil Ivan F.

Souřadnice — založil Rider

Kurzor na souřadnice — založil Thadeus

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý