k@s |
Отправлено: 25.02.2005, 16:54 |
|
Не зарегистрирован
|
Есть на форме объект, он имеет угол поворота. Как мне сдвинуть этот объект
в сторону поворота? Проблема в том, что sin и cos считаются неправильно( самим Билдером 6! ).
Вот формулы:
CODE |
TPoint Coords;
Coords.y -= speed*sin( angle*M_PI/180.0f );
Coords.x += speed*cos(angle*M_PI/180.0f );
|
Подскажите, пожалуйса, что мне делать? |
|
Bond |
Отправлено: 25.02.2005, 17:37 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 142
|
попробуй вставить вот это
CODE | char aaa[256]; double speed = 50;
int angle = TrackBar1->Position;
Label1->Caption = IntToStr(angle) + " градусов";
double tmpAngle = angle*M_PI/180.0f;
sprintf( aaa, "%6.3f", tmpAngle );
Label2->Caption = AnsiString(aaa) + " радиан";
Shape1->Left = (Width / 2) + speed * cos( tmpAngle );
Shape1->Top = (Height / 2) — speed * sin( tmpAngle );
|
|
|
Bond |
Отправлено: 25.02.2005, 17:40 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 142
|
тут TrackBar1->Position изменяется от 0 до 360
Shape1 бегает по кругу, центр которого в середине формы, а радиус 50
|
|
Guest |
Отправлено: 26.02.2005, 09:42 |
|
Не зарегистрирован
|
Кстати, что касается самих функций sin() и сos() — имеют тип double,
и для повышения точности я обычно пользуюсь
функциями sinl() и cosl() — long double
|
|