cs_bgK
Messages postés131Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention19 janvier 2004
-
1 nov. 2002 à 14:37
blueperfect
Messages postés234Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention21 novembre 2013
-
26 août 2008 à 22:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
blueperfect
Messages postés234Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention21 novembre 2013 26 août 2008 à 22:47
Voici un morceau de mon code (j'avais 2 procédures : 1 à la barbare - utilisation de ScanLine) et l'autre par le GDI (utilisation de TransFormWorld)... Cette fonctionnalité (TransformWorld) permets, entre autres, d'appliquer des transformations mathématiques issues d'une matrice (TXForm)
sur chaque points affichés, après appel de la fonction !
Ici, un changement de repère (pour placer le centre de la rotation), puis une rotation...
Paramètres :
var _object:TBitmap;
const _value:TDegrees;
Code :
Result doit être un TBitmap...
procedure DoItUsingGDI;
var _hdc: THandle;
_cosinus:TReal;
_sinus:TReal;
_xform:TXForm;
damanix
Messages postés20Date d'inscriptionsamedi 7 septembre 2002StatutMembreDernière intervention 2 novembre 2002 2 nov. 2002 à 01:37
l'inverse de la tangente c pas
ArcTan(X: Extended)
???
Dx.
balgrim
Messages postés52Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention28 octobre 2003 1 nov. 2002 à 20:51
Ouais!!! C exactement ce que je cherchais, je v pouvoir avancé :p
Merci pour tous, et j'espere pouvoir balancé mon moteur sur le site d'ici peu ;)
Sinon pour DirectX je m'is connais pas trop, mais comme pour l'openGL, je trouve que c trop complikée (je comprend pas, j'accroche pas). De plus g po envie d'etre dependant de Micro$oft (directX ne tourne pas sous unix). Enfin bon sinon tu saurais pas par hasard comment faire l'inverse de tangeante (tan) Merci pour tout!!!
Balgrim.
cs_bgK
Messages postés131Date d'inscriptionvendredi 7 juin 2002StatutMembreDernière intervention19 janvier 2004 1 nov. 2002 à 14:37
26 août 2008 à 22:47
sur chaque points affichés, après appel de la fonction !
Ici, un changement de repère (pour placer le centre de la rotation), puis une rotation...
Paramètres :
var _object:TBitmap;
const _value:TDegrees;
Code :
Result doit être un TBitmap...
procedure DoItUsingGDI;
var _hdc: THandle;
_cosinus:TReal;
_sinus:TReal;
_xform:TXForm;
begin
_hdc:= Result.Canvas.Handle;
SetGraphicsMode(_hdc, GM_ADVANCED);
SetMapMode(_hdc, MM_TEXT);
// Set Origin
_xform.eM11:= 1.0;
_xform.eM12:= 0.0;
_xform.eM21:= 0.0;
_xform.eM22:= 1.0;
_xform.eDx := -_object.Width * 0.5;
_xform.eDy := -_object.Height * 0.5;
Windows.SetWorldTransform( _hdc,
_xform
);
// Set roll
_cosinus := TAngle.DoCosinus(-_value);
_sinus := TAngle.DoSinus(-_value);
_xform.eM11:= _cosinus;
_xform.eM12:= _sinus;
_xform.eM21:= -_sinus;
_xform.eM22:= _cosinus;
_xform.eDx := Result.Width * 0.5;
_xform.eDy := Result.Height * 0.5;
Windows.ModifyWorldTransform( _hdc,
_xform,
MWT_RIGHTMULTIPLY
);
// Draw
Result.Canvas.Draw( 0, 0, _object);
// Reset
_xform.eM11:= 1.0;
_xform.eM12:= 0.0;
_xform.eM21:= 0.0;
_xform.eM22:= 1.0;
_xform.eDx := 0;
_xform.eDy := 0;
Windows.SetWorldTransform( _hdc,
_xform
);
end;
Tu devrais pouvoir t'en sortir !
2 nov. 2002 à 01:37
ArcTan(X: Extended)
???
Dx.
1 nov. 2002 à 20:51
Merci pour tous, et j'espere pouvoir balancé mon moteur sur le site d'ici peu ;)
Sinon pour DirectX je m'is connais pas trop, mais comme pour l'openGL, je trouve que c trop complikée (je comprend pas, j'accroche pas). De plus g po envie d'etre dependant de Micro$oft (directX ne tourne pas sous unix). Enfin bon sinon tu saurais pas par hasard comment faire l'inverse de tangeante (tan) Merci pour tout!!!
Balgrim.
1 nov. 2002 à 14:37
http://homepages.borland.com/efg2lab/ImageProcessing/RotateScanline.htm
une méthode beaucoup plus performante que la tienne pour faire des rotations de TBitmap. Elle est basée sur TBitmap.ScanLine
Bon courage pour le moteur 2d ...
Je te conseille d'utiliser DirectX, tu obtiendras des performances bien meilleures encore.
a+