Guest User

Untitled

a guest
Jul 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. // libWebAssign LOL
  2.  
  3. function putHelp(solutionSet) {
  4. title = solutionSet[0]
  5. solutionSet = solutionSet[1] || {}
  6.  
  7. if($$('.bread').getNext()[0].innerHTML.replace(/^\s+/, '') != title) {
  8. alert("Invalid Solution Set Loaded! I work for '" + title + "'")
  9. }
  10.  
  11. $$('.numSolveButtan').dispose()
  12. $$('[id^="question"]').each(function(v, k) {
  13. addSolveButton(v)
  14. })
  15.  
  16. function solve(questionDiv, sol) {
  17. var elements = []
  18. questionDiv.getElements('font[color=red]').each(function(v, k) {
  19. elements.push(
  20. parseFloat(v.innerHTML)
  21. )
  22. })
  23.  
  24. var results = sol(elements)
  25. var inputFields = questionDiv.getElements('input[type=text]')
  26.  
  27. try {
  28. results.each(function(v, k) {
  29. if(inputFields[k] === undefined) {
  30. throw "fail";
  31. } else {
  32. inputFields[k].set('value', round(v))
  33. }
  34. })
  35. } catch(e) {
  36. alert("Too many results, too few fields.")
  37. }
  38. }
  39.  
  40. function addSolveButton(div) {
  41. var key = div.getElement('.qTitleRight > span').innerHTML.substring(16).replace(/\.\s+/, '')
  42. var sol = solutionSet[key]
  43. if(sol === undefined) {
  44. div.getElement('.leftBarTitle').appendChild(
  45. new Element('span', {
  46. 'html': 'no logic present',
  47. 'styles': {
  48. 'color': 'grey',
  49. 'padding': '2px 0 2px 20px',
  50. 'font-weight': 'bold'
  51. },
  52. 'class': 'numSolveButtan'
  53. })
  54. )
  55. } else {
  56. div.getElement('.leftBarTitle').appendChild(
  57. new Element('a', {
  58. html: 'Solve',
  59. events: {
  60. click: function(e) {
  61. solve(div, sol)
  62. }
  63. },
  64. styles: {
  65. 'font-weight': 'bold',
  66. 'color': 'red',
  67. 'padding': '2px 0 2px 20px'
  68. },
  69. 'class': 'numSolveButtan'
  70. })
  71. )
  72. }
  73. }
  74. }
  75.  
  76. var g = -9.80;
  77.  
  78. function round(num, places) {
  79. places = Math.pow(10, places || 2)
  80. return Math.round(num * places)/places
  81. }
  82.  
  83. function sin(degs) {
  84. return Math.sin(deg2rad(degs))
  85. }
  86. function cos(degs) {
  87. return Math.cos(deg2rad(degs))
  88. }
  89.  
  90. function deg2rad(degs) {
  91. return degs * Math.PI / 180
  92. }
  93.  
  94. solutions = ['ch 6 Motion in 2D (Homework)', {
  95. 'GPhys09 6.MP.052': function(elements) { // question 1
  96. var distanceY = -elements[0], distanceX = elements[1]
  97.  
  98. time = Math.sqrt(
  99. (2 * distanceY) / g
  100. )
  101. velocityX = distanceX / time
  102.  
  103. return [time, velocityX]
  104.  
  105. },
  106. 'GPhys09 6.MP.055': function(elements) { // question 2
  107. var velocityX = elements[0], time = elements[1]
  108.  
  109. distanceY = Math.abs(.5* g * Math.pow(time, 2))
  110. distanceX = velocityX * time
  111.  
  112. return [distanceY, distanceX]
  113.  
  114. },
  115. 'GPhys09 6.MP.056': function(elements) { // question 3
  116. var theta = elements[0], velocity = elements[1];
  117.  
  118. height = (Math.pow(velocity * sin(theta), 2)) / (-2 * g)
  119. range = (Math.pow(velocity, 2) * sin(2 * theta)) / -g
  120.  
  121. return [height, range]
  122.  
  123. },
  124. 'GPhys09 6.MP.058': function(elements) { // question 4
  125. var distanceY = -elements[0], velocityX = (elements[1] * 1000 / 3600)
  126.  
  127. time = Math.sqrt(
  128. (2 * distanceY) / g
  129. )
  130. distanceX = velocityX * time
  131.  
  132. return [time, distanceX]
  133.  
  134. },
  135. 'GPhys09 6.MP.059': function(elements) { // question 5
  136. var distanceY = -elements[0], distanceX = elements[1];
  137.  
  138. return [
  139. distanceX / Math.sqrt((2 * distanceY) / g) // velocityX
  140. ]
  141.  
  142. },
  143. 'GPhys09 6.MP.061': function(elements) { // question 6
  144. var massKg = elements[0], radius = elements[1];
  145. var T = 14.3;
  146.  
  147. acceleration = (4 * Math.pow(Math.PI, 2) * radius) / Math.pow(T, 2)
  148. Fnet = massKg * acceleration
  149.  
  150. return [acceleration, Fnet]
  151.  
  152. }
  153. }]
  154.  
  155.  
  156. putHelp(solutions)
Add Comment
Please, Sign In to add comment