I think there is more than one problem here. You may want to get a good book about the C language (Obj-C is just a superset of C).

Variables i, cornerSize are passed to the function from a for loop. i being the counter for the loop, cornerSize being the size of corner desired by the user.

        float retVal;

        retVal = cornerSize*(1-cos(asin(i/cornerSize)));

        return (int)retVal;

Obviously, I'm no whiz at ObjC, and the fact that this keeps return '0' has got me stumped.

Most probably you declared i as an integer value. When dividing with cornerSize, C does not automatically cast this into a floating point value, so the result gets rounded down the next integer value (and maybe always 0 in your case; I don't know).
To solve that, e.g. cast i to a float: (float)i / cornerSize.
When one of both variables is a float, the other will also be converted to a float and the result is also a float.

I would write the formula above that way:

retVal = cornerSize * (1.0 - cos(asin((float)i / cornerSize)));

sin(90); returns 0 as well. When I use Apple's Calculator and ask it to tell me the result of sin(90), it gives me 1.

sin takes the argument in radians, not in degrees.
So you have to use e.g. sin(M_PI / 180 * 90) or sin(M_PI / 2) to get the result of "sinus of 90 degrees".

Regards,
Mani
--
http://mani.de - friendly software
iVolume - listen to music freehand
LittleSecrets - the encrypted notepad

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to