Drawing filled circle using trigonometry [duplicat

2019-09-02 03:30发布

This question already has an answer here:

Is there any function I can create in order to draw a filled circle using the base drawing functions:

  • putpixel(x, y);
  • lineto(x, y);

?


Note that it must use trigonometric functions (videlicet sin, cos etc..) so I can easily turn it into a hexagon and even further - a square or another type of polygon. enter image description here


And finally, not necessarily but always appreciated if it isn't very slow in drawing (one loop should be enough I presume) and even more not necessarily, but always even more appreciated if it isn't too complex and/or consisting of more lines than needed for a lightweight life.

1条回答
孤傲高冷的网名
2楼-- · 2019-09-02 03:49

The fastest way to draw a filled circle with lineto is as follows

for each value of y that lies within the circle
{
    compute the corresponding x values
    draw a line between (x1,y) and (x2,y)
}

enter image description here

To convert the circle to a polygon you can compute the vertices of the polygon based on the radius of the circles and angle to each vertex. For example, with a hexagon the angles are 0, 60, 120, 180, 240, and 300 degrees. With a square the angles are 45, 135, 225, and 315. Once you have the polygon vertices, you can compute the x1 and x2 values for each y value based on the equations of the lines between the vertices.

enter image description here

查看更多
登录 后发表回答