Skip to content

Instantly share code, notes, and snippets.

@e000
Created January 12, 2011 03:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save e000/775640 to your computer and use it in GitHub Desktop.
Save e000/775640 to your computer and use it in GitHub Desktop.
Well, because, LOL.
// 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