本文整理汇总了Java中com.jme3.math.FastMath.atan方法的典型用法代码示例。如果您正苦于以下问题:Java FastMath.atan方法的具体用法?Java FastMath.atan怎么用?Java FastMath.atan使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.jme3.math.FastMath
的用法示例。
在下文中一共展示了FastMath.atan方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: zoomCamera
import com.jme3.math.FastMath; //导入方法依赖的package包/类
protected void zoomCamera(float value){
// derive fovY value
float h = cam.getFrustumTop();
float w = cam.getFrustumRight();
float aspect = w / h;
float near = cam.getFrustumNear();
float fovY = FastMath.atan(h / near)
/ (FastMath.DEG_TO_RAD * .5f);
fovY += value * 0.1f;
h = FastMath.tan( fovY * FastMath.DEG_TO_RAD * .5f) * near;
w = h * aspect;
cam.setFrustumTop(h);
cam.setFrustumBottom(-h);
cam.setFrustumLeft(-w);
cam.setFrustumRight(w);
}
示例2: doToggleOrthoPerspMode
import com.jme3.math.FastMath; //导入方法依赖的package包/类
protected boolean doToggleOrthoPerspMode() {
float aspect = (float) cam.getWidth() / cam.getHeight();
if (!cam.isParallelProjection()) {
cam.setParallelProjection(true);
float h = cam.getFrustumTop();
float w;
float dist = cam.getLocation().distance(focus);
float fovY = FastMath.atan(h) / (FastMath.DEG_TO_RAD * .5f);
h = FastMath.tan(fovY * FastMath.DEG_TO_RAD * .5f) * dist;
w = h * aspect;
cam.setFrustum(-1000, 1000, -w, w, h, -h);
return true;
} else {
cam.setParallelProjection(false);
cam.setFrustumPerspective(45f, aspect, 1, 1000);
return false;
}
}
示例3: doToggleOrthoPerspMode
import com.jme3.math.FastMath; //导入方法依赖的package包/类
public boolean doToggleOrthoPerspMode() {
float aspect = (float) cam.getWidth() / cam.getHeight();
if (!cam.isParallelProjection()) {
cam.setParallelProjection(true);
float h = cam.getFrustumTop();
float w;
float dist = cam.getLocation().distance(focus);
float fovY = FastMath.atan(h) / (FastMath.DEG_TO_RAD * .5f);
h = FastMath.tan(fovY * FastMath.DEG_TO_RAD * .5f) * dist;
w = h * aspect;
cam.setFrustum(orthoNear, orthoFar, -w, w, h, -h);
return true;
} else {
cam.setParallelProjection(false);
cam.setFrustumPerspective(45f, aspect, perspNear, perspFar);
return false;
}
}
示例4: controlRender
import com.jme3.math.FastMath; //导入方法依赖的package包/类
protected void controlRender(RenderManager rm, ViewPort vp){
BoundingVolume bv = spatial.getWorldBound();
Camera cam = vp.getCamera();
float atanNH = FastMath.atan(cam.getFrustumNear() * cam.getFrustumTop());
float ratio = (FastMath.PI / (8f * atanNH));
float newDistance = bv.distanceTo(vp.getCamera().getLocation()) / ratio;
int level;
if (Math.abs(newDistance - lastDistance) <= distTolerance)
level = lastLevel; // we haven't moved relative to the model, send the old measurement back.
else if (lastDistance > newDistance && lastLevel == 0)
level = lastLevel; // we're already at the lowest setting and we just got closer to the model, no need to keep trying.
else if (lastDistance < newDistance && lastLevel == numLevels - 1)
level = lastLevel; // we're already at the highest setting and we just got further from the model, no need to keep trying.
else{
lastDistance = newDistance;
// estimate area of polygon via bounding volume
float area = AreaUtils.calcScreenArea(bv, lastDistance, cam.getWidth());
float trisToDraw = area * trisPerPixel;
level = numLevels - 1;
for (int i = numLevels; --i >= 0;){
if (trisToDraw - numTris[i] < 0){
break;
}
level = i;
}
lastLevel = level;
}
spatial.setLodLevel(level);
}
示例5: doOrthoMode
import com.jme3.math.FastMath; //导入方法依赖的package包/类
public void doOrthoMode() {
if (!cam.isParallelProjection()) {
float aspect = (float) cam.getWidth() / cam.getHeight();
cam.setParallelProjection(true);
float h = cam.getFrustumTop();
float w;
float dist = cam.getLocation().distance(focus);
float fovY = FastMath.atan(h) / (FastMath.DEG_TO_RAD * .5f);
h = FastMath.tan(fovY * FastMath.DEG_TO_RAD * .5f) * dist;
w = h * aspect;
cam.setFrustum(orthoNear, orthoFar, -w, w, h, -h);
}
}