Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.70 KB | None | 0 0
  1. package me.tojatta.api.utilities.angle;
  2.  
  3. import java.util.Random;
  4. import me.tojatta.api.utilities.vector.impl.Vector3;
  5.  
  6.  
  7. public class AngleUtility
  8. {
  9.   private float minYawSmoothing;
  10.   private float maxYawSmoothing;
  11.   private float minPitchSmoothing;
  12.   private float maxPitchSmoothing;
  13.   private Vector3<Float> delta;
  14.   private Angle smoothedAngle;
  15.   private final Random random;
  16.  
  17.   public AngleUtility(float minYawSmoothing, float maxYawSmoothing, float minPitchSmoothing, float maxPitchSmoothing) {
  18.     this.minYawSmoothing = minYawSmoothing;
  19.     this.maxYawSmoothing = maxYawSmoothing;
  20.     this.minPitchSmoothing = minPitchSmoothing;
  21.     this.maxPitchSmoothing = maxPitchSmoothing;
  22.     this.random = new Random();
  23.     this.delta = new Vector3(Float.valueOf(0.0F), Float.valueOf(0.0F), Float.valueOf(0.0F));
  24.     this.smoothedAngle = new Angle(Float.valueOf(0.0F), Float.valueOf(0.0F));
  25.   }
  26.  
  27.  
  28.   public float randomFloat(float min, float max) { return min + this.random.nextFloat() * (max - min); }
  29.  
  30.  
  31.  
  32.   public Angle calculateAngle(Vector3<Double> destination, Vector3<Double> source) {
  33.     Angle angles = new Angle(Float.valueOf(0.0F), Float.valueOf(0.0F));
  34.  
  35.    
  36.     float height = 1.5F;
  37.    
  38.     this.delta
  39.       .setX(Float.valueOf(destination.getX().floatValue() - source.getX().floatValue()))
  40.       .setY(Float.valueOf(destination.getY().floatValue() + height - source.getY().floatValue() + height))
  41.       .setZ(Float.valueOf(destination.getZ().floatValue() - source.getZ().floatValue()));
  42.    
  43.     double hypotenuse = Math.hypot(this.delta.getX().doubleValue(), this.delta.getZ().doubleValue());
  44.    
  45.     float yawAtan = (float)Math.atan2(this.delta.getZ().floatValue(), this.delta.getX().floatValue());
  46.     float pitchAtan = (float)Math.atan2(this.delta.getY().floatValue(), hypotenuse);
  47.    
  48.     float deg = 57.29578F;
  49.    
  50.     float yaw = yawAtan * deg - 90.0F;
  51.     float pitch = -(pitchAtan * deg);
  52.    
  53.     return angles.setYaw(Float.valueOf(yaw)).setPitch(Float.valueOf(pitch)).constrantAngle();
  54.   }
  55.  
  56.  
  57.   public Angle smoothAngle(Angle destination, Angle source) { return this.smoothedAngle
  58.       .setYaw(Float.valueOf(source.getYaw().floatValue() - destination.getYaw().floatValue()))
  59.       .setPitch(Float.valueOf(source.getPitch().floatValue() - destination.getPitch().floatValue()))
  60.       .constrantAngle()
  61.       .setYaw(Float.valueOf(source.getYaw().floatValue() - this.smoothedAngle.getYaw().floatValue() / 100.0F * randomFloat(this.minYawSmoothing, this.maxYawSmoothing)))
  62.       .setPitch(Float.valueOf(source.getPitch().floatValue() - this.smoothedAngle.getPitch().floatValue() / 100.0F * randomFloat(this.minPitchSmoothing, this.maxPitchSmoothing)))
  63.       .constrantAngle(); }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement