Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/volumeproblem.py
diff options
context:
space:
mode:
Diffstat (limited to 'volumeproblem.py')
-rw-r--r--volumeproblem.py88
1 files changed, 63 insertions, 25 deletions
diff --git a/volumeproblem.py b/volumeproblem.py
index 6bec2c8..b408fa1 100644
--- a/volumeproblem.py
+++ b/volumeproblem.py
@@ -44,11 +44,6 @@ class VolumeProblem(Problem):
self.answer = self.find_answer()
self.under_faucet_position = Vector(200, 500)
-
- #self.container.moons_visible = False
-
- #self.pan1_position = Vector(200, 500)
- #self.pan2_position = Vector(725, 500)
def generate_problem(self):
# The total number of problems.
@@ -59,7 +54,7 @@ class VolumeProblem(Problem):
self.problem_number = random.randrange(0, self.n_problems)
# Uncomment to test a particular problem.
- #self.problem_number = 0
+ self.problem_number = 9
# Define the various problems.
if self.problem_number == 0:
@@ -317,54 +312,76 @@ class VolumeProblem(Problem):
self.shape2.water_height = self.shape2.height
self.shape2.filling_from_faucet = True
self.shape2.fill_to_given_volume(self.shape2.volume)
-
+
+ # Shape 1 and shape 2 are moved close together.
if self.shape1.pos.approx_equal(self.shape2.pos, tolerance=150):
- #print " the two volumes are close to each other"
+ print " the two volumes are close to each other"
if self.shape1.full and not self.shape2.full:
#print ""
- #print "pour from volume 1 into volume 2"
+ print "(first case) pour from volume 1 into volume 2"
- #print " Before: water volume1 =", self.shape1.water_volume
- #print " water volume2 =", self.shape2.water_volume
-
+ print " Before: water volume1 =", self.shape1.water_volume
+ print " water volume2 =", self.shape2.water_volume
+
+ # Pour from shape 1 to shape 2.
if self.shape1.water_volume <= self.shape2.volume:
- #print "(1): water volume 1 less than (or equal to) empty volume 2"
+ print "(1): water volume 1 less than (or equal to) empty volume 2"
self.shape2.fill_to_given_volume(self.shape1.water_volume)
self.shape1.fill_to_given_volume(0.0)
+ self.shape1.initial_volume_to_pour_out = self.shape2.water_volume
else:
- #print "(2): water volume 1 greater than empty volume 2"
+ print "(2): water volume 1 greater than empty volume 2"
self.shape2.fill_to_given_volume(self.shape2.volume)
self.shape2.full = True
self.shape1.fill_to_given_volume(self.shape1.water_volume - self.shape2.water_volume)
self.shape1.full = False
+ self.shape1.initial_volume_to_pour_out = self.shape2.water_volume
#print " After: volume1 =", self.shape1.water_volume
#print " volume2 =", self.shape2.water_volume
if self.shape2.pos.x > 250:
self.shape1.move(Vector(self.shape2.pos.x - 250, self.shape2.pos.y))
- self.shape1.rotate(15 * math.pi/180.0)
+ #self.shape1.rotate(15 * math.pi/180.0)
else:
self.shape1.move(Vector(self.shape2.pos.x + 250, self.shape2.pos.y))
- self.shape1.rotate(15 * math.pi/180.0)
+ #self.shape1.rotate(15 * math.pi/180.0)
+
+ a1 = 2.0 * self.shape1.lower_radius
+ b1 = 2.0 * self.shape1.upper_radius
+ h1 = self.shape1.height
+
+ a2 = 2.0 * self.shape2.lower_radius
+ b2 = 2.0 * self.shape2.upper_radius
+ h2 = self.shape2.height
- #self.shape1.calculate_bounds()
- #self.shape2.calculate_bounds()
+ self.shape1.move(Vector(self.shape2.pos.x, self.shape2.pos.y))
+ self.shape1.a1 = a1
+ self.shape1.b1 = b1
+ self.shape1.h1 = h1
+ self.shape1.a2 = a2
+ self.shape1.b2 = b2
+ self.shape1.h2 = h2
+
+ self.shape1.x0 = self.shape2.pos.x
+ self.shape1.y0 = self.shape2.pos.y
+
return True
elif self.shape2.full and not self.shape1.full:
- #print " pour from volume 2 into volume 1"
+ print "(second case) pour from volume 2 into volume 1"
- #print " Before: water volume2 =", self.shape2.water_volume
- #print " empty volume1 =", self.shape1.volume
+ print " Before: water volume2 =", self.shape2.water_volume
+ print " empty volume1 =", self.shape1.volume
if self.shape2.water_volume <= self.shape1.volume:
- #print "(3): water volume 2 less than (or equal to) empty volume 1"
+ print "(3): water volume 2 less than (or equal to) empty volume 1"
self.shape1.fill_to_given_volume(self.shape2.water_volume)
self.shape2.fill_to_given_volume(0.0)
+ self.shape2.initial_volume_to_pour_out = self.shape1.water_volume
else:
- #print "(4): water volume 2 greater than empty volume 1"
+ print "(4): water volume 2 greater than empty volume 1"
self.shape1.fill_to_given_volume(self.shape1.volume)
self.shape1.full = True
self.shape2.fill_to_given_volume(self.shape2.water_volume - self.shape1.water_volume)
@@ -372,16 +389,37 @@ class VolumeProblem(Problem):
volume_difference = self.shape2.water_volume - self.shape1.water_volume
#print "volume_difference =", volume_difference
self.shape2.full = False
+ self.shape2.initial_volume_to_pour_out = self.shape1.water_volume
#print " After: volume2 =", self.shape2.water_volume
#print " volume1 =", self.shape1.water_volume
if self.shape1.pos.x > 250:
self.shape2.move(Vector(self.shape1.pos.x - 250, self.shape1.pos.y))
- self.shape2.rotate(15 * math.pi/180.0)
+ #self.shape2.rotate(15 * math.pi/180.0)
else:
self.shape2.move(Vector(self.shape1.pos.x + 250, self.shape1.pos.y))
- self.shape2.rotate(15 * math.pi/180.0)
+ #self.shape2.rotate(15 * math.pi/180.0)
+
+ a1 = 2.0 * self.shape2.lower_radius
+ b1 = 2.0 * self.shape2.upper_radius
+ h1 = self.shape2.height
+
+ a2 = 2.0 * self.shape1.lower_radius
+ b2 = 2.0 * self.shape1.upper_radius
+ h2 = self.shape1.height
+
+ self.shape2.move(Vector(self.shape1.pos.x, self.shape1.pos.y))
+
+ self.shape2.a1 = a1
+ self.shape2.b1 = b1
+ self.shape2.h1 = h1
+ self.shape2.a2 = a2
+ self.shape2.b2 = b2
+ self.shape2.h2 = h2
+
+ self.shape2.x0 = self.shape1.pos.x
+ self.shape2.y0 = self.shape1.pos.y
return True