2016-07-12 10 views
0

Я попытался найти похожие проблемы, учебные пособия по рисованию дуг и кругов и не нашел ничего полезного для этого вопроса.cairo/pycairo drawing arcs issue: PI/2 не нарисовал то, что ожидалось

Я играю с каиром и pycairo, пытаясь нарисовать круг с квадрантами.

Я не уверен, что я заблудился в любой момент, но то, что я ожидаю сделать, не то, что я рисую вообще.

Моя цель - нарисовать круг с различными квадрантами с различным цветом заполнения в каждом квадранте.

Я построю поверхность и контекст, и я могу нарисовать полный круг (2 * PI), половину круга (PI), и когда я попытаюсь нарисовать только квадрант (PI/2 -> 90 градусов), результат что-то я не понимаю.

Первый пример, полный круг (360 град ака 2 * PI радиан):

ctx.rectangle(0, 0,1200,1200) # Rectangle(x0,y0,w,h) 
ctx.set_source_rgb(1,1,1) 
ctx.fill() 
ctx.arc(600,600,500,0,2*math.pi) 
ctx.set_source_rgb(1,0,0) 
ctx.fill() 
ctx.stroke() 

Результат является правильным, полный круг:

full circle as supposed to be with 2 * PI radians (360 degrees)

Второй пример, половина круга (180 градусов, PI радиан):

ctx.rectangle(0, 0,1200,1200) # Rectangle(x0,y0,w,h) 
ctx.set_source_rgb(1,1,1) 
ctx.fill() 
ctx.arc(600,600,500,0,math.pi) 
ctx.set_source_rgb(1,0,0) 
ctx.fill() 
ctx.stroke() 

Результат является правильным, полукруг:

(я удалил изображение, потому что не хватает репутации еще)

Третий пример, четверть/квадрант (90 градусов, PI/2):

ctx.rectangle(0, 0,1200,1200) # Rectangle(x0,y0,w,h) 
ctx.set_source_rgb(1,1,1) 
ctx.fill() 
ctx.arc(600,600,500,0,math.pi/2) 
ctx.set_source_rgb(1,0,0) 
ctx.fill() 
ctx.stroke() 

Не понимаю: -? Что здесь происходит?

The supposed to be quadrant, PI/2 90 degrees

Пожалуйста, кто-то может помочь мне с этим? Я потерялся.

ответ

1

Я нашел решение самостоятельно, но я не понимаю, почему поведение не совсем одинаково для каждой длины радиана.

Если вы выдаете процедуру move_to:

ctx.move_to(600,600) 

Теперь он делает отлично. Так что спасибо всем.

+0

Отличный совет, спасибо. Кстати, вы должны принять свой ответ. –

+0

Thx! Я забыл :) –