ПрограммированиеФорумГрафика

Много ли здесь движкописателей 2? (34 стр)

Страницы: 133 34 35 3639 Следующая »
#495
11:35, 24 мар 2026

Aary
> запихивай в LLM.

+ Показать
#496
11:39, 24 мар 2026

falcoware
> А Вот это сам написал! Мамой клянусь!

+ Показать
#497
11:41, 24 мар 2026

А теперь смотри надо повернуть всю сцену влево илти вправо?

matrix g_mtMatrix;

void CScene::RotateH(float ang, BOOL bCamera)
{
  m_fH += RadToDeg(ang);

  g_mtMatrix = m_mtMatrix;

  matrix m, m1, mres;
  ident_matrix(&m);
  ident_matrix(&m1);

  if (IniSet.bMirrorH) { ang *= -1.f; }
  if (IniSet.bMirrorD) { ang *= -1.f; }
  //
  matrix mtH;
  ident_matrix(&mtH);
  point3d vtVec, vtVecCam;
  vtVecCam = vtVec = IniSet.vsCamSystem.axis_y;

  transform_back_point(&vtVec, &vtVec, &m_mtMatrix);
  RotateMatrixAroundVector(vtVec, ang, m);
  mult_matrix(&mres, &m_mtMatrix, &m);

  if (IniSet.m_bDiagramRotate) {
    mult_matrix(&mres, &m_mtMatrixDiagram, &m);
    m_mtMatrixDiagram = mres;
    return;
  }

  m_mtMatrix = mres;

  if (bCamera) { CameraPosRot(vtVecCam, ang); }

  vtVecCam = vtVec = IniSet.vsCamSystem.axis_y;

  transform_back_point(&vtVec, &vtVec, &m_mtMatrixMirrored);
  RotateMatrixAroundVector(vtVec, -ang, m1);
  mult_matrix(&mres, &m_mtMatrixMirrored, &m1);
  m_mtMatrixMirrored = mres;
}
#498
11:45, 24 мар 2026

falcoware
> А теперь смотри надо повернуть всю сцену влево илти вправо?

+ Показать
#499
11:59, 24 мар 2026

falcoware
> влево илти вправо
относительно меня или относительно тебя?

#500
12:01, 24 мар 2026

Относительно экрана. Всю сцену вращать просто, надо просто повернуть матрицу на угол вдоль оси.

void CScene::RotateY(float ang, BOOL bCamera)
{
  m_fY += RadToDeg(ang);

  matrix m, m1, mres;
  ident_matrix(&m);
  ident_matrix(&m1);

  //sh
  point3d vtVec;
  vtVec.x = 0.f;
  vtVec.y = 1.f;
  vtVec.z = 0.f;
  transform_point(&vtVec, &vtVec, &m_mtMatrix);

  rotate_matrix(&m, .0f, ang, .0f);
  mult_matrix(&mres, &m_mtMatrix, &m);

  if (IniSet.m_bDiagramRotate) {
    mult_matrix(&mres, &m_mtMatrixDiagram, &m);
    m_mtMatrixDiagram = mres;
    return;
  }

  m_mtMatrix = mres;

  vtVec.x = 0.f;
  vtVec.y = 1.f;
  vtVec.z = 0.f;
  transform_point(&vtVec, &vtVec, &m_mtMatrixMirrored);

  rotate_matrix(&m1, 0.f, -ang, .0f);
  mult_matrix(&mres, &m_mtMatrixMirrored, &m1);

  m_mtMatrixMirrored = mres;

  if (bCamera) { CameraPosRot(vtVec, ang); }
}
#501
12:05, 24 мар 2026

falcoware закидываешь свой код в https://aistudio.google.com и всё.

#502
12:15, 24 мар 2026

А вот надо поместить объект в плоскость с учетом положения!

    if (m_pIniSet->m_nDiagramArragementPLANE == WS_ARRAGEMENT_ANALYTIC_PLANE && m_pScene->m_bCustomPlane) {
      point3d p1, p2, p3;
      p1 = m_pScene->pPlaneCustom->arrConstVerts[1];
      p2 = m_pScene->pPlaneCustom->arrConstVerts[4];
      p3 = m_pScene->pPlaneCustom->arrConstVerts[5];

      point3d vt1, vt2, vt3;
      sub_vectors(&vt1.x, &p1.x, &p2.x);
      sub_vectors(&vt2.x, &p3.x, &p2.x);

      norm_vect(&vt1.x);
      norm_vect(&vt2.x);

      cross_prod(&vt3.x, &vt1.x, &vt2.x);

      matrix MatrCm;
      MatrCm.m[0][0] = vt1.x;
      MatrCm.m[0][1] = vt1.y;
      MatrCm.m[0][2] = vt1.z;
      MatrCm.m[0][3] = 0.f;
      MatrCm.m[1][0] = vt2.x;
      MatrCm.m[1][1] = vt2.y;
      MatrCm.m[1][2] = vt2.z;
      MatrCm.m[1][3] = 0.f;
      MatrCm.m[2][0] = vt3.x;
      MatrCm.m[2][1] = vt3.y;
      MatrCm.m[2][2] = vt3.z;
      MatrCm.m[2][3] = 0.f;
      MatrCm.m[3][0] = 0.f;
      MatrCm.m[3][1] = 0.f;
      MatrCm.m[3][2] = 0.f;
      MatrCm.m[3][3] = 1.f;

      ptZero = p2;
      transform_point(&ptZero, &ptZero, &m_pScene->m_mtMatrix);
      ptZero = m_pScene->ConvertPos2D(ptZero);

      transform_back_point(&ptRes, &ptRes, &MatrCm);
      transform_back_point(&ptRes1, &ptRes1, &MatrCm);

      add_vectors(&ptRes.x, &ptRes.x, &p2.x);
      add_vectors(&ptRes1.x, &ptRes1.x, &p2.x);
    }
#503
12:26, 24 мар 2026

Надеюсь, всякие синусы/косинусы/деления у тебя не в глубине самого глубокого цикла...
Матрицы не зря придумали, они позволяют обходиться без дорогостоящих операций.

#504
12:27, 24 мар 2026

Blueprint
> закидываешь свой код в https://aistudio.google.com и всё.

А он и отвечает:

Google AI Studio недоступен в вашем регионе.

Когда КВН разрешат, или войны закончатся, тогда и приходите.

#505
12:29, 24 мар 2026

Короче писал всю жизнь на glBegin() glEnd();
30 лет писал. Теперь мой проект можно выкинуть на помойку.

Еще и Гейц закрыл MFC. Все кончилось мое золотое время.

"Путь богатого как трава - засохла трава и цвет её опал!"

#506
12:32, 24 мар 2026

falcoware
> Гейц закрыл MFC
Во-первых, там сейчас гнездо индусов.
Во-вторых:
«The Microsoft Foundation Class (MFC) library has not been officially retired by Microsoft»

#507
13:18, 24 мар 2026

Aary
> Когда КВН разрешат, или войны закончатся, тогда и приходите.
Качашь Zapret 2 с Github и всё работает.
Изображение

#508
13:21, 24 мар 2026

Butjok2
> RotateCoordinateSystemAroundX
ну да, ну да... это то хороший нейминг... не хватает:
"ПовернутьМатрицуВокругОсиZКогдаXAndYРавноНулюAndУголОтносительно..." (продолжение следует)

#509
13:24, 24 мар 2026

Mirrel
это хотя бы не InitializeContextFactoryManagerSession

Страницы: 133 34 35 3639 Следующая »
ПрограммированиеФорумГрафика