Fox
Osobistość
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
"
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
@Fox piksel po pikselu
@MostlyRenegade ALE JAK WYLICZA OKRĄG
tu nie ma nawet żadnego wyliczenia z radianów kątów pi ani ni czego xD
@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.
@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.
@Fox to algorytm Bresenhama do rysowania okręgu
Zaloguj się aby komentować