给出三点,从头开始绘制三角形

时间:2014-09-14 16:31:30

标签: java geometry draw shape

我正在学习如何使用我的图形课程中的点绘制基本形状,而我无法弄清楚如何绘制三角形。我认为它类似于绘制一个矩形,但需要考虑很多变量(例如斜率和不同类型的三角形)。

下面是我绘制矩形的工作函数

drawRectangle(point 1, point 2){
    xStart = min(point 1.x, point 2.x)
    yStar = min(point 1.y, point 2.y)

    xEnd = max(point 1.x, point 2.x)
    yEnd = max(point 1.y, point 2.y)

    for(int i = yStart, i<= yEnd, i++){
        for(int j = xStart, j<= yEnd, j++){
            drawPoint(i, j);
        }
    }
}

drawRectangle 非常简单,因为我只需要将起点循环到顶点的终点。但是,三角形有三点,我该怎么办?我想过可能会将一个三角形分成两半,所以每一半都会有一个平坦的基础&#34;但是我不确定这是否是一种可行的方法。

编辑:也许我不清楚,当我说画一个三角形时,我的意思是一个颜色填充的三角形

1 个答案:

答案 0 :(得分:0)

您应该使用Graphics界面。你只需要用线连接你的三个点,如:

void drawTriangle(Point one, Point two, Point three, Graphics g){
    g.drawLine(one.x, one.y, two.x, two.y);
    g.drawLine(one.x, one.y, three.x, three.y);
    g.drawLine(two.x, two.y, three.x, three.y);
}

这将绘制一个三角形,给出三个点和Graphics对象的实例。这比使用for循环容易得多。

修改

以下是如何“从头开始”,逐个像素地使用您班级中的方法(我假设drawPoint绘制1个像素),使用相同的“连接点”想法,但是for循环:

drawTriangle(point 1, point 2, point 3) {
    for(int x = 1.x, x <= 2.x, x++){
        for(int y = 1.y, y <= 2.y, y++){
            drawPoint(x, y);
        }
    }
    for(int x = 1.x, x <= 3.x, x++){
        for(int y = 1.y, y <= 3.y, y++){
            drawPoint(x, y);
        }
    }
    for(int x = 2.x, x <= 3.x, x++){
        for(int y = 2.y, y <= 3.y, y++){
            drawPoint(x, y);
        }
    }
}

这将所有3个点相互连接。