Accueil > > > VECTEUR 3D - ROTATION DANS L'ESPACE ET COORDONNÉES POLAIRES
VECTEUR 3D - ROTATION DANS L'ESPACE ET COORDONNÉES POLAIRES
Information sur la source
Description
Salut tout le monde, Ce programme montre comment tracer un vecteur, et comment tracer un plan qui lui est perpendiculaire (le petit carré) Pour y arriver, j'utilise les coordonnées polaires (longitude et latitude) ainsi que la multiplication par les matrices de rotation Le code source est simple et bien structuré (selon moi ;) j'espère que vous aller apprecier Je tiens à remercier mon père qui a donné généreusement de son temps pour le débogage de cette application qui semblait vouée à l'échec :p
Source
- using System;
- using System.Drawing;
- using Microsoft.DirectX;
- using Microsoft.DirectX.Direct3D;
-
-
- namespace tube3d
- {
- public class directxGestion
- {
- //device pour l'affichage
- private Device device = null;
- //handle sur la surface d'affichage
- private IntPtr handle;
- //buffer de vecteur pour les axes x, y, z
- private VertexBuffer axes = null;
- //buffer de vecteur pour le carré
- private VertexBuffer square = null;
- //buffer de vecteur pour le vecteur
- private VertexBuffer vecteur = null;
- public int x1=0, y1=0, z1=0;
- public int x2=0, y2=0, z2=4;
- public int cameraX = 2, cameraY = 2, cameraZ = 5;
- private double latitude = Math.PI/2, longitude = 0;
- private float[,] squarePoints = new float[4,3] {{-2,2,0},{2,2,0},{-2,-2,0},{2,-2,0}};
-
-
-
- #region CustomVertex
- const VertexFormats customVertexFormat = VertexFormats.Position | VertexFormats.Diffuse | VertexFormats.Texture1;
- private struct CustomVertex
- {
- public float X;
- public float Y;
- public float Z;
- public int color;
- public float tu;
- public float tv;
- }
- private CustomVertex CreateVertex(float x, float y, float z, float tu, float tv, int color)
- {
- CustomVertex custVertex = new CustomVertex();
- custVertex.X = x; custVertex.Y = y; custVertex.Z = z;
- custVertex.color = color;
- custVertex.tu = tu; custVertex.tv = tv;
- return custVertex;
- }
- #endregion
-
- public directxGestion(IntPtr handle)
- {
- this.handle = handle;
- }
-
- #region InitDevice
- public bool InitDevice(bool fullscreen)
- {
- DisplayMode DispMode = Manager.Adapters[Manager.Adapters.Default.Adapter].CurrentDisplayMode;
- PresentParameters presentParams = new PresentParameters();
- if(fullscreen) {presentParams.BackBufferFormat = DispMode.Format; presentParams.BackBufferWidth = DispMode.Width; presentParams.BackBufferHeight = DispMode.Height;}
-
- //on veut que notre device supporte la profondeur
- presentParams.AutoDepthStencilFormat = DepthFormat.D16;
- presentParams.EnableAutoDepthStencil = true;
-
- //mode fenetre
- if(!fullscreen) presentParams.Windowed = true;
- //mode de switchage de buffer
- presentParams.SwapEffect = SwapEffect.Discard;
- //attendre la synchronisation avec l'ecran (VSync)
- //utiliser PresentInterval.Immediate pour des vitesses rapides
- presentParams.PresentationInterval = PresentInterval.One;
-
- try
- {
- //on crée le device selon les paramètres de présentation si-dessus
- if(fullscreen) device = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, this.handle, CreateFlags.SoftwareVertexProcessing, presentParams);
- else device = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, this.handle, CreateFlags.SoftwareVertexProcessing, presentParams);
- //on lui associe notre format de vecteur spécial
- device.VertexFormat = customVertexFormat;
- //on active le z-buffer
- device.RenderState.ZBufferEnable = false;
- //pas de culling
- device.RenderState.CullMode = Cull.None;
- //mode de remplissage des polygones (ici solide)
- device.RenderState.FillMode = FillMode.Solid;
- //pas de lumière
- device.RenderState.Lighting = false;
-
- //activation de l'alpha blending
- device.RenderState.AlphaBlendEnable = true;
- device.RenderState.DestinationBlend = Blend.DestinationAlpha;
- device.RenderState.SourceBlend = Blend.SourceAlpha;
-
- //on définit le mode de projection
- device.Transform.Projection = Matrix.OrthoLH(20,20,100,-100);
- //on positionne la caméra
- device.Transform.View = Matrix.LookAtLH(new Vector3(-cameraX,-cameraY,-cameraZ), new Vector3(0,0,0), new Vector3(0,1,0));
- }
- catch
- {
- return false;
- }
-
- return true;
- }
- #endregion
-
- #region Initialisation des vertexBuffer
- #region InitBuffers
- public void InitBuffers()
- {
- //on crée les buffers qui va contenir nos vecteurs
- axes = new VertexBuffer(typeof(CustomVertex), 6, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
- square = new VertexBuffer(typeof(CustomVertex), 4, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
- vecteur = new VertexBuffer(typeof(CustomVertex), 2, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
- //on associe à une fonction, la création de notre buffer
- //au cas qu'il soit perdu
- axes.Created += new EventHandler(this.CreateAxes);
- square.Created += new EventHandler(this.CreateSquare);
- vecteur.Created += new EventHandler(this.CreateVector);
- //on force la création du buffer
- CreateAxes(axes, null);
- CreateSquare(square, null);
- CreateVector(vecteur, null);
- }
- #endregion
- #region creation des 3 axes
- private void CreateAxes(object sender, EventArgs e)
- {
- CustomVertex[] verts = new CustomVertex[6];
- //axe des x
- verts[0] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.LightBlue).ToArgb());
- verts[1] = CreateVertex(10,0,0,0,0, Color.FromArgb(100, Color.LightBlue).ToArgb());
- //axe des y
- verts[2] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.LightGreen).ToArgb());
- verts[3] = CreateVertex(0,10,0,0,0, Color.FromArgb(100, Color.LightGreen).ToArgb());
- //axe des z
- verts[4] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.Red).ToArgb());
- verts[5] = CreateVertex(0,0,20,0,0, Color.FromArgb(100, Color.Red).ToArgb());
- axes.SetData(verts, 0, LockFlags.None);
- }
- #endregion
- #region creation du carré
- private void CreateSquare(object sender, EventArgs e)
- {
- CustomVertex[] verts = new CustomVertex[4];
- float x=0, y=0, z=0;
- float x1=0, y1=0, z1=0;
- Matrix rotX = Matrix.RotationX((float)(latitude-Math.PI/2));
- Matrix rotY = Matrix.RotationY((float)longitude);
- for(int i=0; i<4; i++)
- {
- x1 = squarePoints[i,0] * rotX.M11 + squarePoints[i,1] * rotX.M21 + squarePoints[i,2] * rotX.M31;
- y1 = squarePoints[i,0] * rotX.M12 + squarePoints[i,1] * rotX.M22 + squarePoints[i,2] * rotX.M32;
- z1 = squarePoints[i,0] * rotX.M13 + squarePoints[i,1] * rotX.M23 + squarePoints[i,2] * rotX.M33;
- x = x1 * rotY.M11 + y1 * rotY.M21 + z1 * rotY.M31;
- y = x1 * rotY.M12 + y1 * rotY.M22 + z1 * rotY.M32;
- z = x1 * rotY.M13 + y1 * rotY.M23 + z1 * rotY.M33;
- x+=this.x1; y+=this.y1; z+=this.z1;
- verts[i] = CreateVertex(x,y,z,0,0, Color.FromArgb(150, Color.White).ToArgb());
-
- }
- square.SetData(verts, 0, LockFlags.None);
- }
- #endregion
- #region creation du vecteur
- private void CreateVector(object sender, EventArgs e)
- {
- CustomVertex[] verts = new CustomVertex[2];
- verts[0] = CreateVertex(x1,y1,z1,0,0, Color.FromArgb(255, Color.Yellow).ToArgb());
- verts[1] = CreateVertex(x2,y2,z2,0,0, Color.FromArgb(255, Color.Yellow).ToArgb());
- vecteur.SetData(verts, 0, LockFlags.None);
- }
- #endregion
- #endregion
-
- #region Render
- public void Render()
- {
- if(device==null) return;
-
-
- //on efface l'écran et le z-buffer
- device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
- //on commence la scène
- device.BeginScene();
- //-----------------------------------------------------
- device.SetStreamSource(0, axes, 0);
- device.DrawPrimitives(PrimitiveType.LineList, 0, 3);
- //-----------------------------------------------------
- //this.RotationMatrices((int)(this.latitude*180/Math.PI), (int)(this.longitude*180/Math.PI), 0);
- device.SetStreamSource(0, square, 0);
- device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
- //device.Transform.World = Matrix.Identity;
- //-----------------------------------------------------
- device.SetStreamSource(0, vecteur, 0);
- device.DrawPrimitives(PrimitiveType.LineList, 0, 1);
- //on termine le dessin
- device.EndScene();
- //on l'affiche à l'écran
- try{device.Present();}
- catch{}
- using(Graphics g = Graphics.FromHwnd(this.handle))
- {
- string str = string.Format("latitude :\t\t{0} degré(s)\nlongitude :\t{1} degré(s)", Math.Round(latitude*180/Math.PI, 0), Math.Round(longitude*180/Math.PI, 0));
- g.DrawString(str, new System.Drawing.Font(FontFamily.GenericSansSerif, 12), new SolidBrush(Color.White), new Point(0,0));
- }
- }
- #endregion
- public void Invalidate()
- {
- int x = x2 - x1; int y = y2 - y1; int z = z2 - z1;
- this.latitude = Math.Atan2(Math.Sqrt(x*x+z*z), y);
- this.longitude = Math.Atan2(x, z);
- this.CreateVector(null, null);
- this.CreateSquare(null, null);
- }
- public void SetCamera()
- {
- device.Transform.View = Matrix.LookAtLH(new Vector3(-cameraX,-cameraY,-cameraZ), new Vector3(0,0,0), new Vector3(0,1,0));
- }
-
- }
- }
using System;
using System.Drawing;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace tube3d
{
public class directxGestion
{
//device pour l'affichage
private Device device = null;
//handle sur la surface d'affichage
private IntPtr handle;
//buffer de vecteur pour les axes x, y, z
private VertexBuffer axes = null;
//buffer de vecteur pour le carré
private VertexBuffer square = null;
//buffer de vecteur pour le vecteur
private VertexBuffer vecteur = null;
public int x1=0, y1=0, z1=0;
public int x2=0, y2=0, z2=4;
public int cameraX = 2, cameraY = 2, cameraZ = 5;
private double latitude = Math.PI/2, longitude = 0;
private float[,] squarePoints = new float[4,3] {{-2,2,0},{2,2,0},{-2,-2,0},{2,-2,0}};
#region CustomVertex
const VertexFormats customVertexFormat = VertexFormats.Position | VertexFormats.Diffuse | VertexFormats.Texture1;
private struct CustomVertex
{
public float X;
public float Y;
public float Z;
public int color;
public float tu;
public float tv;
}
private CustomVertex CreateVertex(float x, float y, float z, float tu, float tv, int color)
{
CustomVertex custVertex = new CustomVertex();
custVertex.X = x; custVertex.Y = y; custVertex.Z = z;
custVertex.color = color;
custVertex.tu = tu; custVertex.tv = tv;
return custVertex;
}
#endregion
public directxGestion(IntPtr handle)
{
this.handle = handle;
}
#region InitDevice
public bool InitDevice(bool fullscreen)
{
DisplayMode DispMode = Manager.Adapters[Manager.Adapters.Default.Adapter].CurrentDisplayMode;
PresentParameters presentParams = new PresentParameters();
if(fullscreen) {presentParams.BackBufferFormat = DispMode.Format; presentParams.BackBufferWidth = DispMode.Width; presentParams.BackBufferHeight = DispMode.Height;}
//on veut que notre device supporte la profondeur
presentParams.AutoDepthStencilFormat = DepthFormat.D16;
presentParams.EnableAutoDepthStencil = true;
//mode fenetre
if(!fullscreen) presentParams.Windowed = true;
//mode de switchage de buffer
presentParams.SwapEffect = SwapEffect.Discard;
//attendre la synchronisation avec l'ecran (VSync)
//utiliser PresentInterval.Immediate pour des vitesses rapides
presentParams.PresentationInterval = PresentInterval.One;
try
{
//on crée le device selon les paramètres de présentation si-dessus
if(fullscreen) device = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, this.handle, CreateFlags.SoftwareVertexProcessing, presentParams);
else device = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, this.handle, CreateFlags.SoftwareVertexProcessing, presentParams);
//on lui associe notre format de vecteur spécial
device.VertexFormat = customVertexFormat;
//on active le z-buffer
device.RenderState.ZBufferEnable = false;
//pas de culling
device.RenderState.CullMode = Cull.None;
//mode de remplissage des polygones (ici solide)
device.RenderState.FillMode = FillMode.Solid;
//pas de lumière
device.RenderState.Lighting = false;
//activation de l'alpha blending
device.RenderState.AlphaBlendEnable = true;
device.RenderState.DestinationBlend = Blend.DestinationAlpha;
device.RenderState.SourceBlend = Blend.SourceAlpha;
//on définit le mode de projection
device.Transform.Projection = Matrix.OrthoLH(20,20,100,-100);
//on positionne la caméra
device.Transform.View = Matrix.LookAtLH(new Vector3(-cameraX,-cameraY,-cameraZ), new Vector3(0,0,0), new Vector3(0,1,0));
}
catch
{
return false;
}
return true;
}
#endregion
#region Initialisation des vertexBuffer
#region InitBuffers
public void InitBuffers()
{
//on crée les buffers qui va contenir nos vecteurs
axes = new VertexBuffer(typeof(CustomVertex), 6, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
square = new VertexBuffer(typeof(CustomVertex), 4, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
vecteur = new VertexBuffer(typeof(CustomVertex), 2, device, Usage.WriteOnly, customVertexFormat, Pool.Default);
//on associe à une fonction, la création de notre buffer
//au cas qu'il soit perdu
axes.Created += new EventHandler(this.CreateAxes);
square.Created += new EventHandler(this.CreateSquare);
vecteur.Created += new EventHandler(this.CreateVector);
//on force la création du buffer
CreateAxes(axes, null);
CreateSquare(square, null);
CreateVector(vecteur, null);
}
#endregion
#region creation des 3 axes
private void CreateAxes(object sender, EventArgs e)
{
CustomVertex[] verts = new CustomVertex[6];
//axe des x
verts[0] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.LightBlue).ToArgb());
verts[1] = CreateVertex(10,0,0,0,0, Color.FromArgb(100, Color.LightBlue).ToArgb());
//axe des y
verts[2] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.LightGreen).ToArgb());
verts[3] = CreateVertex(0,10,0,0,0, Color.FromArgb(100, Color.LightGreen).ToArgb());
//axe des z
verts[4] = CreateVertex(0,0,0,0,0, Color.FromArgb(100, Color.Red).ToArgb());
verts[5] = CreateVertex(0,0,20,0,0, Color.FromArgb(100, Color.Red).ToArgb());
axes.SetData(verts, 0, LockFlags.None);
}
#endregion
#region creation du carré
private void CreateSquare(object sender, EventArgs e)
{
CustomVertex[] verts = new CustomVertex[4];
float x=0, y=0, z=0;
float x1=0, y1=0, z1=0;
Matrix rotX = Matrix.RotationX((float)(latitude-Math.PI/2));
Matrix rotY = Matrix.RotationY((float)longitude);
for(int i=0; i<4; i++)
{
x1 = squarePoints[i,0] * rotX.M11 + squarePoints[i,1] * rotX.M21 + squarePoints[i,2] * rotX.M31;
y1 = squarePoints[i,0] * rotX.M12 + squarePoints[i,1] * rotX.M22 + squarePoints[i,2] * rotX.M32;
z1 = squarePoints[i,0] * rotX.M13 + squarePoints[i,1] * rotX.M23 + squarePoints[i,2] * rotX.M33;
x = x1 * rotY.M11 + y1 * rotY.M21 + z1 * rotY.M31;
y = x1 * rotY.M12 + y1 * rotY.M22 + z1 * rotY.M32;
z = x1 * rotY.M13 + y1 * rotY.M23 + z1 * rotY.M33;
x+=this.x1; y+=this.y1; z+=this.z1;
verts[i] = CreateVertex(x,y,z,0,0, Color.FromArgb(150, Color.White).ToArgb());
}
square.SetData(verts, 0, LockFlags.None);
}
#endregion
#region creation du vecteur
private void CreateVector(object sender, EventArgs e)
{
CustomVertex[] verts = new CustomVertex[2];
verts[0] = CreateVertex(x1,y1,z1,0,0, Color.FromArgb(255, Color.Yellow).ToArgb());
verts[1] = CreateVertex(x2,y2,z2,0,0, Color.FromArgb(255, Color.Yellow).ToArgb());
vecteur.SetData(verts, 0, LockFlags.None);
}
#endregion
#endregion
#region Render
public void Render()
{
if(device==null) return;
//on efface l'écran et le z-buffer
device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
//on commence la scène
device.BeginScene();
//-----------------------------------------------------
device.SetStreamSource(0, axes, 0);
device.DrawPrimitives(PrimitiveType.LineList, 0, 3);
//-----------------------------------------------------
//this.RotationMatrices((int)(this.latitude*180/Math.PI), (int)(this.longitude*180/Math.PI), 0);
device.SetStreamSource(0, square, 0);
device.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
//device.Transform.World = Matrix.Identity;
//-----------------------------------------------------
device.SetStreamSource(0, vecteur, 0);
device.DrawPrimitives(PrimitiveType.LineList, 0, 1);
//on termine le dessin
device.EndScene();
//on l'affiche à l'écran
try{device.Present();}
catch{}
using(Graphics g = Graphics.FromHwnd(this.handle))
{
string str = string.Format("latitude :\t\t{0} degré(s)\nlongitude :\t{1} degré(s)", Math.Round(latitude*180/Math.PI, 0), Math.Round(longitude*180/Math.PI, 0));
g.DrawString(str, new System.Drawing.Font(FontFamily.GenericSansSerif, 12), new SolidBrush(Color.White), new Point(0,0));
}
}
#endregion
public void Invalidate()
{
int x = x2 - x1; int y = y2 - y1; int z = z2 - z1;
this.latitude = Math.Atan2(Math.Sqrt(x*x+z*z), y);
this.longitude = Math.Atan2(x, z);
this.CreateVector(null, null);
this.CreateSquare(null, null);
}
public void SetCamera()
{
device.Transform.View = Matrix.LookAtLH(new Vector3(-cameraX,-cameraY,-cameraZ), new Vector3(0,0,0), new Vector3(0,1,0));
}
}
}
Conclusion
vous devez avoir DirectX 9.0c les DLL pour le managed DirectX sont inclus si vous rencontrez des problèmes, faites moi signe.
Historique
- 05 novembre 2005 08:13:25 :
- extension .exe_
- 05 novembre 2005 21:12:09 :
- J'ai mis une partie du code source
- 30 novembre 2005 02:18:14 :
- ajout de mots-clés
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Problème sous DIRECTX [ par Lord_ZanTe ]
Bonjour,nous sommes étudiant et nous développons un jeu 3D sous DirectX, en C# dans le cadre d'un projet tuteuré.Nous arrivons à a
Vecteur et direct3D [ par cazaux ]
Bonjour, je suis en train de réaliser un moteur 3D en direct3D et C# seulement je manque de connaissance en géométrie dans l'espace.Actuellement j'ai
Direct 3d [ par abdoulax ]
Bon b voila je voudrai essayé de faire une application en direct 3d mais le problème c'est que lorsque je compile ça me di kil ne trouve pas la dll di
Représentation graphique d'une fonction en 3d [ par Fildomen ]
Bonjour !!Svp je cherche une source d'une représentation de fonctions mathématiques en 3d (ptete directx en utilisation) !!j'ai cherché partout mais e
équivalent OpenGL en DirectX ? [ par slmnsnts ]
Bonjour, <p class="MsoNormal" style="MARGIN
les principe de la programmation 2D et 3D avec DirectX [ par goldziko9 ]
Salut tous monde. Je suis un debutant dans le domaine de la programmation 2D et 3D. j'ai un bon niveau en programmation avec les languages : C#,
rotation 3D sur page WPF... je bloque [ par waspy59 ]
Bonjour au forum,Voila mon problème, j'ai crée une appli en WPF/C#. Son interface principale est composée d'une série de boutons disposés verticalemen
[BAR]Premier plan et arrière plan en 3D isométrique [ par krimog ]
Bonjour à tous Je poste dans le bar, car, bien que je programme dans un langage bien précis, mon problème vient de la conception et non du code. Je
reference introuvable [ par dourida ]
Salut J'ai un problème avec la réference Microsoft.DirectX.AudioVideoPlayback dans l'emulateur pocket pc 2003. j'ai ajouté la réference dans mon pro
envoyer un code clavier à une appli directx [ par survcopt ]
Bonjour, J'ai un jeu qui fonctionne avec directx, je voudrais lui envoyer un code clavier pour simuler un appui . j'ai essayé les fonctions sendkeys s
|
Derniers Blogs
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui l'ont sagement suivi. Je profite de ce poste pour fai...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|