Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/46: Рейтинг темы: голосов - 46, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20

Система координат и ее вращение. OpenGl и C++ Builder

09.05.2011, 00:01. Показов 9576. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу диплом на C++ с использованием openGL. Программа должна строить графики, поверхности первого и второго порядка в 3d-пространстве.

Для начала мне нужно нарисовать систему координат. вот на этом я и застопорилась(( Систему координат она то рисует, но не так как мне надо. надо чтобы она была нарисована по центру экрана и выглядела приблизительно так: https://www.cyberforum.ru/atta... 1304883244.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <vcl.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <iso646.h>
#pragma hdrstop
#include "NewFormUnit.h"
#include "MainUnit.h"
//---------------------------------------------------------------------------
#pragma comment(lib, "GLU32.lib")
#pragma comment(lib, "GLAUX.lib")
#pragma package(smart_init)
#pragma resource "*.dfm"
TNewForm *NewForm;
int alpha=0, beta=0;
//---------------------------------------------------------------------------
__fastcall TNewForm::TNewForm(TComponent* Owner)
        : TForm(Owner)
{}
//---------------------------------------------------------------------------
// функция вызывается всякий раз, когда поступает сообщение от мыши
void CALLBACK mouse ( AUX_EVENTREC* event )
{static int x0, y0=-12345;
if(y0!=-12345)
 {   alpha += event->data[AUX_MOUSEX] - x0;
     beta += event->data[AUX_MOUSEY] - y0; }
x0 = event->data[AUX_MOUSEX];
y0 = event->data[AUX_MOUSEY];}
 
//функции-обработчики стрелок клавиатуры
void CALLBACK Key_LEFT(void)
{alpha -= 5;}
 
void CALLBACK Key_RIGHT(void)
{alpha += 5;}
 
void CALLBACK Key_UP(void)
{beta += 5;}
 
void CALLBACK Key_DOWN(void)
{beta -= 5;}
 
void CALLBACK display(void)
{
 //glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
// сохраняем старое положение сцены
 glPushMatrix();
  //вращаемся вокруг осей Х и Y
   glRotated(alpha, 0,1,0);
   glRotated(beta, -1,0,0);
   NewForm->Draw();
//возвращаем координату на место
 glPopMatrix();
  auxSwapBuffers();}
 
void __fastcall TNewForm::FormResize(TObject *Sender)
{
   glViewport( 0, 0, Width,Height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-Width, Width, -Height, Height, -200,200);  //какие данные подставить сюда, чтобы  система координат была в центре экрана в зависимости от размеров окна?
gluLookAt(100,100,100, 100,-50,-10, 0,1,0); // а какие сюда, чтобы удобно было смотреть на сцену
glMatrixMode( GL_MODELVIEW );} 
//---------------------------------------------------------------------------
void __fastcall TNewForm::Draw()
{  glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
  glColor3f(0, 0, 0);
  glBegin(GL_LINES);
            glVertex4d(0.0, Height/2, 0.0, 1.0);
            glVertex4d(Width-1, Height/2, 0.0, 1.0);
            glVertex4d(Width/2, 0.0, 0.0, 1.0);
            glVertex4d(Width/2, Height-1, 0.0, 1.0);
            glVertex4d(0.0, 0.0, 0.0, 1.0);
            glVertex4d(Width-1, Height-1, 199.0, 1.0);
      glEnd();
    glFlush();
    SwapBuffers(ghDC);}
//---------------------------------------------------------------------------
BOOL bSetupPixelFormat(HDC hdc)
{    PIXELFORMATDESCRIPTOR pfd, *ppfd;
    int pixelformat;
     ppfd = &pfd;
     ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
    ppfd->nVersion = 1;
    ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    ppfd->dwLayerMask = PFD_MAIN_PLANE;
    ppfd->iPixelType = PFD_TYPE_RGBA;
    ppfd->cColorBits = 32;
    ppfd->cDepthBits = 32;
    ppfd->cAccumBits = 0;
    ppfd->cStencilBits = 0;
    if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0)
    {        MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
             return FALSE;  }
    if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
    {         MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
               return FALSE;    }
    return TRUE;}
//---------------------------------------------------------------------------
void __fastcall TNewForm::FormCreate(TObject *Sender)
{   ghDC = GetDC(Handle);
   if (!bSetupPixelFormat(ghDC))
      Close();
   ghRC = wglCreateContext(ghDC);
   wglMakeCurrent(ghDC, ghRC);
   glClearColor(1.0,1.0,1.0,1.0);
   auxIdleFunc(display); // с этих 3 строчек начинает ругаться
   FormResize(Sender); // ругается
   auxReshapeFunc(FormResize); // ругается
   glEnable(GL_COLOR_MATERIAL);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_LIGHTING);
   glEnable(GL_LIGHT0);
    float p[4]={3,3,3,1},
           d[3]={-1,-1,-3};
   glLightfv(GL_LIGHT0,GL_POSITION,p);
   glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,d);
    auxKeyFunc(AUX_LEFT, Key_LEFT); //ругается
    auxKeyFunc(AUX_RIGHT, Key_RIGHT);//ругается
    auxKeyFunc(AUX_UP, Key_UP);//ругается
    auxKeyFunc(AUX_DOWN, Key_DOWN); //ругается
    auxMouseFunc(AUX_LEFTBUTTON, AUX_MOUSELOC, mouse); //ругается
    auxMainLoop(display);
}
как мне сделать еще так чтобы, моя система координат строилась определенного масштаба в зависимости от координат рисуемого объекта (если координаты далеко др от др или объект очень большой. то система координат сжималась или соответственно наоборот)

