Subdomain Posts
C++ | 25 days ago
C | 494 days ago
C++ | 603 days ago
C++ | 639 days ago
C++ | 673 days ago
None | 741 days ago
None | 756 days ago
None | 777 days ago
Recent Posts
PHP | 20 sec ago
None | 1 min ago
PHP | 1 min ago
None | 1 min ago
None | 2 min ago
XML | 3 min ago
None | 3 min ago
Java | 4 min ago
None | 4 min ago
XML | 5 min ago
Sitereport
Find cool info about any domain on the internet?
visit sitereport
Free Subdomains
Want a pastebin.com sub-domain for your community?
learn more...
What is pastebin?
Pastebin is a website that hosts all your text & code on dedicated servers for easy sharing.
learn more...
Learn a little bit about the new Pastebin.com on our help page. hide message
By Cueball on the 12th of Nov 2008 08:00:37 AM Download | Raw | Embed | Report
  1. /********************************************
  2. *         Trajectory by ~Cueball~           *
  3. *                                           *
  4. *     Use this include however you like,    *
  5. *      and contact me via the forum if      *
  6. *          you have any problems.           *
  7. ********************************************/
  8.  
  9. #if defined _trajectory_included
  10.     #endinput
  11. #endif
  12. #define _trajectory_included
  13.  
  14. #include <a_samp>
  15.  
  16. forward Float:GetFlightMaxTime(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8); // To avoid reparse errors.
  17.  
  18. /*
  19. native GetFlightData(Float:base, Float:velocity, Float:angle, fData[][FLIGHT_DATA], points = sizeof(fData), Float:gravity = 9.8);
  20. native GetFlightConditionsAtDistance(Float:base, Float:velocity, Float:angle, Float:distance, &Float:time, &Float:height, &Float:x, &Float:y, Float:gravity = 9.8);
  21. native GetFlightConditionsAtTime(Float:base, Float:velocity, Float:angle, Float:time, &Float:distance, &Float:height, &Float:x, &Float:y, Float:gravity = 9.8);
  22. native GetFlightInitialVelocity(Float:velocity, Float:angle, &Float:x, &Float:y);
  23. native Float:GetFlightMaxHeight(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8);
  24. native Float:GetFlightMaxRange(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8);
  25. native Float:GetFlightMaxTime(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8);
  26. native Float:GetRequiredAngle(Float:range, Float:velocity, Float:gravity = 9.8);
  27. native GetRequiredConditions(Float:range, Float:peak, &Float:velocity, &Float:angle, Float:gravity = 9.8);
  28. native Float:GetRequiredVelocity(Float:range, Float:angle, Float:gravity = 9.8);
  29. native Float:GetVelocity(Float:x, Float:y);
  30. */
  31.  
  32. enum FLIGHT_DATA {
  33.     Float:FLIGHT_DISTANCE,
  34.     Float:FLIGHT_HEIGHT,
  35.     Float:FLIGHT_VELOCITY[2]
  36. }
  37.  
  38. stock GetFlightData(Float:base, Float:velocity, Float:angle, fData[][FLIGHT_DATA], points = sizeof(fData), Float:gravity = 9.8)
  39. {
  40.     for(new i, Float:increment = floatdiv(GetFlightMaxTime(base, velocity, angle, gravity), float(points)), Float:cTime = increment; i < points; i++, cTime += increment)
  41.         GetFlightConditionsAtTime(base, velocity, angle, cTime, fData[i][FLIGHT_DISTANCE], fData[i][FLIGHT_HEIGHT], fData[i][FLIGHT_VELOCITY][0], fData[i][FLIGHT_VELOCITY][1], gravity);
  42. }
  43.  
  44. stock GetFlightConditionsAtDistance(Float:base, Float:velocity, Float:angle, Float:distance, &Float:time, &Float:height, &Float:x, &Float:y, Float:gravity = 9.8)
  45. {
  46.     GetFlightInitialVelocity(velocity, angle, x, y);
  47.     time = floatdiv(distance, x);
  48.     height = floatadd(base, floatdiv(floatmul(distance, y), x) - floatmul(0.5, floatmul(gravity, floatdiv(floatpower(distance, 2.0), floatpower(x, 2.0)))));
  49.     y -= floatmul(gravity, time);
  50. }
  51.  
  52. stock GetFlightConditionsAtTime(Float:base, Float:velocity, Float:angle, Float:time, &Float:distance, &Float:height, &Float:x, &Float:y, Float:gravity = 9.8)
  53. {
  54.     distance = floatmul(floatmul(velocity, floatcos(angle, degrees)), time);
  55.     height = floatadd(base, floatsub(floatmul(floatmul(velocity, floatsin(angle, degrees)), time), floatdiv(floatmul(gravity, floatpower(time, 2.0)), 2.0)));
  56.     GetFlightInitialVelocity(velocity, angle, x, y);
  57.     y -= floatmul(gravity, time);
  58. }
  59.  
  60. stock GetFlightInitialVelocity(Float:velocity, Float:angle, &Float:x, &Float:y)
  61. {
  62.     x = floatmul(velocity, floatcos(angle, degrees));
  63.     y = floatmul(velocity, floatsin(angle, degrees));
  64. }
  65.  
  66. stock Float:GetFlightMaxHeight(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8)
  67. {
  68.     new Float:x, Float:y;
  69.     GetFlightInitialVelocity(velocity, angle, x, y);
  70.    
  71.     return floatadd(base, floatdiv(floatpower(y, 2.0), floatmul(2.0, gravity)));
  72. }
  73.  
  74. stock Float:GetFlightMaxRange(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8)
  75. {
  76.     new Float:x, Float:y, Float:t = GetFlightMaxTime(base, velocity, angle, gravity);
  77.     GetFlightInitialVelocity(velocity, angle, x, y);
  78.    
  79.     return floatmul(x, t);
  80. }
  81.  
  82. stock Float:GetFlightMaxTime(Float:base, Float:velocity, Float:angle, Float:gravity = 9.8)
  83. {
  84.     new Float:x, Float:y, Float:fTimes[2];
  85.     GetFlightInitialVelocity(velocity, angle, x, y);
  86.  
  87.     fTimes[0] = floatadd(floatdiv(y, gravity), floatsqroot(floatsub(floatdiv(floatpower(y, 2.0), floatpower(gravity, 2.0)), floatdiv(floatmul(base, 2.0), gravity))));
  88.     fTimes[1] = floatsub(floatdiv(y, gravity), floatsqroot(floatsub(floatdiv(floatpower(y, 2.0), floatpower(gravity, 2.0)), floatdiv(floatmul(base, 2.0), gravity))));
  89.  
  90.     return (fTimes[0] >= fTimes[1]) ? (fTimes[0]) : (fTimes[1]);
  91. }
  92.  
  93. stock Float:GetRequiredAngle(Float:range, Float:velocity, Float:gravity = 9.8)
  94. {
  95.     return floatdiv(asin(floatdiv(floatmul(range, gravity), floatpower(velocity, 2.0))), 2.0);
  96. }
  97.  
  98. stock GetRequiredConditions(Float:range, Float:peak, &Float:velocity, &Float:angle, Float:gravity = 9.8)
  99. {
  100.     velocity = floatsqroot(floatdiv(floatmul(range, gravity), floatsin(floatmul(2.0, atan(floatmul(4.0, floatdiv(peak, range)))), degrees)));
  101.     angle = floatdiv(floatmul(atan(floatmul(4.0, floatdiv(peak, range))), 180.0), floatdiv(22.0, 7.0));
  102. }
  103.  
  104. stock Float:GetRequiredVelocity(Float:range, Float:angle, Float:gravity = 9.8)
  105. {
  106.     return floatsqroot(floatdiv(floatmul(range, gravity), floatsin(floatmul(2.0, angle), degrees)));
  107. }
  108.  
  109. stock Float:GetVelocity(Float:x, Float:y)
  110. {
  111.     return floatsqroot(floatadd(floatpower(x, 2.0), floatpower(y, 2.0)));
  112. }
Submit a correction or amendment below. Make A New Post
To highlight particular lines, prefix each line with @h@
Syntax highlighting:
Post expiration:
Post exposure:
Name / Title:
Email: