dcsimg
A Flash Developer Resource Site

Page 1 of 2 12 LastLast
Results 1 to 20 of 29

Thread: Friends of ED book on math

  1. #1
    Member
    Join Date
    Feb 2002
    Posts
    79
    Has anyone bought the Friends of ED book Flash and Math(i forgot the exact title). I saw it today in a bookstore and it looked interesting. Any opinions?

  2. #2
    Member
    Join Date
    Feb 2002
    Location
    Boston, MA
    Posts
    76
    i heard it's really good. not only do you learn the examples in the book but you also get the knoledge for using this stuff in your own project. it's the next book i'm buying. if you want to know how it is email me and when i get it i tell you. peace

  3. #3
    Member
    Join Date
    Feb 2002
    Location
    Boston, MA
    Posts
    76
    the book has it's own site,
    http://www.friendsofed.com/fmc/index.html

  4. #4
    Member
    Join Date
    Feb 2002
    Posts
    79
    I went ahead and bought it. It is good. I have enjoyed playing around with it so far.

  5. #5
    Senior Member
    Join Date
    Jan 2002
    Posts
    368
    i thought it was pretty cool too. but then again, i'm biased

  6. #6
    Junior Member
    Join Date
    Dec 2000
    Posts
    10

    Smile

    I bought it, because I need more maths for my flash and I wasn't awake enough at school. Its great - at the moment I'm working my way through David Hirmes work and I've learnt loads. I make his examples and then start changing them - today I was trying to work out a way to get a 1 to a 100 value from a Math.sin(i*(Math.PI/180)) starting point, went round the houses, phoned friends, then discovered two examples down the line that he's done it already, and it was right there in the book!! (but my way worked too - his is just more elegant!

    The best of my flash books.

  7. #7
    general rule bender Gloomycus's Avatar
    Join Date
    Nov 2000
    Location
    ontario canada
    Posts
    1,538
    I'd buy it but the American to Canadian conversions are too high - it would cost me well over $70.

  8. #8
    general rule bender Gloomycus's Avatar
    Join Date
    Nov 2000
    Location
    ontario canada
    Posts
    1,538
    By the way Bit, your methods of creating elasticity, gravity are far too complex. There are easier methods.

  9. #9
    Owner of the thread tublu's Avatar
    Join Date
    Nov 2000
    Posts
    2,430
    they also have some good examples / FLAs on the site ... some of they are pretty amazing as well !!

  10. #10
    Senior Member
    Join Date
    Jan 2002
    Posts
    368
    Originally posted by Gloomycus
    By the way Bit, your methods of creating elasticity, gravity are far too complex. There are easier methods.

    please share.

  11. #11
    Senior Member ironmallet's Avatar
    Join Date
    Feb 2001
    Posts
    252
    distSQ = dx*dx+dy*dy;
    force = grav*b[j].m*b[k].m/distSQ;
    total = Math.abs(dy)+Math.abs(dx)
    ddx = (force*dx)/total;
    ddy = (force*dy)/total;


    Bit, my gravity routine is based on yours, so the variables might look familiar. I avoided trig by just splitting the total force proportionately between the x and y axis. It's correct, but I don't know that it is better, since Math.abs isn't necessarily quicker than trig, but it is different. I'm curious about the much less complex method for elasticity and gravity that Gloomycus has.

  12. #12
    Senior Member
    Join Date
    Jan 2002
    Posts
    368
    i'm still waiting.

    "my" method for gravity:

    gravity=1;
    vy+=gravity;
    mc._y+=vy;

    i honestly want to see something less complex than that.

    elasticity/spring:

    k=.2;
    dx=targetx-mc._x;
    dy=targety-mc._y;
    ax=dx*k;
    ay=dy*k;
    vx+=ax;
    vy+=ay;
    mc._x+=vx;
    mc._y+=vy;

    i don't see how you could get a spring with less than that. of course you could COMBINE several of the steps and get something like:

    mc._x+=vx+=((targetx-mc._x)*.2);
    mc._y+=vy+=((targety-mc._y)*.2);

    but that's the same thing in shorthand.

  13. #13
    Senior Member
    Join Date
    Jan 2002
    Posts
    368
    ironmallet, i did a test with your method and it does not give the same values as using trig. it's about .74 what the actual values would be. maybe close enough for flash though

  14. #14
    Senior Member ironmallet's Avatar
    Join Date
    Feb 2001
    Posts
    252
    be warned-- this post is 100% bunk, I thought it made some sense at the time, read it if you slow down to look at car wrecks

    It's different by a constant, so it's proportionally correct. You just have to change the 'gravitational constant', G.
    I'll call the trig G, 'G2'
    my supposition is that G=k*G2, where k is always the same

    two examples:
    ball 1 mass = 50kg, position=1m,3m (over and down)
    ball 2 mass = 100kg,position=3m,4m

    METHOD 1 (similar triangles)
    so dist=sqrt(5), so distsq=5

    force = G*(50*100)/5 = G*1000

    total = 3

    forcex = force*dx/total = g*1000*2/3 = 666G
    forcey = force*dx/total = g*1000*1/3 = 333G

    METHOD 2 (trig)
    dist = sqrt(5), so distsq=5

    force = G2*(50*100)/5 = G2*1000

    angle (in radians) = atan(-1/2) = -.4636
    c=cos(angle)= .8944
    s=sin(angle)= .4472

    forcex=c*force=G2*1000*.8944=894.4*G2
    forcey=s*force=G2*1000*.4472=447.2*G2

    so it appears that G=.75*G2, so k=.75

    For the next i'll use 100 for both of the masses, and eliminate the units.
    position ball 1 (67,89)
    position ball 2 (115,-30)
    dx=48, dy=-119
    METHOD 1
    so distsq=16465
    force=G*10000/16465
    total=167
    forcex=(48/167)*(G*10000/16465)=.174*G
    forcey=(119/167)*(G*10000/16465)=.432*G

    METHOD 2
    distsq=16465
    force=G2*10000/16465
    angle=atan(-119/48)=-1.1874
    c=cos(angle)=.374
    s=sin(angle)=.927
    forcex=(.374)*(G2*10000/16465)=.227*G2
    forcey=(.927)*(G2*10000/16465)=.563*G2

    this time I got .77 for k, but that's rounding error.

    anyway the point is that as long as the two forces change by the same factor, and that factor is the same for all angles, and is unaffected by distance, it's just a matter of tweaking the gravitational constant
    [Edited by ironmallet on 05-19-2002 at 12:11 AM]

  15. #15
    Senior Member ironmallet's Avatar
    Join Date
    Feb 2001
    Posts
    252
    you know what, i can't think of any hard reasons why my way should work.

    my method is basically claiming that

    cos(atan(a/b))=k*(a/(a+b))

    which just isn't so

    weird, it makes sense-sortof

  16. #16
    Senior Member ironmallet's Avatar
    Join Date
    Feb 2001
    Posts
    252

    success at proving failure!

    okay, sorry for blowing up this thread and all, but I figured out for sure that my method does not work!

    In this example, the stationary particle figures out the forces using trig, the mouse following particle figures out the forces using the similar triangles method (which I still need to think through why it doesn't work). G is calculated and you can watch it change from .708 (sin 45) to up to 1. Not exactly a constant

    http://www.ironmallet.com/flashkit/gravitydemo.html

    Thanks for calling my attention to this bit, actually the first time I used this method was in 11th grade in C, on an apple ][. I've never noticed the error before, it's subtle.

  17. #17
    Senior Member
    Join Date
    Jun 2000
    Posts
    911
    Originally posted by ironmallet
    distSQ = dx*dx+dy*dy;
    force = grav*b[j].m*b[k].m/distSQ;
    total = Math.abs(dy)+Math.abs(dx)
    ddx = (force*dx)/total;
    ddy = (force*dy)/total;
    This code is very wrong. The variable "total" makes no sense. If you want your code to work "total" should hold the distance between the two objects.
    Code:
    distance_squared = delta_x * delta_x + delta_y * delta_y;
    distance = Math.sqrt (distance_squared);
    
    force_gravity = G * mass1 * mass2 / distance_squared;
    
    force_x = force_gravity * delta_x / distance;
    force_y = force_gravity * delta_y / distance;
    In the calculation of "force_x" and "force_y" you calculate the sine and cosine of the angle between the objects by dividing "delta_x" and "delta_y" by "distance." No need for a trigonometric function.

  18. #18
    Senior Member ironmallet's Avatar
    Join Date
    Feb 2001
    Posts
    252
    Uh, yeah.

    yes, thank you.

    That's the way to avoid the trig function. The main problem with the 'total' ly wrong way I was doing it is, it looked like it worked... thanks bit and ahab.

    It's so painfully obvious now that in a 3 4 5 triangle

    3/5 not 3/7 of the force goes one way
    4/5 not 4/7 of the force goes the other

    criminey

    ahab, btw, your site is sweet-- the 'batting demo' is sick.
    [Edited by ironmallet on 05-19-2002 at 12:06 AM]

  19. #19
    Gross Pecululatarian Ed Mack's Avatar
    Join Date
    Dec 2001
    Location
    UK
    Posts
    2,954

    I was just reading down this and saw Bit's post

    I think

    mc._y += (vy++);

    Is a lot simpler than:

    gravity=1;
    vy+=gravity;
    mc._y+=vy;

    So there!

  20. #20
    Senior Member
    Join Date
    Jan 2002
    Posts
    368
    as i said in the same post, you can combine several steps, but that doesn't make the formula simpler, merely makes the code less understandable and less maintainable. so there!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center