Archives de l’auteur : Rowin

Avancement des travaux – Maths : enfin des résultats !

Victoire !

Après pas mal de boulot, j’ai enfin réussi à résoudre mon équation ! Et je peux donc modéliser ma galaxie !

On remarquera la magnifique performance de Sage, un logiciel de calcul formel libre (licence GPL) qui m’a permis d’y arriver ! Je crois que Xcas va se faire remplacer 😉 !

Les résultats de la modélisation dans les jours à venir, le temps de simplifier le tout. Parce que si j’ai effectivement une solution exploitable, elle n’en reste pas moins très moche !

Suivez le code sur Launchpad. Participez par mail : galaxia@anhydride-acide.fr

Avancement des travaux – Encore des maths…

La modélisation galactique est un point indispensable pour passer à la suite mais… ça ne fonctionne pas bien !

Je suis finalement resté sur les équations que je vous proposais dans l’article précédent, mais j’ai du mal à les résoudre de manière exacte. J’ai premièrement utilisé l’approximation des petits angles, parce que le point le plus proche sur la courbe devrait être à un angle assez proche et que donc les différences seront assez faibles. Ce qui me permet de me débarrasser des sinus et des cosinus.

Reste encore le problème des $$ b^\theta $$… J’ai décidé d’utiliser un développement de Taylor pour m’en débarrasser (à l’ordre 3 ou 4, ça devrait être suffisant) et récupérer un polynôme exploitable.

Souci, Xcas refuse de me résoudre mon polynôme sous prétexte que :

Attention! Extension algébrique non implémentée pour les poly

Je suis assez dépité… Je vais essayer de demander son avis à un autre logiciel de calcul formel pour voir !

Pour suivre l’évolution du code, rendez-vous sur Launchpad.

Pour participer, c’est galaxia@anhydride-acide.fr !

Avancement des travaux – Des maths galactiques !

Attention, cet article contient des maths ! Vous êtes prévenu 😛

Dans un précédent article, je vous parlais de la modélisation de la Galaxie, et je vous exposais comment j’avais l’intention de faire fonctionner tout ça, mathématiquement parlant.

Ainsi, je représente la galaxie par une spirale logarithmique. Sur le bras de la spirale, la probabilité de trouver un corps est maximale ; tandis que dès que l’on s’en éloigne celle-ci décroît exponentiellement.

Ça, c’est pour la théorie. Passons au calcul maintenant !

Une spirale logarithmique est décrite par l’équation suivante, en coordonnées polaires :

$$ r = ab^\theta $$

Avec b différent de 1, évidemment. Ensuite, il faut calculer la distance entre n’importe quel point et la spirale. Pour ça, j’utilise le théorème d’Al-Kashi qui me permet d’obtenir une fonction qui donne la longueur du segment entre un point quelconque du plan et un point quelconque de la spirale. Ainsi, j’ai :

$$ l = \sqrt{p^2 + r^2 – 2prcos(\gamma – \theta)} $$

Où $$ (p, \gamma) $$ sont les coordonnées d’un point quelconque du plan. En remplaçant ensuite r par son expression :

$$ l = \sqrt{p^2 + a^2b^{2\theta} – 2pab^\theta cos(\gamma – \theta)} $$

Mais là, je n’ai bien sûr pas l’expression exacte de la distance entre un point et la spirale… Il me faut d’abord optimiser cette expression, via le calcul de sa dérivée. Si le calcul est assez simple à faire, l’optimisation par contre nécessite de trouver les racines de la dérivée… Ce qui est nettement plus compliqué ! À vue de nez, c’est impossible à faire à la main. Et lorsque j’ai demandé à XCas, il a joyeusement consommé 16 Go de mémoire vive avant de se faire tuer par GNU/Linux…

La solution est donc de résoudre l’équation numériquement, mais ça n’est pas très pratique ! Alors je suis en train de réfléchir à une autre approche du problème , via l’utilisation de tangentes à la spirale…

On verra bien !

Suivez l’évolution du code sur Launchpad. Participez sur galaxia@anhydride-acide.fr !

Avancement des travaux – Modélisation

Après une intense réflexion, j’ai fini par me mettre d’accord avec moi-même sur le système de coordonnées des planètes à utiliser.

