在 C++ 中操作对角线

Manipulating a diagonal line in C++

我正在尝试使用嵌套的 for 循环来绘制像素并基本上绘制标志。到目前为止,我已经弄清楚了如何制作圆圈、对角线和十字。

然而,我无法全神贯注于如何限制绘制直线的位置。

基本上,我想弄清楚我需要如何更改我用来在英国国旗中绘制对角线的代码,以在纳粹德国国旗中制作万字符。任何帮助将不胜感激!

这是我当前的代码和我得到的截图:

for (int x = 0; x < 240; x++)
{
    for (int y = 0; y < 160; y++)
    {
        uint16_t cX = 120;
        uint16_t cY = 80;
        uint16_t r = 66;

        // Makes line
        if (x-100 < y * 240 / 240 + 20 && x-100 > y * 240 / 240 - 20)
        {
            PlotPixel16(x, y, black);
        }
// Makes circle
        else if (((x-cX)*(x-cX))+((y-cY)*(y-cY)) < r*r)
        {
            PlotPixel16(x, y, white);
        }
        else
        {
            PlotPixel16(x, y, red);
        }
    }
}

Screenshot!

您实际上是在绘制一个由四条线定义的多边形。一条线的方程是 y=mx+b,你想在这条线的上方或下方。虽然这不是我的做法,但它符合您的方法的精神,即针对四对不同的 m 和 b 测试 y-mx+b<0(或 >0)。这样就得到了一条线段,其余的也可以类似得到。

现在,您只选择了两条线之间的区域。这就是您获得该图片的原因。