在c++中操作对角线

Manipulating a diagonal line in C++

本文关键字:对角线 操作 c++      更新时间:2023-10-16

我正在使用嵌套的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);
        }
    }
}

截图!

你实际上是在画一个由四条线定义的多边形。直线的方程是y=mx+b,你可以选择在直线的上方或下方。虽然这不是我要做的,但它符合你的方法的精神,即测试y-mx+b<0(或>0)对于四对不同的m和b。这会给你一个线段,你可以得到类似的其余部分。

现在,您只选择了两条线之间的区域。这就是为什么你会得到那个图像