еще надо, чтобы по одновременному нажатию левой кнопки мыши и по расположению курсора я могла вращать всю сцену. Делала это с помощью glaux.lib (нашла на одном сайте), но у меня не определяет эти функции. Если есть какой другой способ, подскажите.
Файлы скачала все и подключила (glaux.lib, glaux.h, glaux.h) . Не знаю в чем дело, выдает ошибки:

[Linker Error] Unresolved external 'auxInitPosition' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxInitDisplayMode' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxInitWindowA' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxIdleFunc' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxReshapeFunc' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxKeyFunc' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxMouseFunc' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxSwapBuffers' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ
[Linker Error] Unresolved external 'auxMainLoop' referenced from D:\STUDY\3D\NEWFORMUNIT.OBJ


Помогите, люди добрые, кто чем может, иначе мне, бедной студентки и диплома не написать и головы не сносить!(( Буду очень благодарна!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2011, 00:01
Ответы с готовыми решениями:

Система координат в opengl
Задание такое: нужно с помощью opengl отобразить трехмерную систему координат, в которой угол между осями равен 120 градусов, т.е. показать...

Система координат OpenGL
Привет товарищи программеры-художники помогите мне пожалуйста Начал изучение OpenGL на Delphi читаю книжку Краснова, ее только под...

Система координат в Qt OpenGL
Сильно ограничено окно в OpenGL. Координаты же от -1.0 до 1.0 по осям x и y, где (-1.0; -1.0) - левый нижний угол, а (1.0; 1.0) правый...

14
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.05.2011, 00:58
Цитата Сообщение от mal1na Посмотреть сообщение
как мне сделать еще так чтобы, моя система координат строилась определенного масштаба в зависимости от координат рисуемого объекта (если координаты далеко др от др или объект очень большой. то система координат сжималась или соответственно наоборот)
я не большой спец в OpenGL, но по-моему для этого вместо ортогональной системы - glOrtho, следует испольтовать перспективную glFrustum
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
09.05.2011, 01:12  [ТС]
Цитата Сообщение от Maxwe11 Посмотреть сообщение
я не большой спец в OpenGL, но по-моему для этого вместо ортогональной системы - glOrtho, следует испольтовать перспективную glFrustum
Насколько я понимаю, glFrustum отсекает сцену, и если мой объект будет выходит за пределы видимого отображения, заданного этой функции, то он будет обрезаться. Я пробовала эту функцию, но возможно я ошибаюсь.

"Функция glFrustum строит матрицу перспективного проецирования. Параметры (left, bottom, znear) и (right, top, znear) определяют координаты точки на ближней плоскости отсечения, которые отображаются в левый нижний и правый верхний углы окна при условии, что наблюдатель расположен в точке (0, 0, 0). Параметр zfar определяет расположение дальней плоскости отсечения."
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.05.2011, 01:25
да, но только так можно добится эффекта - чем дальше объект тем он меньше
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
09.05.2011, 02:56  [ТС]
я, наверно, неправильно выразилась.
имела ввиду, если объект маленький, то программа должна сама увеличивать масштаб (т е как бы растягивать систему координат) и наоборот.
а как насчет остальных вопросов?
кто-нибудь знает и может что подсказать?
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,377
Записей в блоге: 6
12.05.2011, 18:16
mal1na, если объекты 3д, то, по-моему, проще и реальнее использовать перспективную проекцию, которую достаточно просто создать ф-ией gluPrespective.

А если есть перспектива, то достаточно приближать/отдалять камеру от объекта и тем самым регулировать масштаб. Найти положение камеры достаточно просто если предворительно строить все графики в центре сцены. Самая далёкая от центра вершина + постоянный запас и будет расстояние на которое нужно отодвинуть камеру. Тем более последующее вращение тоже будет намного проще.

И ещё: забейте на глут есть же окна!!
1
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
12.05.2011, 22:30  [ТС]
snake32, да, я уже так и сделала. просто рассматривала разные способы, а именно меня интересовало как при помощи курсора мыши и нажатии левой клавиши вертеть изображение. с этим разобралась.
Вот только вопрос, как строить графики и объекты в 3д по координатам, которые задает сам пользователь.

делаю так. считываю координаты со стринггрида. перевожу в координаты Opengl и забиваю в массив. и с помощью ф-ции glDrawElements рисую (т к эта функция рисует по массиву вершин). но что-то не то выходит. (вращать и приближать не могу. т к закрашивает сцену цветом объекта, объект пропадает.а потом и вовсе ошибка) может знаете, в чем дело?
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,377
Записей в блоге: 6
12.05.2011, 22:36
Я не телепат. Что за ошибка? И в каком участке кода? Может glGetError() подскажет?
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
12.05.2011, 23:09  [ТС]
ошибка выскакивает когда меняю угол обзора или вращаю. или увеличиваю сцену (приближаю координату расположения глаза пользователя).
вот код:
C++
1
2
GLfloat *vertices; // массив координат объекта в opengl-виде
float *vert; // массив координат, заданных пользователем таблично
ф-ция считывания вершин объекта из stringgrid в массив. (работает правильно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TNewForm::ReadTableGraph()
{
  p=TableGraphForm->point;
  m=p*3;
  vert = new GLfloat [m-1];
  while (k<m)
  {
  for(int j=1; j<=p; j++)
  for(int i=1; i<=3; i++)
   {
    vert[k]=StrToFloat(TableGraphForm->MassivPointsStringGrid->Cells[i][j]);
    k++;
   }
   }
ф-ция преобразовывает вершины. введенные пользователем в систему координат Opengl (вроде тоже правильно считывает)
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TNewForm::CoorTransformation()
{
int i=0;
vertices = new GLfloat[m-1];
while (i<m)
{
 vertices[i]=(vert[i]-width/2)/(width/2);//в зависимости от центра по ширине
 vertices[i+1]=(vert[i+1]-height/2)/(height/2);//в зависимости от центра по высоте
 vertices[i+2]=(vert[i+2]-planes[1]/2)/(planes[1]/2);//в зависимости от центра по глубине
 i+=3;
}
}
ф-ция рисует сам объект по массиву вершин ( в данном случае это куб)
C++
1
2
3
4
5
6
7
8
9
void __fastcall TNewForm::DrawObject()
{  ReadTableGraph(); //считывает координаты в массив
   CoorTransformation(); // преобразует в массив вершин объекта в системе коорд-т Оpengl
    glEnableClientState(GL_COLOR_ARRAY);
    glEnableClientState(GL_VERTEX_ARRAY);
    glColorPointer(3, GL_FLOAT, 0, colors);
    glVertexPointer(3, GL_FLOAT, 0, vertices);
    glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, all);
  }
Дело в том. что когда я рисую тот же объект по тем же координатам, но заданным в коде (
C++
1
2
3
4
5
6
7
8
float vertices []={20,20,30,   //координаты куба для преобразования в систему координат opengl
             60,20,30,
             60,60,30,
             20,60,30,
             20,20,70,
             60,20,70,
             60,60,70,
             20,60,70};
), а не считываемым из стринггрида, то все ок (и вращает. и масштабирует без ошибок).
в чем может быть дело?
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,377
Записей в блоге: 6
12.05.2011, 23:18
Цитата Сообщение от mal1na Посмотреть сообщение
), а не считываемым из стринггрида, то все ок (и вращает. и масштабирует без ошибок).
в чем может быть дело?
Однозначно в преобразовании

Добавлено через 7 минут
Посмотрите что заносится в vertices[i] и на сколько оно отличается от задуманного
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
12.05.2011, 23:20  [ТС]
и еще...
есть ф-ция отображения сцены на экране:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TNewForm::Display()
{
glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
glClearColor(1.0, 1.0, 1.0, 1.0);
glLoadIdentity();
//переводим внешнюю систему координат в систему координат камеры
gluLookAt(eye[0], eye[1], eye[2], center[0], center[1], center[2], up[0], up[1], up[2]);
glLightfv(GL_LIGHT0, GL_POSITION, light0Pos);
//поворачиваем сцену по данным из  rot[15 градусов,45 и 15]
glRotatef(rot[0], 1, 0, 0);
glRotatef(rot[1], 0, 1, 0);
glRotatef(rot[2], 0, 0, 1);
CoorDraw();//рисует координатные оси со стрелками
//DrawObject();//рисует объект -куб
SwapBuffers(ghDC);
}
при нажатии в меню на кнопку1 - рисуется система координат на экране. А как сделать так, чтобы при нажатии на кнопку2 добавлялся на сцену объект, но система координат при этом не перерисовывалась и на пропадала.
у меня пока получается либо система координат (вызываю Display() ) либо объект (тогда создаю для объекта DisplayObject() аналогичную Display() только вместо CoorDraw() ставлю DrawObject() ).
Возможно такое осуществить, чтобы на сцене добавлялось множество разные объектов, графиков, если изначальное их количество я не знаю? как мне тогда объявить массивы вершин объектов. если я не знаю сколько их будет?

Добавлено через 1 минуту
Цитата Сообщение от snake32 Посмотреть сообщение
Однозначно в преобразовании

Добавлено через 7 минут
Посмотрите что заносится в vertices[i] и на сколько оно отличается от задуманного
тоже думаю. что в преобразовании, но трассировала и проверяла значения каждого элемента, все так как и должно быть. мистика какая-то...
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,377
Записей в блоге: 6
13.05.2011, 00:13
Цитата Сообщение от mal1na Посмотреть сообщение
Возможно такое осуществить, чтобы на сцене добавлялось множество разные объектов, графиков, если изначальное их количество я не знаю
сделайте класс Grafic, например, у каждого класса будут свои наборы вершин и метод Draw
потом добавляете список/массив элементами которого будут такие объекты
далее перебираете все элементы и рисуете

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
std::vector <*Graphic> objs;
...
Graphic *g = new Graphic();
g->LoadFromStringGrid( sg );// заполнение
objs.push_back( g );// добавление к прорисовке
...
void __fastcall TNewForm::Display()
{
glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
glClearColor(1.0, 1.0, 1.0, 1.0);
glLoadIdentity();
//переводим внешнюю систему координат в систему координат камеры
gluLookAt(eye[0], eye[1], eye[2], center[0], center[1], center[2], up[0], up[1], up[2]);
glLightfv(GL_LIGHT0, GL_POSITION, light0Pos);
//поворачиваем сцену по данным из  rot[15 градусов,45 и 15]
glRotatef(rot[0], 1, 0, 0);
glRotatef(rot[1], 0, 1, 0);
glRotatef(rot[2], 0, 0, 1);
CoorDraw();//рисует координатные оси со стрелками
 
for(int i=0;i<objs.size();i++) //прорисовка всех добавленных объектов
  objs[i]->Draw();
 
SwapBuffers(ghDC);
}
Добавлено через 6 минут
Вместо glDrawElements используйте glDrawArrays - нет мароки с индексами, которые сейчас вам ни к чему.
http://opengl.gamedev.ru/doc/?func=glDrawArrays

Добавлено через 3 минуты
C++
1
glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
Откуда xor?
Побитовое или там должно быть
C++
1
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
13.05.2011, 00:40  [ТС]
snake32, я так понимаю, прорисовка добавленных объектов будет происходить только при вызове ф-ции Display.
т е если я хочу нарисовать сист координат - нажимаю на кнопку1 (вызывается Display)
хочу нарисовать куб - нажимаю на кнопку2 - и опять вызываю Display?
хочу нарисовать просто график по точкам , нажимаю кнопку3 - и снова Display?
т е ее придется каждый раз перерисовать, если я добавляю новый объект? и как мне передать массив координат в этот класс? ведь для рисования куба и , например, графика, отображающего точками, используется не совсем одинаковые ф-ции в opengl. В общем я в конец запуталась(((((

а за GlDrawArrays спасибо!
насчет последнего. содрала на каком-то форуме. и работает, подключила только библиотеку iso646.h
0
 Аватар для snake32
3502 / 1685 / 236
Регистрация: 26.02.2009
Сообщений: 8,377
Записей в блоге: 6
13.05.2011, 01:36
mal1na, это нормально когда прорисовка только в одной ф-ии.
для каждого графика или куба нужно задавать свои colors и vertices
C++
1
2
3
glColorPointer(3, GL_FLOAT, 0, colors);
glVertexPointer(3, GL_FLOAT, 0, vertices);
glDrawArray(GL_QUADS, 0, vertices.size() );
а для этого проще сделать класс, который будет всё это содержать. Понятно?

Цитата Сообщение от mal1na Посмотреть сообщение
нажимаю на кнопку
может тогда не кнопку а CheckBox?
1
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 20
13.05.2011, 20:46  [ТС]
snake32, в принципе все понятно. спасибо Вам за информацию.
может тогда не кнопку а CheckBox?
нет, все таки на тулбаре в пункте меню хочу разграничить выбор объекта, поэтому для каждого будет своя форма скорее всего. не знаю. посмотрим. все равно ведь нет разницы, в итоге ведь массив вершин считывается и вызывается основная ф-ция прорисовки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2011, 20:46
Помогаю со студенческими работами здесь

Как произвести вращение вокруг локальной оси, если система координат задана матрицей поворота?
Есть локальная координатная система, которая задана одной матрицей поворота 3x3. Пространство трёхмерное. Чтобы получить координаты точки...

OpenGL / C++, вращение
Доброго времени суток и с праздником Победы, уважаемые эксперты! Такой вопрос: В отдельной функции делаю подсчет углов для...

(OpenGL C++) Вращение и частицы
Здраствуйте. Совсем недавно изучаю OpenGL. Сейчас делаю следуюшую шутку: Есть прямоугольник (всё в 3D), внутри находятся частицы,...

Вращение объектов OpenGL
Недавно начала изучать OpenGl.Создала объекты(2 треугольника и прямоугольник) и наложила на объекты вращение,но почему-то вращается только...

Вращение в TaoFramework Opengl
Здравствуйте! Используя TaoFramework. С помощью glRotated() много раз вращаю сцену в разные стороны. Как потом в препод время повернуть всё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru