【问题标题】:Draw a triangle from scratch given three points给定三个点从头开始画一个三角形
【发布时间】:2014-09-14 16:31:30
【问题描述】:

我正在学习如何在我的图形课程中使用点绘制基本形状,但我不知道如何绘制三角形。我认为它类似于绘制矩形,但是需要考虑很多变量(例如斜率和不同种类的三角形)。

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

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 非常简单,因为我只需从起点循环到顶点的终点。但是,一个三角形有三个点,我该怎么办?我想过也许将一个三角形分成两半,所以每一半都有一个平坦的“底”,但我不确定这是否可行。

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

【问题讨论】:

  • 三角形有3个顶点吗?
  • 这3个顶点只是平面上的随机三个点!
  • 那么可以计算三角形 3 边的斜率吗?
  • 当然。我确实有一个 drawLine 函数,它允许我通过平面上给定的两个点绘制线条,不确定这是否有帮助
  • 那么为什么不直接建立方程并通过方程来得到两个顶点之间的每个点呢?

标签: java geometry draw shape


【解决方案1】:

您应该为此使用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 个像素),使用相同的“连接点”的想法,但使用 @987654326 @循环:

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 个点相互连接。

【讨论】:

  • 我怀疑这是他想要的:-)
  • 这可能行得通,但我更倾向于从头开始!
  • “从头开始”是指不使用任何预制的 Java 接口吗?
  • 是的!类似于我通过循环并逐点绘制来实现drawRectangle函数的方式
  • 这不是简单地做三个矩形吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多