Как рисовать круг?

Pixilang по русски
Post Reply
owler
Posts: 2
Joined: Tue Mar 10, 2020 10:05 pm

Как рисовать круг?

Post by owler » Tue Mar 10, 2020 10:10 pm

В википедии прописан только прямоугольник, а хочется круг? :D
Last edited by owler on Tue Mar 10, 2020 10:42 pm, edited 1 time in total.

owler
Posts: 2
Joined: Tue Mar 10, 2020 10:05 pm

Re: Как рисовать геометрические фигуры?

Post by owler » Tue Mar 10, 2020 10:41 pm

Круг

Code: Select all

fn circle( $x, $y, $radius, $color )
{
    $steps = 128
    $i = 0 while $i <= $steps
    {
        $r = M_PI * 2 * ( $i / $steps )
        $xx = $x + cos( $r ) * $radius
        $yy = $y + sin( $r ) * $radius
        if $i > 0
        {
            line( $prev_x, $prev_y, $xx, $yy, $color )
        }
        $prev_x = $xx
        $prev_y = $yy
        $i + 1
    }
}
Инструкция
1 вставить код
2 после кода круг вызывается

Code: Select all

 circle(x,y,radius,color)
P.S. Круг получится немного кривой.

User avatar
iHs
Posts: 31
Joined: Sat Jan 13, 2018 11:02 pm

Post by iHs » Tue May 19, 2020 6:57 pm

Ваш код рисует окружность (а что вы имели в виду - круг или окружность?). Если кому-то нужно нарисовать круг, могу предложить свою функцию:

Code: Select all

fn fcircle($x, $y, $radius, $colour) // Рисует заполненный круг
{
	$x = floor($x) // входные аргументы должны быть целочисленными;
	$y = floor($y) // если вы уверены, что они не могут случайно оказаться типа float,
	$radius = floor($radius) // то можно убрать эти строки.
    fbox($x - $radius, $y, $radius * 2 + 1, 1, $colour)
	$r2 = $radius + 0.5
	$r2 * $r2
	$i = 1
	while $i <= $radius
	{
		$w = floor(sqrt($r2 - $i * $i))
		fbox($x - $w, $y - $i, $w * 2 + 1, 1, $colour)
		fbox($x - $w, $y + $i, $w * 2 + 1, 1, $colour)
		$i + 1
	}
}

Post Reply