Historique des modifications - Message

Message #10309

Sujet: C++ Deformation de terrain avec des brushes


Type Date Auteur Contenu
Dernière modification 12-12-2011 18:16:05 katsankat
Une petite fonction qui dessine un cercle autour de la zone sous la souris.
L'appeler dans le main avec circle(x,z, 20, 256); juste avant le if( receiver->IsLMBDown() || receiver->IsRMBDown())
Tracera un cercle fait de 20 segments, diamètre 256 unités.

*==============================================================================

==============================================================================*/
void Ligne(vector3df from, vector3df to, SColor couleur)
{
    matrix4 mat;
    device->getVideoDriver()->setTransform(ETS_WORLD, mat);
    device->getVideoDriver()->draw3DLine(from, to, couleur);
}
/*==============================================================================

==============================================================================*/
void circle(f32 cx, f32 cz, u32 verts, f32 radius)
{
  SColor color(255,255,255,255);
  vector3df p1;
  vector3df p2;
  s32 n;
  f32 above = 10.f;

  for (n = verts; 0 <= n; --n)
  {
    const f32 a = (core::PI * 2.f) * n / verts;

    const f32 x = cx + sinf(a) * radius;
    const f32 z = cz + cosf(a) * radius;

    if (n==verts)
      p1 = vector3df(x, terrain->getHeight(x,z)+above, z);
    else
    {
      p2 = vector3df(x, terrain->getHeight(x,z)+above, z);
      Ligne(p1, p2, color);
      p1.X = p2.X;
      p1.Y = p2.Y;
      p1.Z = p2.Z;
    }
  }
}
Création du message 12-12-2011 18:14:38 katsankat
Une petite fonction qui dessine un cercle autour de la zone sous la souris.
L'appeler dans le main avec circle(x,z, 20, 256); juste avant le if( receiver->IsLMBDown() || receiver->IsRMBDown())
Tracera un cercle fait de 20 segments, diamètre 256 unités.

*==============================================================================

==============================================================================*/
void Ligne(vector3df from, vector3df to, SColor couleur)
{
    matrix4 mat;
    device->getVideoDriver()->setTransform(ETS_WORLD, mat);
    device->getVideoDriver()->draw3DLine(from, to, couleur);
}
/*==============================================================================

==============================================================================*/
void circle(f32 cx, f32 cz, u32 verts, f32 radius)
{
  SColor color(255,255,255,255);
  vector3df p1;
  vector3df p2;
  s32 n;
  f32 above = 10.f;

  for (n = verts; 0 <= n; --n)
  {
    const f32 a = (core::PI * 2.f) * n / verts;

    const f32 x = cx + sinf(a) * radius;
    const f32 z = cz + cosf(a) * radius;

    if (n==verts)
      p1 = vector3df(x, terrain->getHeight(x,z)+above, z);
    else
    {
      p2 = vector3df(x, terrain->getHeight(x,z)+above, z);
      Ligne(p1, p2, color);
      p1.X = p2.X;
      p1.Y = p2.Y;
      p1.Z = p2.Z;
    }
  }
}

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
158 invités en ligne
membre en ligne: -
RSS Feed