Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

temata:11-rasterizace:main [2016/05/26 13:25]
xpavel27 [Vykreslení kružnice jako N-úhelník]
temata:11-rasterizace:main [2016/05/27 11:41] (aktuální)
xpavel27 [Bresenhamův algoritmus]
Řádek 84: Řádek 84:
 Používá celočíselnou aritmetiku, sčítání, porovnání\\ Používá celočíselnou aritmetiku, sčítání, porovnání\\
 Posun v ose Y podle znaménka **prediktoru**\\ \\ Posun v ose Y podle znaménka **prediktoru**\\ \\
-  * Pokud <m>E_i + k \ge 0.5</m>, potom <m>E_{i + 1} = E_i + k</m>\\ +  * Pokud <m>E_i + k \ge 0.5</m>, potom <m>E_{i + 1} = E_i + k - 1</m>\\ 
-  * Pokud <m>E_i + k < 0.5</m> potom <m>E_{i + 1} = E_i + k - 1</m>\\+  * Pokud <m>E_i + k < 0.5</m> potom <m>E_{i + 1} = E_i + k</m>\\
  
 Takze po vynásobení rovnic <m>2\Delta x</m>: Takze po vynásobení rovnic <m>2\Delta x</m>:
Řádek 174: Řádek 174:
  
 <box left round blue 90%|**Popis**> <box left round blue 90%|**Popis**>
-  * variace na Bresenhamův =>celočíselná aritmetikavysoká efektivitasnadná implementace+  * variace na Bresenhamův 
 +  * celočíselná aritmetika 
 +  * vysoká efektivita 
 +  * snadná implementace
   * po pixelu od [0,R] dokud <m>x = y</m>   * po pixelu od [0,R] dokud <m>x = y</m>
 +  * startovací hodnota je <m>p_i = 1 − R</m>
  
 |<m>p_i = (x_i + 1)^2 + (y_i − 1/2)^2 − R^2</m>| |<m>p_i = (x_i + 1)^2 + (y_i − 1/2)^2 − R^2</m>|
- 
 |<m>p_i < 0 \doubleright y_{i + 1} = y_i, p_{i+1} = p_i + 2x_i + 3</m>| |<m>p_i < 0 \doubleright y_{i + 1} = y_i, p_{i+1} = p_i + 2x_i + 3</m>|
- 
 |<m>p_i \ge 0 \doubleright y_{i + 1} = y_i - 1, p_i + 1 = p_i + 2x_i − 2y_i + 5</m>| |<m>p_i \ge 0 \doubleright y_{i + 1} = y_i - 1, p_i + 1 = p_i + 2x_i − 2y_i + 5</m>|
  
-  * startovací hodnota je <m>p_i = 1 − R</m> +{{ temata:11-rasterizace:basenkruh.png?500 }} 
-<code> +
-CircleMid(int s1, int s2, int R) +
-int x = 0, y = R; +
-  int P = 1-R, X2 = 3, Y2 = 2*R-2; +
-  while (x < y) +
-  { +
-    draw_pixel_circle(x, y); +
-    if (P >= 0) +
-    { P += -Y2; Y2 -= 2; y--; } +
-    P += X2; +
-    X2 += 2; +
-    x++; +
-  } +
-+
-</code>+
 </box> </box>
- 
 ===== Elipsa ===== ===== Elipsa =====
  
Řádek 209: Řádek 196:
   * úhlem natočení hlavní poloosy   * úhlem natočení hlavní poloosy
   * rovnicí elipsy popisující geometrii: <m>F(x, y) : b^2x^2 + a^2y^2 − a^2b^2 = 0</m>   * rovnicí elipsy popisující geometrii: <m>F(x, y) : b^2x^2 + a^2y^2 − a^2b^2 = 0</m>
-Je 4x symetrická.+  * je 4x symetrická. 
 +  * výpočet pre štvrtinu bodov
 </box> </box>
  
Řádek 220: Řádek 208:
   * založen na určování polohy midpointu vůči elipse   * založen na určování polohy midpointu vůči elipse
   * V ose X/Y postupujeme o 1, v Y/X o posunu rozhoduje znaménko prediktoru.   * V ose X/Y postupujeme o 1, v Y/X o posunu rozhoduje znaménko prediktoru.
-</box> 
  
 +{{ temata:11-rasterizace:midelipsa.png?500 }}
 +</box>
 ===== Křivky ===== ===== Křivky =====
 <box left round blue 90%|**Popis**> <box left round blue 90%|**Popis**>
temata/11-rasterizace/main.1464261928.txt.gz · Poslední úprava: 2016/05/26 13:25 autor: xpavel27
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki