Java 我正在处理的三角形网格算法没有按计划工作

Java 我正在处理的三角形网格算法没有按计划工作,java,mesh,Java,Mesh,我试图建立一个随机生成的三角形网格处理。我还没有完成任何CS或数学学位,所以请温柔地用你的白话或详细阐述一下你的意思。三角形网格应该由随机的PVector点组成,这些点将线段引至最近的两个点,同时闭合三角形。相反,我得到了类似的结果: 代码如下: Triangles.pde: import java.util.*; int popSize = 10; ArrayList<Triangle> triangles = new ArrayList(); PVector points[]

我试图建立一个随机生成的三角形网格处理。我还没有完成任何CS或数学学位,所以请温柔地用你的白话或详细阐述一下你的意思。三角形网格应该由随机的PVector点组成,这些点将线段引至最近的两个点,同时闭合三角形。相反,我得到了类似的结果:

代码如下:

Triangles.pde:

import java.util.*;

int popSize = 10;
ArrayList<Triangle> triangles = new ArrayList();
PVector points[] = new PVector[popSize];

void setup(){
  size(500, 500);
  background(255);
  try{
  for(int i = 0; i < popSize; i++){
    points[i] = new PVector(random(0, width), random(0, height));
  }
  for(int i = 0; i < popSize; i++){
    PVector p1 = points[0], p2 = points[1], p3 = points[2];
    for(int j = 0; j < popSize; j++){
      if(i != j){
          if(dist(points[i].x, points[i].y, points[j].x, points[j].y) < dist(points[i].x, points[i].y, p1.x, p1.y)){
            p3 = p2;
            p2 = p1;
            p1 = points[j];
          }
      }
    }
    triangles.add(new Triangle(p1, p2, p3));
  }
  for(int i = 0; i < triangles.size(); i++){

    triangles.get(i).drawTriangle();

  }
  }
  catch(Exception e){
    println(e);
  }
}

你认为我做错了什么?你有什么建议可以引导我走上正确的方向吗?

我相信你的问题可能是你没有考虑这些点是否是邻居。但我可能错了;我不是100%确定你的算法在做什么。你能和一些注释或伪代码解释你正在采取的步骤吗?生成点集的三角剖分并不简单。检查。
public class Triangle{
  public PVector point[] = new PVector[3];
  public PVector center;
  public Triangle(PVector p1, PVector p2, PVector p3){
    point[0] = p1;
    point[1] = p2;
    point[2] = p3;
  }
  public void drawTriangle(){
    noFill();
    stroke(255, 0, 0);
    line(point[0].x, point[0].y, point[1].x, point[1].y);
    stroke(0);
    line(point[1].x, point[1].y, point[2].x, point[2].y);
    stroke(255, 0, 0);
    line(point[2].x, point[2].y, point[0].x, point[0].y);
  }
}