268 CHAPTER 8: Putting It All Together^
float distanceBetweenBodies=sqrt(delX*delX+delY*delY);
if((distanceBetweenBodies>vanishDist) && (distanceBetweenBodies<grazeDist))
{
percentVisible=(distanceBetweenBodies-vanishDist)/(2.0*sun_sr);
if(percentVisible>1.3) //9
percentVisible=1.3;
else if(percentVisible<0.2)
percentVisible=1.3;
}
else if(distanceBetweenBodies>grazeDist)
{
percentVisible=1.0;
}
else
{
percentVisible=0.0;
}
scale=STANDARD_FOV/m_FieldOfView;
if(percentVisible>0.0)
[m_LensFlare execute:[[UIScreen mainScreen]applicationFrame] //10
source:CGPointMake(sun_sx,sun_sy) scale:scale alpha:percentVisible];
}
}
//11
-(void)executePlanet:(Planet *)planet sx:(float *)sx sy:(float *)sy sz:(float *)sz
screenRadius:(float *)screenRadius render:(BOOL)render
{
static GLfloat angle=0.0;
GLKVector3 planetPos;
float temp;
float distance;
CGRect frame = [[UIScreen mainScreen] bounds];
glPushMatrix();
planetPos=[planet getPosition];
glTranslatef(planetPos.x,planetPos.y,planetPos.z);
if(render)
[planet execute]; //12
distance=GLKVector3Distance(m_Eyeposition, planetPos);
temp=(0.5*frame.size.width)/tanf(GLKMathDegreesToRadians(m_FieldOfView)/2.0);
*screenRadius=temp*[planet getRadius]/distance;