Программное обеспечение для создания заставки-часов
привет, видели заставку-часы перед новостями в 21:00 ? также по другим каналам. меня интересуют какое используют программное обеспечения для этого. пишут ли сами программу. буду ждать ответа.
-
Vodka
- Поблагодарили: 1 раз
есть такая заставка "от первого канала". и она вроде не флеше написана.
Вот сделал часы такие, думаю, что сама идея оригинальная
кто-то владеет 3-мерным программированием ну и прочее
http://www.youtube.com/watch?v=AX3EcNPx2V8
кто-то владеет 3-мерным программированием ну и прочее
http://www.youtube.com/watch?v=AX3EcNPx2V8
код сам примерно такой (работает при частоте обновления экрана 70 Гц):
Код: Выделить всё
void DrawClock()
{
int OldBigSymScale;
{
double PI=3.1415926;
double R=200/2;
int xc=320/2, yc=200/2;
static double angle=0;
{
static sec_start=0;
unsigned char hour,min,sec;
GetRealTimeClock(hour, min, sec);
sec_start=sec;
}
static double Speed=1;
static double SpeedAdd=1;
for(double a=0; a>-2*PI*12000; a-=2*PI/70*Speed)
{
int digit=-1;
//scr.clear();
int _clr_=0;
static double spd=0.0001;
static double speed_bukve=0.0001;
static double speed_bukve_add=0.00001;
for(double b=0; b>=-2*PI; b-=2*PI/12)
{
digit++;
//double R=64*sin(angle);
if (Keyb[KEY_SPACE])
{
static int old_angle;
static int sav;
angle=old_angle;
old_angle=sav;
}
angle+=0.0001;
angle+=0.0000001;
angle=spd;
spd+=speed_bukve;
if (Keyb[KEY_A])
{
Keyb.Set(KEY_A,0);
speed_bukve+=speed_bukve_add;
}
if (Keyb[KEY_S])
{
Keyb.Set(KEY_S,0);
speed_bukve-=speed_bukve_add;
}
R=64;
scr.x=320/2 + R*sin(b*angle + PI);//+spd);
scr.y=200/2 + R*cos(b*angle + PI);//+spd);
int dig=digit;
if (digit==0) dig=12;
//scr<<dig;
char d[16];
sprintf(d, "%i", dig);
OldBigSymScale=BigSymScale;
BigSymScale=1;
scr.color=_clr_;
_clr_++;
for(int i=0; i<strlen(d); i++)
scr.putBigSym(d[i], _clr_,7);
BigSymScale=OldBigSymScale;
}
unsigned char hour,min,sec;
GetRealTimeClock(hour, min, sec);
char txt[12]={0};
sprintf(txt,"%02i:%02i:%02i", int(hour), int(min),int(sec));
scr.x=40;
scr.y=0;
scr.color=1;
char clr=15;
if (Keyb[KEY_C]) Speed+=SpeedAdd;
if (Keyb[KEY_V]) Speed-=SpeedAdd;
a=-Speed*2*PI*counter/70.0;
scr.line(xc,yc, xc + R*sin(a+PI), yc + R*cos(a+PI), clr);
int R_sec=60;
scr.line(xc,yc,
xc + R_sec*sin(PI + -2*PI*sec/60),// + -2*PI/60 * (counter)/70),
yc + R_sec*cos(PI + -2*PI*sec/60),// + -2*PI/60 * (counter)/70),
clr-1);
int R_min=70;
double delta=2*PI/60/10;
scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60), yc + R_min*cos(PI + -2*PI*min/60), clr-5);
scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60 + delta), yc + R_min*cos(PI + -2*PI*min/60+delta), clr-5);
scr.line(xc,yc, xc + R_min*sin(PI + -2*PI*min/60 - delta), yc + R_min*cos(PI + -2*PI*min/60-delta), clr-5);
int R_hour=40;
if (hour>12) hour-=12;
scr.line(xc,yc, xc + R_hour*sin(PI + -2*PI*hour/12), yc + R_hour*cos(PI + -2*PI*hour/12), clr-3);
counter++;
if (counter>=70/Speed) counter=0;
//if (Keyb[KEY_ESC]) break;
BigSymScale=OldBigSymScale;
return;
}
}
}
-
gn2
Вникать в код не стал, но бросился в глаза этот фрагмент
angle+=0.0001;
angle+=0.0000001;
angle=spd;
А нафига 2 первых оператора, чтобы дольше работала?
angle+=0.0001;
angle+=0.0000001;
angle=spd;
А нафига 2 первых оператора, чтобы дольше работала?
4: gn2:
Нормальный компилятор их просто выкинет.
Нормальный компилятор их просто выкинет.
-
gn2
5: X3:
Сомневаюсь, что выкинет. Программист может вставлять не нужные операторы для своих целей. Например в ассемблере есть пустая операция nop. Однако я могу вставить сколько угодных таких операций подряд и все они будут присутствовать в окончательном коде. Просто я хочу, чтобы следующая команда начиналась с адреса памяти, через например 16 байт от последней выполненной команды. Или я просто хочу, чтобы эти += выполнялись для замедления выполнения следующей команды. Транслятор, может выдать
предупреждение, но удалять такие операторы молча он не будет.
Сомневаюсь, что выкинет. Программист может вставлять не нужные операторы для своих целей. Например в ассемблере есть пустая операция nop. Однако я могу вставить сколько угодных таких операций подряд и все они будут присутствовать в окончательном коде. Просто я хочу, чтобы следующая команда начиналась с адреса памяти, через например 16 байт от последней выполненной команды. Или я просто хочу, чтобы эти += выполнялись для замедления выполнения следующей команды. Транслятор, может выдать
предупреждение, но удалять такие операторы молча он не будет.
Последний раз редактировалось gn2 05 апр 2012 19:28, всего редактировалось 1 раз.
6: gn2:
Будет с включенной оптимизацией. И циклы пустые выкинет
Будет с включенной оптимизацией. И циклы пустые выкинет
-
gn2
7: X3:
По поводу ассемблера, пустые nop не выкинет и в оптимизированном коде. Смотрел в отладчике SoftIce. Дело в том, что в зарезервированном этими командами место, я в другом фрагменте программы генерирую исполняемый код, например переход на неверный ключ или вы зарегистрированы. Смысл в том, что в дисассемблером коде программы там будут стоять пустые операторы и вскрыть программу для хакера будет несколько сложнее. Правда опытный хакер ее все равно вскроет, если она очень нужна.
По поводу ассемблера, пустые nop не выкинет и в оптимизированном коде. Смотрел в отладчике SoftIce. Дело в том, что в зарезервированном этими командами место, я в другом фрагменте программы генерирую исполняемый код, например переход на неверный ключ или вы зарегистрированы. Смысл в том, что в дисассемблером коде программы там будут стоять пустые операторы и вскрыть программу для хакера будет несколько сложнее. Правда опытный хакер ее все равно вскроет, если она очень нужна.
8: gn2:
Асм тут ни при чем. Я про высокоуровневые языки, которые имеет смысл оптимизировать
Асм тут ни при чем. Я про высокоуровневые языки, которые имеет смысл оптимизировать
-
gn2
9: X3:
Да здесь я не уверен. Но попробую проверить на VC2008. Позже напишу о результатах.
Да здесь я не уверен. Но попробую проверить на VC2008. Позже напишу о результатах.
10: gn2:
Давай. У меня просто дома компилеров нет. Завтра проверю. Тока не забудь оптимизацию полную включить
Давай. У меня просто дома компилеров нет. Завтра проверю. Тока не забудь оптимизацию полную включить
4: gn2
только пришел, да нет это издержки производства
смысла нет конечно в тех операторах
только пришел, да нет это издержки производства
[quote]Я в AAE лучше получается[/quote]
? ? ?
поподробнее, пожалуйста
? ? ?
поподробнее, пожалуйста
10: gn2:
Ну вот я проверил.
Исходный код:
Компиляция cl /c /O0 /Fa:
Компиляция cl /c /Ox /Fa:
Ну вот я проверил.
Исходный код:
Код: Выделить всё
double fun()
{
double ret_val = 0.;
ret_val += 10.;
ret_val += 20.;
ret_val = -1.;
return ret_val;
}Код: Выделить всё
_fun PROC
; Line 2
push ebp
mov ebp, esp
sub esp, 8
; Line 3
fldz
fstp QWORD PTR _ret_val$[ebp]
; Line 4
fld QWORD PTR _ret_val$[ebp]
fadd QWORD PTR __real@4024000000000000
fstp QWORD PTR _ret_val$[ebp]
; Line 5
fld QWORD PTR _ret_val$[ebp]
fadd QWORD PTR __real@4034000000000000
fstp QWORD PTR _ret_val$[ebp]
; Line 6
fld QWORD PTR __real@bff0000000000000
fstp QWORD PTR _ret_val$[ebp]
; Line 7
fld QWORD PTR _ret_val$[ebp]
; Line 8
mov esp, ebp
pop ebp
ret 0
_fun ENDP
Код: Выделить всё
_fun PROC
; Line 7
fld QWORD PTR __real@bff0000000000000
; Line 8
ret 0
_fun ENDP-
gn2
15: X3:
Я то же проверил. Ты был прав.
; 9 : int a,b;
; 10 : b=1; a=0;
; 11 : a+=10;
; 12 : a+=5;
; 13 : a=b;
; 14 :
; 15 : return a;
00000 b8 01 00 00 00 mov eax, 1
; 16 : }
00005 c3 ret 0
Строки с 9 по 15 были заменены одой командой пересылки 1 в регистр еах. Что вобщем то и нужно было. Действительно компилятор выкинул все лишнее.
Я то же проверил. Ты был прав.
; 9 : int a,b;
; 10 : b=1; a=0;
; 11 : a+=10;
; 12 : a+=5;
; 13 : a=b;
; 14 :
; 15 : return a;
00000 b8 01 00 00 00 mov eax, 1
; 16 : }
00005 c3 ret 0
Строки с 9 по 15 были заменены одой командой пересылки 1 в регистр еах. Что вобщем то и нужно было. Действительно компилятор выкинул все лишнее.
16: gn2:
работа у меня такая
Попробуй еще циклы пустые компилировать
работа у меня такая
Андрей, привет!
Хотел поинтересоваться у тебя, насколько компилятор сложная штука как программный продукт ?
Хотел поинтересоваться у тебя, насколько компилятор сложная штука как программный продукт ?
18: Wiz:
Скачай и посмотри.
Скачай и посмотри.
19: X3:
Спасибо! Скачаю и посмотрю.
Спасибо! Скачаю и посмотрю.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей