Articles

Affichage des articles du juin, 2008

Compilation dynamique en C#

Evaluer une expression mathématique en compilant du code C# au runtime Introduction Il existe beaucoup d'articles sur la manière d'évaluer dynamiquement des expressions mathématiques. Cette semaine, je vais vous montrer comment on peut, à l'aide du Framework .NET 2.0, compiler du code C# à la volée et l'utiliser dans une application. Imaginons que nous ayons besoin de calculer une fonction 3D telle que celle-ci ; z = f(x,y) Nous voulons laisser à l'utilisateur la possibilité de définir lui-même la fonction f. Par exemple : z = Math.Cos(x) * Math.Sin(y) Une solution possible pour résoudre ce problème en moins de 10 minutes serait de : Laisser l'utilisateur saisir sa fonction Compiler cette fonction en mémoire Exécuter la fonction en lui passant les paramètres x et y Afficher le résultat z Un peu de code... Pour commencer, nous allons définir une classe avec une méthode virtuelle qui servira de modèle pour l'implémentation de notre fonction : namespace MathPar

SQL Server 2008 Spatial (2)

Image
Le type geometry dans SQL Server 2008 Introduction Dans la première partie de cet article, nous avons eu l'occasion de découvrir le nouveau type de donnée geography, que nous avons utilisé pour calculer la distance entre deux points à la surface du globe. SQL Server 2008 nous propose un second type de données spatiales : geometry . Ce type sera utilisé de préférence avec des surfaces de petites dimensions (le plan d'un bâtiment par exemple). Définir un polygone Nous allons commencer par définir deux carrés. L'unité des coordonnées utilisées n'a ici aucune importance. Pour plus de simplicité, nous allons travailler en pixels. DECLARE @poly1 geometry = 'POLYGON((100 100, 200 100, 200 200, 100 200, 100 100))' DECLARE @poly2 geometry = 'POLYGON((100 100, 200 100, 200 200, 100 200, 100 100))' Un carré est un polygone fermé; il faut donc 5 points pour le définir. Opérations booléennes Nous allons maintenant effectuer quelques opérations booléennes sur nos deu