点云数据

package cn.thu.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class TestN
{

public static void main(String[] args)
{

}

// 返回三个视图中最近点的列表
public List<List<Point>> compute(List<Point> lstPoints_Red, List<Point> lstPoints_Dark, List<Point> lstPoints_Green)
{
List<List<Point>> llsist = new ArrayList<List<Point>>();

for (int i = 0; i < lstPoints_Red.size(); i++)
{
// 红色点中的第i个点:pointView0
Point pointView0 = lstPoints_Red.get(i);

// 黑色点中距离pointView0最近的点:pointView1,两者构成一组数据
Point pointView1 = findNearestPoint(pointView0, lstPoints_Dark);

// 绿色点中距离pointView0、pointView1最近的点,三者构成一组数据
Point pointView2 = findNearestPoint(pointView0, lstPoints_Green);

// 红色点中第i个点、及其距离最近的黑色、绿色点,三者构成一组数据
List<Point> lstpointV012 = new ArrayList<Point>();
lstpointV012.add(pointView0);
lstpointV012.add(pointView1);
lstpointV012.add(pointView2);

llsist.add(lstpointV012);
}

return llsist;
}

// 给定一个点,得到另一个view里最近的点
public Point findNearestPoint(Point pointView0, List<Point> lstPointsView1)
{
double vx = pointView0.getX();
double vy = pointView0.getY();
double vz = pointView0.getZ();

Map<String, Point> mapPoint = new HashMap<String, Point>();
Map<String, Double> mapLength = new HashMap<String, Double>();

for (int i = 0; i < lstPointsView1.size(); i++)
{
double x = lstPointsView1.get(i).getX();
double y = lstPointsView1.get(i).getY();
double z = lstPointsView1.get(i).getZ();

// 计算距离的平方
double length = Math.sqrt(Math.abs(vx - x)) + Math.sqrt(Math.abs(vy - y)) + Math.sqrt(Math.abs(vz - z));

}

Point neartPoint = new Point();
return neartPoint;
}

}

public class Point
{

private double x; // x坐标
private double y; // y坐标
private double z; // z坐标

public double getX()
{
return x;
}

public void setX(double x)
{
this.x = x;
}

public double getY()
{
return y;
}

public void setY(double y)
{
this.y = y;
}

public double getZ()
{
return z;
}

public void setZ(double z)
{
this.z = z;
}

}

猜你喜欢

转载自www.cnblogs.com/tianhu9102/p/10083927.html
今日推荐