Hallo Leute
Ich habe mir schon länger mal vorgenommen den Code hier
"http://www.gamedev.net/page/resources/_/reference/programming/game-programming/300/making-galaxies-r1337"
in Delphi nach zu bauen... Leider bin ich wohl ein bisschen zu blöd dafür xD
Das hier ist der Orriginal-Code in C++ (müsste glaube C++ sein, ich lasse mich aber gerne korrigieren ^^)
Code:
float fArmAngle = (float)((360 / m_nArms)%360);
float fAngularSpread = 180/(m_nArms*2);
for ( int i = 0; i < nStars; i++ )
{
float fR = fRandom(0.0, fRadius);
float fQ = fRandom(0.0, fAngularSpread ) * (rand()&1 ? 1 : -1);
float fK = 1;
float fA = (rand() % m_nArms) * fArmAngle;
float fX = fR * cos( fDeg2Rad * ( fA + fR * fK + fQ ) );
float fY = fR * sin( fDeg2Rad * ( fA + fR * fK + fQ ) );
//... draw star at point fX,fY
}
und das habe ich bisher in Delphi gebaut...
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
// Hier Danke nochmal an Uwe Raabe :)
function FRandom(fStart, fEnd: Extended): Extended;
begin
randomize;
result := fStart + (fEnd - fStart) * Random;
end;
const
m_nArms = 3;
nStars = 2000;
fRadius = 500;
var
FArmAngle : Extended;
FAngularSpread : Extended;
I: Integer;
fQ, fK, fR, fA, fX, fY : Extended;
aBMP : TBitmap;
begin
aBMP := TBitmap.Create;
aBMP.Width := 1000;
aBMP.Height:= 1000;
FArmAngle := (360 / m_nArms) mod 360;
FAngularSpread := 180 / (m_nArms * 2);
for I := 1 to nStars do
begin
fR := FRandom(0.0, fRadius);
fK := 1;
if random(2)=0 then fQ := FRandom(0.0, fAngularSpread) * 1
else fQ := FRandom(0.0, fAngularSpread) * -1;
fA := (Random mod m_nArms) * fArmAngle;
fX := fR * cos( DegToRad ( fA + fR * fK + fQ ) );
fY := fR * sin( DegToRad ( fA + fR * fK + fQ ) );
aBMP.Canvas.Pixels[Round(FX)+ aBMP.Width div 2,Round(FY) + aBMP.Height div 2] := clBlack;
end;
aBMP.SaveToFile('C:\Test.bmp');
end;
Leider hänge ich erstmal an den Zeilen
FArmAngle := (360 / m_nArms) mod 360;
und
fA := (Random mod m_nArms) * fArmAngle;
Und vermutlich findet ihr noch tausend andere Fehler die bei hierbei gemacht habe... ^^
naja, gibt es eine möglichkeit die beiden abgebildeten zuweisungen irgendwie anders zu realisieren?
Oder hat jemand genug C++ erfahrung um das zu erklären?
damit währe mir ja schon viel geholfen