class vector{ private double x_component; private double y_component; public vector() { x_component=0.0; y_component=0.0; } vector(double x,double y) { x_component=x; y_component=y; } double dotproduct(vector v) { double res; res=(this.x_component*v.x_component)+(this.y_component*v.y_component); return res; } double magnitude() { double mag; mag=Math.pow(this.x_component,2)+Math.pow(this.y_component,2); mag=Math.sqrt(mag); return mag; } double angle(vector v) { double dot_prod,mag,mag1; double angle; dot_prod=dotproduct(v); mag=v.magnitude(); mag1=this.magnitude(); angle=Math.acos(dot_prod/(mag*mag1)); angle=Math.toDegrees(angle); return angle; } vector add(vector v) { vector res; double x,y; x=this.x_component + v.x_component; y=this.y_component + v.y_component; res = new vector(x,y); return res; } vector subtract(vector v) { vector res; double x,y; x=this.x_component - v.x_component; y=this.y_component - v.y_component; res = new vector(x,y); return res; } vector scalerMultiply(double alpha) { vector res; double x,y; x=alpha*this.x_component; y=alpha*this.y_component; res = new vector(x,y); return res; } vector unitVector() { vector res; double x,y,mag; mag=this.magnitude(); x=this.x_component/mag; y=this.y_component/mag; res = new vector(x,y); return res; } boolean isOrthogonal(vector v) { double dot_prod; dot_prod = dotproduct(v); if(dot_prod==0.0) return true; else return false; } boolean isParallel(vector v) { double ang; ang=this.angle(v); if(ang==0.0) return true; else return false; } void display_vector() { System.out.println("The x_component "+this.x_component); System.out.println("The y_component "+this.y_component); } }; public class vectortest{ public static void main(String args[]) { double res,x1,y1,x2,y2,mag,mag1; vector a,b; vector unit,result_add,result_sub,result; boolean flag; long p; x1=Integer.parseInt(args[0]); y1=Integer.parseInt(args[1]); x2=Integer.parseInt(args[2]); y2=Integer.parseInt(args[3]); a=new vector(x1,y1); b=new vector(x2,y2); res= a.dotproduct(b); System.out.println("The dot of the given vectors is "+res); res=a.magnitude(); System.out.println("The magnitude of first vector is "+res); res=b.magnitude(); System.out.println("The magnitude of second vector is "+res); result_add=a.add(b); System.out.println("A+B"); result_add.display_vector(); System.out.println("A-B"); result_sub=a.subtract(b); result_sub.display_vector(); result = result_add.unitVector(); System.out.println("Unit vector in direction of A+B"); result.display_vector(); res=a.angle(b); System.out.println("The angle in Degree between the vectors is "+res); unit = new vector(1.0,1.0); flag=result_add.isOrthogonal(unit); if(flag==true) System.out.println("A+B and i+j are orthogonal"); else System.out.println("A+B and i+j are not orthogonal"); /* here we will first find the unit vector along the direction of A+B and then check whether it is parallel to i-j or not */ unit = new vector(1.0,-1.0); result_add = result_add.unitVector(); res=result_add.dotproduct(unit); mag=result_add.magnitude(); mag1=unit.magnitude(); p=Math.round(res/(mag*mag1)); if(p==1) System.out.println("A+B and i-j are parallel"); else System.out.println("A+B and i-j are not parallel"); } };