Created
January 12, 2011 03:26
-
-
Save e000/775640 to your computer and use it in GitHub Desktop.
Well, because, LOL.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// libWebAssign LOL | |
function putHelp(solutionSet) { | |
title = solutionSet[0] | |
solutionSet = solutionSet[1] || {} | |
if($$('.bread').getNext()[0].innerHTML.replace(/^\s+/, '') != title) { | |
alert("Invalid Solution Set Loaded! I work for '" + title + "'") | |
} | |
$$('.numSolveButtan').dispose() | |
$$('[id^="question"]').each(function(v, k) { | |
addSolveButton(v) | |
}) | |
function solve(questionDiv, sol) { | |
var elements = [] | |
questionDiv.getElements('font[color=red]').each(function(v, k) { | |
elements.push( | |
parseFloat(v.innerHTML) | |
) | |
}) | |
var results = sol(elements) | |
var inputFields = questionDiv.getElements('input[type=text]') | |
try { | |
results.each(function(v, k) { | |
if(inputFields[k] === undefined) { | |
throw "fail"; | |
} else { | |
inputFields[k].set('value', round(v)) | |
} | |
}) | |
} catch(e) { | |
alert("Too many results, too few fields.") | |
} | |
} | |
function addSolveButton(div) { | |
var key = div.getElement('.qTitleRight > span').innerHTML.substring(16).replace(/\.\s+/, '') | |
var sol = solutionSet[key] | |
if(sol === undefined) { | |
div.getElement('.leftBarTitle').appendChild( | |
new Element('span', { | |
'html': 'no logic present', | |
'styles': { | |
'color': 'grey', | |
'padding': '2px 0 2px 20px', | |
'font-weight': 'bold' | |
}, | |
'class': 'numSolveButtan' | |
}) | |
) | |
} else { | |
div.getElement('.leftBarTitle').appendChild( | |
new Element('a', { | |
html: 'Solve', | |
events: { | |
click: function(e) { | |
solve(div, sol) | |
} | |
}, | |
styles: { | |
'font-weight': 'bold', | |
'color': 'red', | |
'padding': '2px 0 2px 20px' | |
}, | |
'class': 'numSolveButtan' | |
}) | |
) | |
} | |
} | |
} | |
var g = -9.80; | |
function round(num, places) { | |
places = Math.pow(10, places || 2) | |
return Math.round(num * places)/places | |
} | |
function sin(degs) { | |
return Math.sin(deg2rad(degs)) | |
} | |
function cos(degs) { | |
return Math.cos(deg2rad(degs)) | |
} | |
function deg2rad(degs) { | |
return degs * Math.PI / 180 | |
} | |
solutions = ['ch 6 Motion in 2D (Homework)', { | |
'GPhys09 6.MP.052': function(elements) { // question 1 | |
var distanceY = -elements[0], distanceX = elements[1] | |
time = Math.sqrt( | |
(2 * distanceY) / g | |
) | |
velocityX = distanceX / time | |
return [time, velocityX] | |
}, | |
'GPhys09 6.MP.055': function(elements) { // question 2 | |
var velocityX = elements[0], time = elements[1] | |
distanceY = Math.abs(.5* g * Math.pow(time, 2)) | |
distanceX = velocityX * time | |
return [distanceY, distanceX] | |
}, | |
'GPhys09 6.MP.056': function(elements) { // question 3 | |
var theta = elements[0], velocity = elements[1]; | |
height = (Math.pow(velocity * sin(theta), 2)) / (-2 * g) | |
range = (Math.pow(velocity, 2) * sin(2 * theta)) / -g | |
return [height, range] | |
}, | |
'GPhys09 6.MP.058': function(elements) { // question 4 | |
var distanceY = -elements[0], velocityX = (elements[1] * 1000 / 3600) | |
time = Math.sqrt( | |
(2 * distanceY) / g | |
) | |
distanceX = velocityX * time | |
return [time, distanceX] | |
}, | |
'GPhys09 6.MP.059': function(elements) { // question 5 | |
var distanceY = -elements[0], distanceX = elements[1]; | |
return [ | |
distanceX / Math.sqrt((2 * distanceY) / g) // velocityX | |
] | |
}, | |
'GPhys09 6.MP.061': function(elements) { // question 6 | |
var massKg = elements[0], radius = elements[1]; | |
var T = 14.3; | |
acceleration = (4 * Math.pow(Math.PI, 2) * radius) / Math.pow(T, 2) | |
Fnet = massKg * acceleration | |
return [acceleration, Fnet] | |
} | |
}] | |
putHelp(solutions) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment