[Python Wpg] Fwd: Cannot figure out this ZeroDivisionError exception

Kevin Veroneau kveroneau at gmail.com
Fri Mar 11 15:22:20 EST 2011


---------- Forwarded message ----------
From: Kevin Veroneau <kveroneau at gmail.com>
Date: Fri, Mar 11, 2011 at 2:22 PM
Subject: Re: [Python Wpg] Cannot figure out this ZeroDivisionError exception
To: Stuart Williams <stuart at swilliams.ca>


Thank you the help.

I updated the code with the added brackets.  The exception is still firing.

camz is set on line 17:  camx, camy, camz = 0, 0, 300

scale is set to 1, and when the mode is changed to from 0 to 1, the
following is executed:
scale = scale/camz

I suspect that I have the scale set too low, it is current 1.  In the end,
it would be doing:
scale = 1/300 which then equals a zero-based float point number:  0.003333

If I set the scale to 1, the objects in 3D space are too far to see and
defeats the purpose of the demo.  Although I do suspect it is more related
to the math in dividing the scale than it is in the math for the drawing
routine.

This helps a lot as now the problem is more pinpointed and I know where to
look.

Thanks!


On Fri, Mar 11, 2011 at 1:58 PM, Stuart Williams <stuart at swilliams.ca>wrote:

> I briefly looked through your code, and the print of scale + movex makes me
> wonder if you're assuming different operator precedence than Python gives
> you:
>
>   nx = (x[n]+xrotoffset+camx)/nz/scale+movex
>
> is interpreted as (formatted to match PEP8):
>
>   nx = (((x[n] + xrotoffset + camx) / nz) / scale) + movex
>
> I suspect scale is zero, even if scale+movex is not.
>
> camz starts at zero, and if line 68 execute then scale becomes zero.
>
> The other thing I noticed is your code has the loop over 8 values later in
> the loop than the code that you're following.
>
> Perhaps that will help.
>
> Stuart.
>
> On Thu, Mar 10, 2011 at 4:33 PM, Kevin Veroneau <kveroneau at gmail.com>wrote:
>
>> Hello,
>>
>>   I am in the process of learning the basics of 3D math and programming,
>> and thought using Python and Pygame would be a good choice to prototype in.
>> The 2D example works great, the isometric 3D example also works.  But in the
>> 3rd example, when I press Space to enter into full 3D, it uses a flow
>> control statement to change a calculation.  Even though the calculation is
>> very similar in both isometric and full 3D, it just does not work and I am
>> very confused why.
>>
>>   You can view the source code online in my public Subversion Repository:
>> http://django.kveroneau.info/svn/node1/python/pygame/3danim2.py/cat
>>
>>   I am following the tutorial step-by-step on this website:
>> http://skytopia.com/project/cube/cube.html
>>
>>   That website explains 3D using pseudo-code, the author made it resemble
>> BASIC-like syntax for clarity.  As I read through the tutorial, I coded it
>> in Python, and thus is why there is three python files, one for each phase
>> of the example.
>>
>>   I thought I would ask here, as I noticed many of you on this mailing
>> list using Python for mathematical purposes, and this exception is related
>> to a math operation in a calculation.  This is my first time going in depth
>> with 3D programming and how the math behind it works.  I would of course
>> move to OpenGL once I understand the fundamentals.
>>
>>   On the topic of OpenGL, which OpenGL Python library would you recommend
>> someone who is just diving into GL.  I feel my Python skills are pretty
>> strong at this point.  I understand that Blender can be scripted using
>> Python, would this be a good place to start or should I use a stand-alone
>> python module?
>>
>> Thanks,
>>   Kevin Veroneau
>>
>>
>> _______________________________________________
>> Winnipeg Python Users Group mailing list
>> http://WinniPUG.ca
>> Winnipeg at python.org
>> http://mail.python.org/mailman/listinfo/winnipeg
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/winnipeg/attachments/20110311/1ac6fff3/attachment.html>


More information about the Winnipeg mailing list