RoboMetricsInit Actionscript
Table of contents | Previous document | Download RoboMetricsInit.as | SWF!T Homepage RCSfile: RoboMetricsInit.as,v Revision: 1.3 Date: 2003/04/22 14:28:12
Copyright 2003 Orgdot AS. All Rights Reserved. http://dev.swfit.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Init script for the geometric robot. Measure all parts. We work with 4*360 degrees to a circle when computing sin / cos, or the motion gets choppy. See TrigonometryTable.as for details.
author Olaf Havnes
version Revision: 1.3 Date: 2003/04/22 14:28:12
since SWFIT1.0
Hook up to the ground generator later.
GROUND = 80;
GROUND_SPEED = -1;
Constants for the downward pull.
BODY_ACC = 2.0;
LEG_PUSH_ACC = 0.8;
BODY_FR = 0.1;
body_speed = 0;
Create the necessary legs.
i = 1;
while (i < body.NUM_PEGS)
{
leg_name = "leg_" add i;
duplicateMovieClip ("leg_0", leg_name, i);
i++;
}
Compute the swing data for the legs.
Find the radius of the leg anchor point.
leg_center_radius = eval ("/:COS_" add int (body.peg_angle_step_half)) * body.peg_center_radius;
If the legs and pegs had no body, the legs could have swung 180 degrees. But ...
peg_leg_dist = Math.sqrt (body.peg_center_radius * body.peg_center_radius - leg_center_radius * leg_center_radius);
peg_leg_body = body.peg_radius + leg_0.leg_width / 2;
The asin function returns regular degrees...
no_swing_angle = 2 * eval ("/:ASIN_" add int (100 * peg_leg_body / peg_leg_dist));
... but we need more trig values to achieve smooth motion.
full_swing_angle = (180 - no_swing_angle) * /:DEG_MULT;
half_swing_angle = full_swing_angle / 2;
no_swing_angle *= /:DEG_MULT;
|
|