在C ++中操纵对角线

时间:2015-10-09 01:28:16

标签: c++ math drawing lines diagonal

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

1 个答案:

答案 0 :(得分:0)

您实际上是在绘制由四条线定义的多边形。线的方程是y = mx + b,并且您希望在线的上方或下方。虽然我不知道如何做到这一点,但它仍然坚持你的方法的精神来测试m-b的四个不同对的y-mx + b <0(或&gt; 0)。这将为您提供一个线段,您可以类似地完成其余部分。

现在,您只在两行之间选择一个区域。这就是你获得该图像的原因。