如何使用点在java中绘制线?
我想知道如何使用Java中的不同点来画一条线。这是我到目前为止的代码。我不希望得到每个点的x和y,而只是让程序自己使用x,y的点。我对编程还是相当陌生,目前还不太擅长使用javadoc。以下是我现在掌握的代码:如何使用点在java中绘制线?,java,arraylist,Java,Arraylist,我想知道如何使用Java中的不同点来画一条线。这是我到目前为止的代码。我不希望得到每个点的x和y,而只是让程序自己使用x,y的点。我对编程还是相当陌生,目前还不太擅长使用javadoc。以下是我现在掌握的代码: //Create a Polygon class. A polygon is a closed shape with lines joining the corner points. //You will keep the points in an array list. Use
//Create a Polygon class. A polygon is a closed shape with lines joining the corner points.
//You will keep the points in an array list. Use object of java.awt.Point for the point.
//Polygon will have as an instance variable an ArrayList of Points to hold the points
//The constructor takes no parameters but initializes the instance variable. The
//Polygon class also has the following methods:
// add: adds a Point to the polygon
// perimeter: returns the perimeter of the polygon
// draw: draws the polygon by connecting consecutive points and then
// connecting the last point to the first.
//
//No methods headers or javadoc is provided this time. You get to try your hand at writing
//a class almost from scratch
// Need help starting this question? In the lesson titled
// "Starting points: Problem Set Questions", go to the
// problem titled "Problem Set 6 - Question 3" for some tips on
// how to begin.
import java.util.ArrayList; import java.awt.Point;
public class Polygon {
ArrayList<Point> points;
/**
** a Polygon represents a shape with flat lines and several points.
*/
public Polygon(){
/**
* Constructs empty array of points.
*/
points = new ArrayList<Point>();
} /** ** Adds points to the polygon points Array. *@param = points x and y coordinates to add to class */
public void addPoints(Point point){
points.add(point);
}
/**
**gets distance between points in ArrayList
*/
public double perimeter(){
double perimeter = 0;
int i = 0;
while(i<points.size()){
if(i<points.size()-1){
perimeter = perimeter + points.get(i).distance(points.get(i+1));
}
else{
perimeter = perimeter + points.get(i).distance(points.get(0));
}
}
return perimeter;
}
/** * Draws Polygon using points from points ArrayList */
public void drawPolygon(){
int i = 0;
while(i < points.size()-1){
Line2D line = Line2D.Float(points.get(i), points.get(i+1));
line.draw();
}
Line2D lastLine = Line2D.Float(points.get(0), points.get(points.size()-1));
lastLine.draw();
} }
//创建一个多边形类。多边形是一种闭合形状,其线连接角点。
//您将在数组列表中保留这些点。使用java.awt.Point的对象作为点。
//多边形将具有一个用于保存点的点的ArrayList作为实例变量
//构造函数不接受任何参数,但初始化实例变量。这个
//多边形类还具有以下方法:
//添加:向多边形添加点
//周长:返回多边形的周长
//绘制:通过连接连续点,然后绘制多边形
//将最后一个点连接到第一个点。
//
//这次没有提供方法头或javadoc。你得试着写作
//几乎从零开始上课
//开始这个问题需要帮助吗?在题为
//“起点:习题集问题”,转到
//题为“习题集6-问题3”的问题,了解有关
//如何开始。
导入java.util.ArrayList;导入java.awt.Point;
公共类多边形{
阵列列表点;
/**
**多边形表示具有平面线和多个点的形状。
*/
公共多边形(){
/**
*构造点的空数组。
*/
points=新的ArrayList();
}/****将点添加到多边形点阵列。*@param=要添加到类的点x和y坐标*/
公共无效添加点(点){
点。添加(点);
}
/**
**获取ArrayList中点之间的距离
*/
公共双周界(){
双周长=0;
int i=0;
虽然(i让我正确理解这一点,但您想实现draw()
方法吗
如果是这样,您需要做的是搜索基于两个给定点绘制直线的Bresenham算法。让我正确理解这一点,您想实现draw()
方法吗
如果是这样的话,你需要做的是搜索Bresenham的算法,它根据两个给定的点画一条线。我想你应该使用Graphics2D API来绘制你的图形。本教程可能会帮助你:所有这些都只用于一条线?没有比这更简单的了吗?我只学了一个月的java,但有了图形库我就可以了在我的课程中,你所需要做的就是为每个点插入x和y,然后调用.draw(),你很好,所以如果我的目标只是插入特定点,这似乎是违反直觉的(尽管我知道在现实生活中,我可能不会有课程的图形库,这就是为什么我尝试走这条路线的原因).实际上,现实世界的java程序不只是画一条线,而是首先用画布创建一个窗口并在那里画线。这有点开销,但第二条线只是一种方法调用方式。顺便说一句,Graphics2D有一种绘制多边形的方法:我想你应该使用Graphics2D API绘制图形。本教程可能会对你有所帮助u:所有这些都只针对一行?没有比这更简单的了吗?我只学了一个月的java,但在我的课程中,有了图形库,你所需要做的就是为每个点和调用插入x和y。draw(),你很乐意去做,所以如果我的目标只是插入特定点,这似乎是违反直觉的(虽然我知道在现实生活中,我可能不会有这门课程的图形库,这就是我为什么要走这条路的原因).实际上,现实世界的java程序不只是画一条线,而是首先用画布创建一个窗口并在那里画线。这有点开销,但第二条线只是一种方法调用方式。顺便说一句,Graphics2D有一种绘制多边形的方法:我按照你的建议查找了它。然而,出现的一切似乎都要复杂得多比应该的复杂(而且比我目前的编程水平复杂得多(仅一个月)。没有比这更简单的方法了吗?我找到了一个需要将近一个小时才能解释的视频系列和一个圣经大小的网站。这两个网站都充满了方程式之类的东西。从a点到b点划一条线不是更简单吗?@TalC,是(或者应该是!)。您只需将其中一个链接中给出的伪代码转换为plot()的参数
命令是线上的点,剩余的数学确保在这两个点之间迭代一条线。该算法必须处理所有方向的线,这就是它看起来复杂的原因。我按照你的建议查找了它。但是,出现的一切似乎都比它应该的复杂得多ld(比我现在的编程水平复杂得多(只有一个月)。没有更简单的方法了吗?我找到了一个视频系列,花了将近一个小时来解释它和一个圣经大小的网站。两者都充满了方程式和诸如此类的东西。从a点到b点划一条线不是更简单吗?@TalC,是的(或者应该是!)。您所需要做的就是转换其中一个链接中给出的伪代码,即plot()的参数
命令是直线上的点,剩余的数学确保在这两个点之间迭代一条直线。该算法必须处理所有方向的直线,这就是它看起来复杂的原因。