# Format of line equation list item
# (m, (x1, y1), (x2,y2)) or (m, start, end)
# Equation:
# slope(m) = (y2 - y1) / (x2 - x1)
# given X, first specify which line X belongs to, then calculate Y:
# Y = (m * (X - x1)) + y1
class LinearEquation:
def __init__(self): ### this is the contructor
self.lines = [] ### an empty list
def addLine(self, start, end):
fstart = (float(start[0]), float(start[1]))
fend = (float(end[0]), float(end[1]))
m = (fend[1] - fstart[1]) / (fend[0] - fstart[0])
self.lines.append((m, fstart, fend))
def getY(self, x):
line = None
for lx in self.lines:
if x <= lx[2][0]: ### in other words -> if x <= x2 of line:
line = lx
break
if line == None:
### I could simply extrapolate from last line here, but it's safer to throw an exception
raise "DUDE!!! you gave a value above equation limits in LinearEquation X("
return (lx[0] * (float(x) - line[1][0])) + line[1][1]
في 28 أيلول 2010 06:21 م، غمغم وائل طيارة باستغراب قائلاً:
هل تعني بكلامك أن نسبة معينة من الالعاب لا تستخدم معادلة أو نوع معين من ال Distribution ؟؟ وأنهم يعتمدون على الطريقة اليدوية وبعد ذلك يقومون بالتجريب و تعديلهم ؟