我正在学习如何使用我的图形课程中的点绘制基本形状,而我无法弄清楚如何绘制三角形。我认为它类似于绘制一个矩形,但需要考虑很多变量(例如斜率和不同类型的三角形)。
下面是我绘制矩形的工作函数
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;但是我不确定这是否是一种可行的方法。
编辑:也许我不清楚,当我说画一个三角形时,我的意思是一个颜色填充的三角形
答案 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个点相互连接。