J’ai donc considéré que l’on se placerait dans une galaxie spirale. Je choisis donc d’utiliser des coordonnées polaires pour exprimer le problème. Polaires, et non pas cylindriques car je considère la galaxie comme infiniment fine devant sa largeur, et que la probabilité que deux corps soient alignés verticalement comme négligeable.

À partir de là, chaque corps céleste se voit attribuer 5 coordonnées.

  1. La première désigne la galaxie dans laquelle est situé le système auquel appartient le corps. Choisi de manière arbitraire, sûrement « 1 » pour la première galaxie qui sera modélisée ;
  2. La deuxième indique l’angle orienté entre le segment [centre de la galaxie, système du corps étudié] et le segment [centre de la galaxie, point de référence], mesuré en degré. Le point de référence sera une planète importante du background, mais on verra à ce moment là ;
  3. La troisième indique la longueur du segment [centre de la galaxie, corps étudié]. Plus couramment appelé rayon, on l’exprimera en années lumière ce qui est assez cohérent à la vue des dimensions usuelles des galaxies ;
  4. À partir d’ici, on est plus à l’échelle galactique mais à l’échelle locale. Cette coordonnées indique donc le numéro de l’orbite du corps qui nous intéresse. L’orbite 0 correspond à l’étoile centrale du système (ou équivalent). Puis l’orbite 1 désigne l’orbite la plus basse, et cætera ;
  5. La coordonnées suivant désigne le numéro du corps sur l’orbite autour de l’étoile centrale. Le corps principale (la Terre sur son orbite, par exemple) obtient le numéro 0. Chaque satellite reçoit un numéro en fonction de son éloignement (la Lune obtiendrait donc le numéro 1) ;

Avec ce système on a une manière assez fiable de désigner les corps célestes. À noter que l’on ignorera les mouvements des corps. À l’échelle locale, ils sont suffisamment faibles pour être négligeables, tandis qu’à l’échelle galactique ils ne sont pas visible, car le repère se déplace en même temps.

Il s’agit maintenant de mettre une modélisation mathématique sur le sujet. J’ai opté pour le modèle suivant : la galaxie est représentée par une spirale (logarithmique). La probabilité de trouver un corps céleste est maximale sur la spirale, et décroît de manière exponentielle avec l’augmentation de la distance avec le bras de la spirale.

Je suis en train de travailler sur les équations qui décrivent ça, mais c’est assez balèze 😀 !

Suivez l’avancement du code sur le launchpad.

Les participations, suggestions… sont les bienvenues sur galaxia@anhydride-acide.fr

Bonne soirée !

Avancement des travaux – Il est vivant !

Précédemment, j’annonçais mon intention de lancer un jeu en ligne, et la création de son moteur de jeu.

Et bien ça avance ! Le moteur (pour l’instant nommé très sobrement Galaxia :D) acquière petit à petit ses fonctionnalités. Et premier élément essentiel, qu’il puisse fonctionner comme un parfait daemon !

C’est donc chose faite : une fois installé, il démarre avec init (à partir du runlevel 2 pour être précis), tourne en arrière-plan comme fils d’init, et enregistre tous ses messages dans son propre fichier de log via rsyslog.

À noter aussi qu’il est capable d’intercepter SIGTERM afin de pouvoir s’arrêter proprement.

Retrouvez tous les détails sur le launchpad du projet : https://launchpad.net/galaxia

Prochaine étape, création de la structure de données. Les premiers éléments à être définis seront les corps célestes. Plus de détails ultérieurement.

Détails, questions, participations : galaxia@anhydride-acide.fr

Bonne fin de week-end

Un moteur de jeu en ligne

Depuis quelques temps déjà, l’idée me trottait dans la tête. J’ai décidé de franchir le pas, et je viens de me lancer dans le développement d’un jeu de stratégie spatial en temps réel par navigateur.
J’ai d’ores et déjà commencé l’écriture du moteur de jeu en C++, et lancé un dépôt Launchpad sur le sujet.

J’ai aussi de très nombreuses idées de background et de gameplay, je vais tenter de formaliser tout ça dans les jours à venir. L’idée serait d’avoir un monde au gameplay très ouvert et au background très cohérent (j’ai dit cohérent, pas réaliste ^^)

Le projet est bien entendu un projet libre, sous licence AGPL et GPL v3 (l’AGPL est nécessaire pour un moteur de jeu en ligne !)

Toutes les bonnes volontés sont bien sûr les bienvenues sur galaxia@anhydride-acide.fr

