package medusa.georgios.Layouts;
/*
* VectorNormalization.java
*
* Created on November 24, 2006, 12:14 PM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
//0011 extrema = minmax(values);
//0012 oldmin = extrema(1); oldmax = extrema(2);
//0013
//0014 oldrange = oldmax - oldmin;
//0015 newrange = newmax - newmin;
//0016
//0017 % special case
//0018 if (oldrange == 0)
//0019 values = repmat((newmax + newmin)/2, size(values));
//0020 return;
//0021 end
//0022
//0023 % Rescaling conceptually uses the following formula:
//0024 % zero_to_one = (oldvalues - oldmin) ./ oldrange;
//0025 % newvalues = (zero_to_one .* newrange) + newmin;
//0026 % But doing it out longhand like this takes two matrix multiplications
//0027 % and two matrix additions. The command below takes a more convoluted
//0028 % route to do the same thing with half the number of full matrix operations.
//0029 scale = oldrange ./ newrange;
//0030 shift = oldmin - (scale .* newmin);
//0031 values = (values - shift) ./ scale;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import medusa.georgios.vecmathpackage.Point3d;
/**
*
* @author Georgios
*/
public class Point3d_VectorNormalization {
ArrayList Normalized_vector=new ArrayList();
double lower_limit, upper_limit;
public Point3d_VectorNormalization(ArrayList list, double Lower_limit, double UpperLimit) {
double tmp;
Run_Point3d_VectorNormalization(list, Lower_limit, UpperLimit);
}
public Point3d_VectorNormalization(ArrayList float_list, double Lower_limit, double UpperLimit,int mode) {
ArrayList plist = new ArrayList();
for (int i = 0; i < float_list.size(); i++)
{
Point3d ppp = new Point3d(float_list.get(i),float_list.get(i),float_list.get(i));
plist.add(ppp);
}
Run_Point3d_VectorNormalization(plist, Lower_limit, UpperLimit);
}
public Point3d_VectorNormalization(String filename, double Lower_limit, double UpperLimit) {
ArrayList float_list = new ArrayList();
StringBuffer input = new StringBuffer();
String thisLine;
try{
FileInputStream fin = new FileInputStream(filename);
BufferedReader myInput = new BufferedReader(new InputStreamReader(fin));
while ((thisLine = myInput.readLine()) != null) {
float_list.add(Float.parseFloat(thisLine));
}
} catch (Exception e) {
e.printStackTrace();
}
ArrayList plist = new ArrayList();
for (int i = 0; i < float_list.size(); i++)
plist.add(new Point3d(float_list.get(i),float_list.get(i),float_list.get(i)));
Run_Point3d_VectorNormalization(plist, Lower_limit, UpperLimit);
}
public void Run_Point3d_VectorNormalization(ArrayList list, double Lower_limit, double UpperLimit) {
double tmp,new_value_X=0,new_value_Y=0,new_value_Z=0;
if(UpperLimit list_log = new ArrayList();
for (int i = 0; i < list.size(); i++) {
Point3d p = new Point3d((list.get(i).x),(list.get(i).y),list.get(i).z);
list_log.add(p);
}
double maximum_x=-9999;
double minimum_x=9999;
double maximum_y=-9999;
double minimum_y=9999;
for (int i = 0; i < list_log.size(); i++)
{
if(list_log.get(i).x>maximum_x)maximum_x=list_log.get(i).x;
if(list_log.get(i).y>maximum_y)maximum_y=list_log.get(i).y;
if(list_log.get(i).x old = new ArrayList();
// for (int i = 0; i < 5; i++)
// old.add(new Point3d(Math.random(),Math.random(),0));
// Value_Normalization arr= new Value_Normalization(old,lower_limit,upper_limit);
// ArrayList New = arr.Return_Normalized_Vector();
// for (int i = 0; i < New.size(); i++) {
// System.out.print(old.get(i)+"---->"+New.get(i)+"\t");
// if(New.get(i).x>upper_limit) {System.out.print("error x upper limit\t");error=true;}
// if(New.get(i).y>upper_limit) {System.out.print("error y upper limit\t");error=true;}
// if(New.get(i).x old = new ArrayList();
////
// old.add(new Point3d(27.284480738588833, 31.72191636083955, -3.24624068648941E-16));
// old.add(new Point3d(27.466757077474767, 36.68702809377519, 5.569718453552241));
// old.add(new Point3d(32.15876804941409, 40.40254461246098, 5.5697194535522385));
// old.add(new Point3d(38.36979899957279, 34.03834058199091, 5.569720453552236));
// old.add(new Point3d(22.149222921708414, 37.67372064188468, 5.5697214535522335));
// old.add(new Point3d(21.7974413348074, 44.019514649062366, 5.569722453552231));
old.add(new Point3d(-0.346661665793603, -0.2900696819081146, -3.24624068648941E-16));
old.add(new Point3d(-0.39953170261075266, 0.3191490753659873, -5.892990639115484E-16));
old.add(new Point3d(-0.3995317026107714, 0.3191490753659655, -4.012103159957673E-16));
old.add(new Point3d(0.09553733049546638, -0.7852678541994769, 5.526088161660622E-16));
old.add(new Point3d(0.5250938702598295, 0.21851969268781998, 0.7071067811865471));
old.add(new Point3d(0.5250938702598309, 0.21851969268781896, -0.7071067811865471));
Point3d_VectorNormalization arr= new Point3d_VectorNormalization(old,lower_limit,upper_limit);
//Value_Normalization arr= new Value_Normalization("Vector_To_Normalize.txt",lower_limit,upper_limit);
ArrayList New = arr.Return_Normalized_Vector();
for (int i = 0; i < New.size(); i++)
System.out.println(New.get(i).x);
}
}
Ads help maintain this website.