मैं अंक का एक सेट उत्पन्न करने की कोशिश कर रहा हूं (Vector
संरचना द्वारा प्रतिनिधित्व) जो लगभग सर्पिल आकाशगंगा का मॉडल करता है।गैलेक्सी जनरेशन एल्गोरिदम
सी # कोड जो मैं साथ खेल रहा हूं नीचे है; लेकिन मुझे लगता है कि यह आकाशगंगा के एक 'हाथ' उत्पन्न करने के लिए प्रतीत होता है।
public Vector3[] GenerateArm(int numOfStars, int numOfArms, float rotation)
{
Vector3[] result = new Vector3[numOfStars];
Random r = new Random();
float fArmAngle = (float)((360/numOfArms) % 360);
float fAngularSpread = 180/(numOfArms * 2);
for (int i = 0; i < numOfStars; i++)
{
float fR = (float)r.NextDouble() * 64.0f;
float fQ = ((float)r.NextDouble() * fAngularSpread) * 1;
float fK = 1;
float fA = ((float)r.NextDouble() % numOfArms) * fArmAngle;
float fX = fR * (float)Math.Cos((MathHelper.DegreesToRadians(fA + fR * fK + fQ)));
float fY = fR * (float)Math.Sin((MathHelper.DegreesToRadians(fA + fR * fK + fQ)));
float resultX = (float)(fX * Math.Cos(rotation) - fY * Math.Sin(rotation));
float resultY = (float)(fY * Math.Cos(rotation) - fX * Math.Sin(rotation));
result[i] = new Vector3(resultX, resultY, 1.0f);
}
return result;
}
ऐसा लगता है कि एक दूसरे numOfArms के आधार पर पाश और हथियारों के बीच कोणीय दूरी के अनुसार हाथ कोण offseting की जरूरत है। फिर numOfStars/numOfArms होने के लिए अपने आंतरिक पुनरावृत्ति पाश को बदलें। –
क्या यह gamedev पर नहीं है? –
इसके अलावा: http://stackoverflow.com/questions/348321/mathematical-question-procedural- जनरेशन-of-a-galaxy –