java fast math_Java FastMath.PI属性代码示例

@Override

protected final Spatial loadAnimModel() {

fixedPoints = data.getAsVector3fArray("fixedPoints");

randomPoints = data.getAsArray("randomPoints");

width = data.getAsFloat("width", width);

segments = data.getAsInteger("segments", segments);

tension = data.getAsFloat("tension", tension);

cycle = data.getAsBoolean("cycle", cycle);

up = data.getAsVector3f("up", up).normalizeLocal();

dimension = data.getAsInteger("dimension", dimension);

if (fixedPoints == null && randomPoints == null)

throw new NullPointerException("need fixedPoints or randomPoints");

// 生成路径点

if (fixedPoints == null) {

fixedPoints = new Vector3f[randomPoints.length];

for (int i = 0; i < randomPoints.length; i++) {

Vector3f point = new Vector3f();

((Position)Loader.load(randomPoints[i])).getPoint(point);

fixedPoints[i] = point;

}

}

MySpline spline = createSpline(fixedPoints, tension, cycle);

if(dimension > 1) {

// 计算出实际的维度旋转轴

TempVars tv = TempVars.get();

Vector3f nextPoint = tv.vect1;

Vector3f forward = tv.vect2;

Vector3f left = tv.vect3;

Vector3f rotAxis = tv.vect4;

spline.getSplinePoint(spline.getTotalLength() / segments, nextPoint);

nextPoint.subtract(spline.getControlPoints().get(0), forward).normalizeLocal();

up.cross(forward, left).normalizeLocal();

left.cross(up, rotAxis).normalizeLocal();

Quaternion qua = new Quaternion();

Vector3f tempUp = tv.vect5;

float angle = FastMath.PI / dimension;

Node animObject = new Node();

for (int i = 0; i < dimension; i++) {

qua.fromAngleAxis(angle * i, rotAxis);

qua.mult(up, tempUp);

animObject.attachChild(createSurface(spline, tempUp));

}

tv.release();

return animObject;

} else {

return createSurface(spline, up);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值