如何创建点、显示它们并将它们存储在某种数组中
How can I create points, display them and store them in some sort of Array
我想创建点,然后将它们存储在一个数组中。我这样做是为了之后对我的数据点进行线性回归。所以我需要能够循环遍历我的所有观点。
我在网上找不到类似的东西来处理,因为我真的做不到,所以我需要你的帮助。这是我的方法,但它似乎不起作用:
ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();
void setup(){
size(1000, 1000);
background(255);
}
void draw(){
for (int i = 1; i == dataPoints.size(); i++) {
// An ArrayList doesn't know what it is storing so we have to cast the object coming out
dataPoint Point = dataPoints.get(i);
Point.display();
}
}
void mousePressed() {
dataPoints.add(new dataPoint(mouseX, mouseY));
}
class dataPoint {
float x;
float y;
dataPoint(int tempX, int tempY) {
x = tempX;
y = tempY;
}
void display() {
strokeWeight(10);
stroke(255,0,0);
point(x,y);
}
}
我想要一个程序来创建点并将它们存储在数组中(或类似的东西,你可以循环)。
你的大部分代码都是有道理的,我只能发现两个陷阱,它们可能会阻止你循环遍历所有点并将它们可视化:
- 你的条件是会越界到数组索引:试试
for (int i = 0; i < dataPoints.size(); i++)
- 记得清除框架,否则你会一遍又一遍地在相同的点上画画
记住数组索引在 Processing/Java 中从 0 开始(同样,最后一个索引不会是数组的 size()
,而是少 1,因此 <
对于条件)
这是经过上述调整的代码:
ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();
void setup(){
size(1000, 1000);
}
void draw(){
background(255);
for (int i = 0; i < dataPoints.size(); i++) {
// An ArrayList doesn't know what it is storing so we have to cast the object coming out
dataPoint Point = dataPoints.get(i);
Point.display();
}
}
void mousePressed() {
dataPoints.add(new dataPoint(mouseX, mouseY));
}
class dataPoint {
float x;
float y;
dataPoint(int tempX, int tempY) {
x = tempX;
y = tempY;
}
void display() {
strokeWeight(10);
stroke(255,0,0);
point(x,y);
}
}
注意 Processing 有一个方便的 PVector class (它有 x,y 属性)所以你可以这样做:
ArrayList<PVector> dataPoints = new ArrayList<PVector>();
void setup(){
size(1000, 1000);
strokeWeight(10);
stroke(255,0,0);
noFill();
}
void draw(){
background(255);
beginShape();
for (int i = 0; i < dataPoints.size(); i++) {
PVector point = dataPoints.get(i);
vertex(point.x,point.y);
}
endShape();
}
void mousePressed() {
dataPoints.add(new PVector(mouseX, mouseY));
}
这有点细节,但我建议遵循 Java Naming Convention 以保持代码一致。 (例如:将 dataPoint
class 重命名为 DataPoint
并将 Point
实例重命名为 point
)
我想创建点,然后将它们存储在一个数组中。我这样做是为了之后对我的数据点进行线性回归。所以我需要能够循环遍历我的所有观点。
我在网上找不到类似的东西来处理,因为我真的做不到,所以我需要你的帮助。这是我的方法,但它似乎不起作用:
ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();
void setup(){
size(1000, 1000);
background(255);
}
void draw(){
for (int i = 1; i == dataPoints.size(); i++) {
// An ArrayList doesn't know what it is storing so we have to cast the object coming out
dataPoint Point = dataPoints.get(i);
Point.display();
}
}
void mousePressed() {
dataPoints.add(new dataPoint(mouseX, mouseY));
}
class dataPoint {
float x;
float y;
dataPoint(int tempX, int tempY) {
x = tempX;
y = tempY;
}
void display() {
strokeWeight(10);
stroke(255,0,0);
point(x,y);
}
}
我想要一个程序来创建点并将它们存储在数组中(或类似的东西,你可以循环)。
你的大部分代码都是有道理的,我只能发现两个陷阱,它们可能会阻止你循环遍历所有点并将它们可视化:
- 你的条件是会越界到数组索引:试试
for (int i = 0; i < dataPoints.size(); i++)
- 记得清除框架,否则你会一遍又一遍地在相同的点上画画
记住数组索引在 Processing/Java 中从 0 开始(同样,最后一个索引不会是数组的 size()
,而是少 1,因此 <
对于条件)
这是经过上述调整的代码:
ArrayList<dataPoint> dataPoints = new ArrayList<dataPoint>();
void setup(){
size(1000, 1000);
}
void draw(){
background(255);
for (int i = 0; i < dataPoints.size(); i++) {
// An ArrayList doesn't know what it is storing so we have to cast the object coming out
dataPoint Point = dataPoints.get(i);
Point.display();
}
}
void mousePressed() {
dataPoints.add(new dataPoint(mouseX, mouseY));
}
class dataPoint {
float x;
float y;
dataPoint(int tempX, int tempY) {
x = tempX;
y = tempY;
}
void display() {
strokeWeight(10);
stroke(255,0,0);
point(x,y);
}
}
注意 Processing 有一个方便的 PVector class (它有 x,y 属性)所以你可以这样做:
ArrayList<PVector> dataPoints = new ArrayList<PVector>();
void setup(){
size(1000, 1000);
strokeWeight(10);
stroke(255,0,0);
noFill();
}
void draw(){
background(255);
beginShape();
for (int i = 0; i < dataPoints.size(); i++) {
PVector point = dataPoints.get(i);
vertex(point.x,point.y);
}
endShape();
}
void mousePressed() {
dataPoints.add(new PVector(mouseX, mouseY));
}
这有点细节,但我建议遵循 Java Naming Convention 以保持代码一致。 (例如:将 dataPoint
class 重命名为 DataPoint
并将 Point
实例重命名为 point
)