Moze mi ktoś wyjaśnić jak ten kod rysuje okrąg bo nie mogę normalnie tego objąć umysłem

"
Sub Lcd_circle(byval X As Word , Byval Y As Word , Byval Radius As Integer , Byval Color As Word)
Local X0 As Word , Y0 As Word , Error As Integer
Local Xp As Word , Yp As Word , Xe As Word , Ye As Word

Error = -radius
Xp = Radius
Yp = 0

While Xp >= Yp
 X0 = X + Xp : Y0 = Y + Yp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X - Xp : Y0 = Y + Yp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X + Xp : Y0 = Y - Yp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X - Xp : Y0 = Y - Yp
 Call Lcd_set_pixel(x0 , Y0 , Color)

X0 = X + Yp : Y0 = Y + Xp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X - Yp : Y0 = Y + Xp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X + Yp : Y0 = Y - Xp
 Call Lcd_set_pixel(x0 , Y0 , Color)
 X0 = X - Yp : Y0 = Y - Xp
 Call Lcd_set_pixel(x0 , Y0 , Color)
  Error = Error + Yp
   Incr Yp
   Error = Error + Yp

If Error >= 0 Then
     Decr Xp
     Error = Error - Xp
     Error = Error - Xp
   End If
Wend
End Sub"

#matematyka #programowanie
0ae1cd8f-017c-4f5d-b0c5-fa5b0cc3dc27
Fox

@MostlyRenegade ALE JAK WYLICZA OKRĄG

tu nie ma nawet żadnego wyliczenia z radianów kątów pi ani ni czego xD

MostlyRenegade

@Fox ale po co to? Zobacz, że tam wszystkie współrzędne są wartościami całkowitymi, więc chodzi zapewne o wyświetlenie pikselowatego okręgu na jakimś wyświetlaczu o małej rozdzielczości.

MostlyRenegade

@Fox btw: z jakiegoś powodu youtube zasugerował mi poniższy film. Tam algorytm jest nieco inny, ale również opiera się na rysowaniu pikseli na wycinku okręgu (1/8), z którego potem odbijana jest reszta.

https://www.youtube.com/watch?v=hpiILbMkF9w

hejtom

@Fox to algorytm Bresenhama do rysowania okręgu

Zaloguj się aby komentować