Bonne nuit !

Rowin

Logiciel libre ou Open Source ?

Bien souvent, on entendra les gens utiliser indifféremment les termes « Open Source » et « Logiciel Libre ». Et d’un point de vue purement pratique, il est vrai que ce sont deux mots assez proches.

Pour autant, ils désignent deux philosophies bien différentes. Quand on parcourt la définition de l’Open Source [en] et celle du Logiciel Libre [fr], on est tenté de se dire : « C’est la même chose ! Que l’on choisisse l’un ou l’autre, ça ne change rien, au final ! ». C’est faux. Les motivations qui se cachent derrière ne sont pas les mêmes.

L’idée derrière le modèle Open Source est que le partage permet de créer des logiciels plus puissants, plus fiables (ce qui n’est, au final, pas totalement vrai…). Mais si il existe un logiciel privateur très performant, alors pas de soucis pour l’utiliser. L’Open Source ne promeut ses idées que dans un but technique.

Au contraire, le Logiciel Libre s’attache à défendre le partage et la liberté en tant que tel. Parce que ce sont les droits de tout un chacun. L’idée n’est pas de savoir si cela permet de développer de meilleurs logiciels, d’un point de vue technique, mais d’accorder à chacun la liberté. En rendant ainsi le logiciel meilleur, même si ce n’est pas d’un point de vue technique.

Pour autant, bien que des différences philosophiques existent, la communauté Open Source n’est pas l’ennemi de la communauté du Logiciel Libre, et réciproquement. Ainsi, les deux groupes travaillent souvent ensemble (Mozilla Firefox, par exemple, regroupe des développeurs plutôt à sensibilité Libre ainsi que des développeurs plutôt à sensibilité Open Source), sans aucun problème ! Mieux encore, il est possible de défendre les deux aspects : croire que la liberté du logiciel permet non seulement la liberté de l’individu (ce qui n’est pas rien), mais offre aussi la possibilité de la création d’un logiciel plus performant, et plus fiable.

Ainsi, il s’agit de bien choisir ses mots. Dire Logiciel Libre, c’est prendre le parti de la liberté de l’individu. Dire Open Source, c’est ne se contenter que de la technique…

Sources :
Philosophy of GNU Project [en]
Philosophie du Projet GNU [fr]

La résolution DNS faite maison !

Aujourd’hui, tandis que je pestais contre la lenteur de la propagation de mon nom de domaine, j’ai décidé de faire la résolution de nom de domaine moi-même, sans passer par les serveurs DNS de qui que ce soit, que ce soit mon FAI ou Google.

En fouillant un peu, je me suis aperçu que l’opération était plutôt facile, en tout cas sur GNU/Linux.

La procédure est simple, il suffit d’installer bind9 – un des serveurs DNS les plus utilisés – via par exemple une commande type apt-get install bind9 pour les dérivés Debian.

À partir de ce moment-là, il suffit d’éditer /etc/resolv.conf et remplacer toutes les adresses du fichier par l’unique ligne nameserver 127.0.0.1 afin que votre appareil fasse directement appel à son propre serveur plutôt qu’à un autre.

Il est aussi possible (voire recommandé) de rentrer cette adresse dans la configuration de votre Network Manager, vu que c’est lui qui s’occupe de tout.

Après avoir éventuellement déconnecté et reconnecté votre interface réseau, il suffit de lancer un petit host anhydride-acide.fr (ou un autre site, je ne vous impose rien, hein ^^) afin de vérifier que tout s’est bien passé. En cas de souci, supprimez simplement les références à localhost afin que les serveurs DNS de votre FAI prennent le relais.

Normalement, cette procédure permet une petite accélération de votre connexion (puisque vous consultez directement les serveurs racines, sans intermédiaire). Vous pouvez aussi espérer être moins pisté puisque vous ne consultez personne d’autre que les serveurs racines, moins susceptibles de vous stalker !

Expérience de Sommeil Polyphasique – Interruption

Hello !

Malheureusement, l’expérience a dû s’arrêter alors qu’elle avait à peine commencée ! En effet, les rythmes strictes imposés par le sommeil polyphasique ne sont pas compatibles avec les horaires familiaux, d’autant plus pendant les vacances !

Mais ce n’est que partie remise ! Je retenterais peut-être l’expérience durant l’année universitaire, si possible…

À la revoyure !