ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

24.11.2008, 04:23
|
|
Новичок
Регистрация: 12.06.2008
Сообщений: 2
Провел на форуме: 49806
Репутация:
0
|
|
Не совсем по С, но все же:
Есть нарисованный прямоугольник типа TRect(Borland C++) Rect(x1, y1, x2, y2)
Нужно его поворачивать вокруг заданной точки.
Неподскажите как это можно "провернуть"?
|
|
|

24.11.2008, 12:27
|
|
Новичок
Регистрация: 18.11.2008
Сообщений: 5
Провел на форуме: 10211
Репутация:
0
|
|
Математика в руки! Пишу первое что пришло в голову, это выразить координаты точек через sin и cos.
x = R cos a
y = R sin a
Код:
...
#include <math.h>
...
/* убейте но не помню навскидку как называеться структура, вроде как Point, но не буду врать, потому определю для примера*/
struct cord
{
int x;
int y;
}cord;
...
cord RotateCordinate(int R, float a) // радиуc окружности вращения, угол
{
cord Cordinate;
Cordinate.x = cos(a)*R;
Cordinate.y = sin(a)*R;
return Cordinate;
}
...
// собсно твой код
float Alpha = 0; // угол
int R; // радиус = половине длинны диагонали твоего прямоугольника
cord Rectangle_1, Rectangle_2; // твои координаты
while(...) // не знаю, для чего тебе нужно, потому условие выхода если нужно определишь сам
{
Clear(); // очищаем поле для рисования
Rectangle_1 = RotateCordinate(R, Alpha);
Rectangle_2 = RotateCordinate(R, Alpha+180); // для противоположной координаты +180 градусов
Rect(Rectangle_1.x, Rectangle_1.y, Rectangle_2.x, Rectangle_2.y); // (*)
Alpha += 0,01; // смещаем угол
delay(40); // примерная скорость 25 кадров в сек.
}
...
В пункте (*) можно соответственно приплюсовать ровнение кординат, т.е. где именно будет центр окружности. Можно еще сделать через уравнение окружности. Соответственно и для трехмерных обьектов, только нужно использовать уровнение элипса.
|
|
|

24.11.2008, 13:34
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
Провел на форуме: 146826
Репутация:
17
|
|
Помогите пожалуйста:
Компилятор Visual C++ 2005
Как настроить, чтобы скомпилированная программа запускалась и на другом компьютере а не только на моем?
Только конкретно, там, какие галочки и т.п.
Спасибо.
|
|
|

24.11.2008, 13:59
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
agrofyl2, попробуй:
Project -> Settings -> C/C++ -> Code Generation
Там есть Use Run-time Library. Ставь либо Multithreaded, либо Debug Multithreaded.
З.Ы. или просто носи с собой нужные библиотеки 
|
|
|

24.11.2008, 23:39
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
Провел на форуме: 3371897
Репутация:
1462
|
|
while (true){
if(GetKeyboardState(keysState)==0) MessageBox(0,"Error",0,0);
if(keysState[VK_LSHIFT] > 0 ){
MessageBox(0,"Pushed","ok",0);
return 0;
}
Sleep(100);
}
никакого эффекта :/
(нада именно через GetKeyboardState)
|
|
|

25.11.2008, 00:36
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Сообщение от WinUser.H
/*
* VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
* Used only as parameters to GetAsyncKeyState() and GetKeyState().
* No other API or message will distinguish left and right keys in this way.
*/
Так, вроде работает:
Код:
while(true)
{
if(GetKeyboardState(keysState)==0)
{
MessageBox(0,"Error",0,0);
return 1;
}
if(keysState[VK_SHIFT])
{
MessageBox(0,"Pushed","ok",0);
return 0;
}
Sleep(100);
}
только вот Shift должен быть нажат во время запуска проги
|
|
|

25.11.2008, 11:22
|
|
Познающий
Регистрация: 24.11.2008
Сообщений: 40
Провел на форуме: 89814
Репутация:
0
|
|
Начал изучать С++ в папке с прогой есть Exampels вот я выбрал Hello! Когда я нажимаю выполнить или отладка у меня пишет Данный Файл не откомпилирован... что делать?
|
|
|

25.11.2008, 12:09
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
Сообщение от Sibogatov
Начал изучать С++ в папке с прогой есть Exampels вот я выбрал Hello! Когда я нажимаю выполнить или отладка у меня пишет Данный Файл не откомпилирован... что делать?
возможно....скомпилировать?
|
|
|

25.11.2008, 12:27
|
|
Новичок
Регистрация: 18.11.2008
Сообщений: 5
Провел на форуме: 10211
Репутация:
0
|
|
ммм... ответ прост: Откомпилировать! Позвольте полюбопытствовать: а в какой среде разработки вы программируете? Из всех установленных у миня:
Builder 6.0 Run->Run (F9)
Microsoft Vsual C++ 6.0 Build->Build (F7) или Build->Execute (Ctrl+F5)
Visual Studio 2005 Build->Build Solution (F6)
Turbo C 3.0 Compile->Compile (Alt+F9) или Compile->Make (F9), а потом Run->Run (Ctrl+F9)
В Dev-C++ не помню, но по моему F9 точно компилит и запускает.
|
|
|

25.11.2008, 14:32
|
|
Познающий
Регистрация: 24.11.2008
Сообщений: 40
Провел на форуме: 89814
Репутация:
0
|
|
всё сделал... а можно примеры маленьких программ каких не буть?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|