Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6] Вращение треугольника по горизонтали 
:(
    Опции темы
aniuta
  Дата 16.3.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.3.2008

Репутация: нет
Всего: нет



Две недели не могу доделать задание: заставить треугольник вращаться по горизонтали.  smile
При 
Код
For i = 1 To 11
 (157 строчка на вкладке "катится") он "шагает" немножко вниз, а при 
Код
For i = 1 To 10
 "шагает" немножко вверх.  Дробные варианты вроде 
Код
For i = 1 To 21 \ 2
 не работают, похоже, VB округляет значения. smile Опытные программисты, подскажите пожалуйста, что надо исправить в коде, чтобы треугольник при вращении не "съезжал" с оси x?

С надеждой жду ваших советов! smile 

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  anuta.FRM 14,39 Kb
PM MAIL   Вверх
cardinal
Дата 16.3.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Посмотри вот тут пример вращения объекта
http://forum.vingrad.ru/forum/topic-22163.html

писал сто лет назад, но точно знаю что работало... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
JusTalionis
Дата 17.3.2008, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 576
Регистрация: 11.7.2006

Репутация: нет
Всего: 17



Цитата(aniuta @  16.3.2008,  19:10 Найти цитируемый пост)
Дробные варианты вроде 
For i = 1 To 21 \ 2
 не работают, похоже, VB округляет значения.
 Конечно не работают! Ведь i у тебя здесь что? - счетчик других действий! Не могут же эти действия выполниться наполовину?!..
Тебе надо чуть-чуть изменить величину элементарного шажка, то есть, например fi = 3.14159 / 16.5

И еще совет. Делать задержку пустым циклом 
Код
For z=1 To 5000000: Next z
 нехорошо!
Во первых, потому, что такая задержка окажется разной на разных машинах, а во-вторых - потому что это изрядно тормозит всю систему.
Лучше делать так:
добавляешь в своем проекте модуль и пишешь в нем: 
Код
 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

И везде вместо пустого цикла ставишь 
Код
 Call Sleep (t) 
 где t - желаемое время задержки в миллисекундах.
Такая задержка будет на всех машинах одинаковой, и разгрузит систему для выполнения других процессов, пока твой ожидает.

PM MAIL   Вверх
Akina
Дата 17.3.2008, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aloha
Дата 17.3.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 97
Всего: 165



aniuta

Проблема в угле поворота. У тебя угол поворота равен Pi/16:
Код
fi = 3.14159 / 16

а количество итераций кратно 11
Код
For i = 1 To 11

При проходе вправо фигура поворачивается на угол 33/16 Pi, т.е. чуть больше чем на 2 Pi.
Поэтому она и “заваливается”.
Самый простой способ лечения такой: в процедуре cmd_катится_Click() объяви локальный угол
Код
fi = 3.14159 / 16.5
 т.е. просто добавь пару строк:

Код

Private Sub cmd_катится_Click()
Dim x, xp As Double
Dim y, yp As Double
Dim i, q, r As Double
Dim z As Double
Dim fi As Double
fi = 3.14159 / 16.5


PM   Вверх
aniuta
Дата 19.3.2008, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.3.2008

Репутация: нет
Всего: нет



Большое спасибо каждому, кто помог мне с решением этой очень сложной для меня задачи! В особенности спасибо Aloha за исчерпывающий ответ!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.