Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.03.2013, 17:08
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 11  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну так и при чем здесь катеты, арккосинусы и прочие гипотенузы? Без них 90 градусов никак не разделить на кол-во "страниц"?
__________________
Reality.getBounds(this);

Старый 02.03.2013, 17:38
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 12  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ну так и при чем здесь катеты, арккосинусы и прочие гипотенузы? Без них 90 градусов никак не разделить на кол-во "страниц"?
Так-то логично, но так уж получилось что Sync ход моих мыслей направил по сложному пути. В итоге вот что получилось:

Код AS3:
var i:int = bitmapPict.length;
const count:uint = i;
while(--i > -1)
{
	bitmapPict[i].rotationY = Math.acos((count - i) / count) * 180 / Math.PI;
}

Ваш, Wolsh, вариант мне больше нравится, т.к. с ним будет легче позиционировать изображения при анимации, спсаибо за идею

Старый 02.03.2013, 20:02
Sync вне форума Посмотреть профиль Отправить личное сообщение для Sync Найти все сообщения от Sync
  № 13  
Ответить с цитированием
Sync
 
Аватар для Sync

Регистрация: Feb 2013
Сообщений: 176
молчу-молчу. сообщения длиннее 1 строчки больше писать не буду.

Старый 02.03.2013, 20:18
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 14  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от Sync Посмотреть сообщение
молчу-молчу. сообщения длиннее 1 строчки больше писать не буду.
Дело не в том из скольких строчек состоит сообщение

Вам, Sync, респект за идею, а Wolsh респект за идею более компактного варианта.

Добавлено через 47 минут
Более компактный вариант:

Код AS3:
var i:int = bitmapPict.length;
const count:uint = i;
while(--i > -1)
{
	bitmapPict[i].rotationY = ((count - i - 1) / count) * 90;
}
bitmapPict.reverse();
Хотя, учитывая то обстоятельство, что при этом придётся преобразовывать массив изображений в обратный массив, не считаю его более компактным (лично для себя), потому что так уж исторически сложилось, что обратные циклы мне больше нравятся чем прямые.

В любом случае, считаю, что оба варианта идеи имеют место быть. Просто тут уже дело вкуса.

Старый 03.03.2013, 09:37
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 15  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Ваш, Wolsh, вариант мне больше нравится
Цитата:
Сообщение от Sync Посмотреть сообщение
Судя по приведенной вами картинке, угол между плоскостями абсолютно тупо равен 90/count [...] Нет никаких гениальных формул.
Цитата:
придётся преобразовывать массив изображений в обратный массив
А преобразовать формулу в обратную — не проще? Что-то типа bitmapPict[i].rotationY = i * count / 90;

Цитата:
не считаю его более компактным (лично для себя) [...] Просто тут уже дело вкуса.
Использовать один раз деление, чтобы узнать угол между листами, и затем одно умножение для каждого листа в цикле вместо монструозной тригонометрической формулы, считающей обратно собственные входные параметры только для того, чтобы раз в 10 замедлить выполнение кода и слегка подогреть процессор — это дело вкуса? Греческий эпос может нравиться Вам больше, чем японские хайку, но в программировании это — вопрос эффективности. И читабельности кода, разумеется.
__________________
Reality.getBounds(this);

Старый 03.03.2013, 10:33
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 16  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Цитата:
Сообщение от Wolsh Посмотреть сообщение
А преобразовать формулу в обратную — не проще? Что-то типа bitmapPict[i].rotationY = i * count / 90;

Использовать один раз деление, чтобы узнать угол между листами, и затем одно умножение для каждого листа в цикле вместо монструозной тригонометрической формулы, считающей обратно собственные входные параметры только для того, чтобы раз в 10 замедлить выполнение кода и слегка подогреть процессор — это дело вкуса? Греческий эпос может нравиться Вам больше, чем японские хайку, но в программировании это — вопрос эффективности. И читабельности кода, разумеется.
Позволю себе не согласиться с вами. Такое решение i * count / 90 не подходит по той причине, что картинок может быть больше 10, а значит угол разворота "книги" будет больше чем 90 градусов. За идею спасибо, но я всё-таки остановлюсь на своём решении.

Что же касается подогрева процессора тригонометрическими вычислениями, то разница в производительности между первым и вторым решением вообще не ощутима, особенно учитывая то обстоятельство, что времени на загрузку картинки надо гораздо больше, чем времени на вычисление её позиционирования. А учитывая тот факт, что расчёт позиционирования можно выполнять во время загрузки каждой картинки, то в этом случае ни для глаза пользователя изменений, ни уж тем более причин для разогрева процессора, каких-либо ощутимых, не будет наблюдаться.

Старый 03.03.2013, 12:43
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 17  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Фраза "что-то типа" не намекает Вам, что дальнейшее писано на коленке? ОК, уточняю: bitmapPict[i].rotationY = i * 90 / count;
Из-за Вашего творческого подхода к оформлению, там, несомненно, где-то еще и единица должна болтаться.
Но это уж Вам, как автору креативного цикла, решать, где. Мне лень расшифровывать эту красоту.
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.