Convert from C into C#?

Started by
7 comments, last by Rebooted 19 years, 2 months ago
Apologies.. this was in a thread i already made but thought it would get more views out here in a new thread. I'm developing an Air Hockey game in C# and i'm trying to simulate a collision between two ellipses.. the paddle which the user is controlling with the mouse (e.X, e.Y) and also a puck which should move it the paddle collides with it. I have the collision detection working correctly. I think i got an example using vectors on how to simulate a collision between these two ellipses. Also, i understand how to get the velocity of the puck? It's specified already in my source code (x_vel, y_vel) how would i get the velocity of the paddle the user is moving with the mouse? The source code i found is unfortunately in C.. can anyone convert this to C# as can't find ways to implement DotProd or Normal in C#. Many thanks in advance. Squiller.

void collision (void)
{
// ball movement (Yes?)

x1 += xVect1;
y1 += yVect1;

x2 += xVect2;
y2 += yVect2;

// test for collision

if (distance > radius1 + radius2)
{
return;
}

// if we get here, the balls have collided,
// so we do the collision calculations

xVelocity = xVect2 - xVect1;
yVelocity = yVect2 - yVect1;

// Normalize
Normal (x1 - x2, y1 - y2, normal);

approach = DotProd(normal[0], normal[1], xVelocity, yVelocity);

// calculate velocity change

xNewVect = normal[0] * approach;
yNewVect = normal[1] * approach;

// change velocities

xVect1 += xNewVect;
yVect1 += yNewVect;

xVect2 -= xNewVect;
yVect2 -= yNewVect;
}

Advertisement
isnt that same with c#?
i have done some homeworks of the school (easy ones) in c#, and it seems to me the same

maybe the only thing to change would be this:
void collision (void)
to
public void collision()

and when you callthe 2 methods (dotproduct and normal) , well just create an instance of the class.
class c
{
// something first
c instance = new instance();
instance.normal(xxxxx);
intance.dotproduct(xxxx);
// something then...
}
Use static functions.

class Whatever {  public static double DotProduct( double a, double b, double c, double d ) {      return a*c + b*d;  }}// later...double x = Whatever::DotProduct( foo, bar, baz, foobar );


An excellent way would also be to implement a vector class (since vectors can be easily represented by objects), although I'm almost sure there's a 2D vector C# class laying around somewhere.
To answer your other question, in your simplistic simulation the velocity of an object is the distance it moves between two updates. To find the velocity of the paddle, substract its previous position from the current position.
Thank you all for the helpful suggestions and tips.

Will give it a go and report back to ye here with how i did.

Cheers again!

Squiller
Quote:Original post by ToohrVyk
... Whatever::DotProduct( foo, bar, baz, foobar ); ...

Make that Whatever.DotProduct( foo, bar, baz, foobar );. In C# they changed the namespace scope specification punctuator from '::' to '.'. Sometimes I make the opposite mistake when I write in C++. [wink]
I knew that! :)
How's the development of the C# compiler going for Linux? I've stayed away from C# because I want to be as "platform-independant" as possible... and it seems I can stick with that with either Java or C++ (haven't learned Java enough yet, so C++ it is!).
-John "bKT" Bellone [homepage] [[email=j.bellone@flipsidesoftware.com]email[/email]]
Mono is coming along, they've started making good progress on system.windows.forms recently.

This topic is closed to new replies.

Advertisement