Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2013, 20:14   #1
zink
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 36
По умолчанию Аналоговые часы из VS2010 в Builder 6.0

Здравствуйте, у меня есть рабочий код аналоговых часов, написанный в mvs2010 с использованием OpenGL. Помогите адаптировать под Builder 6.0, возможно открытие на форме в Panel или чем-то другом.

Код:
#include "stdafx.h"
#include <GL/glut.h>
#include <ctime>
#include "math.h"


void display()
{
  long double M_PI=acos(-1.0);
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_LINES);
  for (int i = 0; i < 12; ++i)
  {
      float x = sin(2 * M_PI / 12 * i);
      float y = cos(2 * M_PI / 12 * i);
      glVertex2f(400 * x, 400 * y);
      glVertex2f(370 * x, 370 * y);
  }
  time_t t = time(0);
  tm *lt = localtime(&t);
  int h = lt -> tm_hour;
  int m = lt -> tm_min;
  int s = lt -> tm_sec;
  float x = sin(2 * M_PI * (h * 60 + m) / 12 / 60);
  float y = cos(2 * M_PI * (h * 60 + m) / 12 / 60);
  glVertex2f(0, 0);
  glVertex2f(200 * x, 200 * y);
  x = sin(2 * M_PI * m / 60);
  y = cos(2 * M_PI * m / 60);
  glVertex2f(0, 0);
  glVertex2f(350 * x, 350 * y);

  x = sin(2 * M_PI * s / 60);
  y = cos(2 * M_PI * s / 60);
  glVertex2f(0, 0);
  glVertex2f(380 * x, 380 * y);
  glEnd();
  glutSwapBuffers();
}

void timer(int = 0)
{
  display();
  glutTimerFunc(10, timer, 0);
}

int main(int argc, char **argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  glutInitWindowSize(400, 400);
  glutInitWindowPosition(800, 300 - 150 - 20);
  glutCreateWindow("Clock");
  glClearColor(0, 0, 0, 1.0);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho (-500, 500, -500, 500, -500, 500);
  glutDisplayFunc(display);
  timer();
  glutMainLoop();
}
zink вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы, аналоговые часы с будильником zink Помощь студентам 3 27.12.2012 08:58
Аналоговые часы. Часовые пояса. xeoni Помощь студентам 4 05.05.2011 09:08
Аналоговые часы (WinAPI + GDI + C++) ? Praid Общие вопросы C/C++ 4 15.05.2010 19:45
Аналоговые часы hamlook Microsoft Office Excel 13 09.03.2010 11:08
Аналоговые часы skalt12 Общие вопросы Delphi 12 07.07.2009 15:01