package puzzle.puzzleClasses; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.BufferedInputStream; import java.io.IOException; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JMenu; import javax.swing.JRadioButtonMenuItem; public class Util{ /********************************************************sinal de um inteiro (1 ou -1)*/ static int signal(double i){ return (int)(i/Math.abs(i)); } /***********************************************************Produto escalar*/ static double Esc(double[] U,double[] V){ return U[0]*V[0]+U[1]*V[1]; } /********************************************************Distância entre dois pontos*/ static double dist(Point P,Point Q){ return Math.sqrt(Math.pow(P.x-Q.x,2)+Math.pow(P.y-Q.y,2)); } static double dist(double[] P,double[] Q){ return Math.sqrt(Math.pow(P[0]-Q[0],2)+Math.pow(P[1]-Q[1],2)); } /********************************************************** Norma de un vector*/ static double norma(Point P){ return Math.sqrt(Math.pow(P.x,2)+Math.pow(P.y,2)); } static double norma(double[] V){ return Math.sqrt(Math.pow(V[0],2)+Math.pow(V[1],2)); } /**************************************************************vector unitário de U*/ static double[] uni(double[] U){ double[] Result= new double[]{U[0]/norma(U),U[1]/norma(U)}; return Result; } /************************************************************vector unitário de AB */ static double[] uni(double[] A,double[] B){ double[] Result= new double[2]; double[] AB=new double[]{B[0]-A[0],B[1]-A[1]}; Result=uni(AB); return Result; } /********************************************************angulo dados três pontos */ static double angulo(double[] A,double[] Centro, double[] B){ double result; double[] U=new double[]{A[0]-Centro[0],A[1]-Centro[1]}; double[] V=new double[]{B[0]-Centro[0],B[1]-Centro[1]}; result =Math.acos(Esc(U,V)/(norma(U)*norma(V))); if(result<0){result = 2*Math.PI+result;} return result; } /********************************************************angulo entre dois vectores*/ static double angulo(double[] U, double[] V){ double result; result =Math.acos(Esc(U,V)/(norma(U)*norma(V))); if(result<0){result = 2*Math.PI+result;} return result; } /*******************************************Função que transforma um string num inteiro*/ static int StringToInt(String Str){ int result=0; char[] textchar = new char[Str.length()]; textchar = Str.toCharArray(); for(int i=0; i