어떤 이유로 점의 반경을 확인하여 자바로 구를 만들려고 할 때 구 대신 큐브를 제공합니다. 내 코드 또는 제 수식에 문제가 있습니까?Sphere Drawing in Java
for(double X = 0; X < diameter; X++)
{
//mcspace.logger.info("X = " + Double.toString(X));
for(double Y = 0; Y < diameter; Y++)
{
//mcspace.logger.info("Y = " + Double.toString(Y));
for(double Z = 0; Z < diameter; Z++)
{
//mcspace.logger.info("Z = " + Double.toString(Z));
int radius = diameter/2;
double cX = X;
double cZ = Z;
double cY = Y;
if (X > radius){cX -= radius;}
if (Y > radius){cY -= radius;}
if (Z > radius){cZ -= radius;}
double Cr = Math.sqrt(Math.sqrt(Math.pow(cX,2) + Math.pow(cY,2)) + Math.pow(cZ,2));
if(Cr <= radius)
{
SetInShere(X,Y,Z);
// This is just a function that is in my code but the problem is that almost all the points are in the sphere, I almost always get a cube instead of a sphere...
}
}
}
}
I 돈 그 질문을 이해하지 못한다. "반점의 반경"이란 무엇입니까? 또한 실제로 컴파일되고 실행되는 최소한의 예제를 제공하십시오. 그것 없이는, 당신의 코드가 무엇을 해야하는지를 이해하는 것은 매우 어렵습니다. – sleske
이동 int 반지름 = 직경/2; 효율성을 위해서 당신의 루프 밖에서. 및 do double Cr = Math.hypot (Math.hypot (cX, cY), cZ); 이 방법은 간단하고 오류가 발생하기 쉽지 않으며 (내 수학 학위가 완전히 낭비되지 않는 한) 작동해야합니다. 편집 : @BRPocock의 아이디어가 더 좋습니다. –