android.util.FloatMath#cos ( )源码实例Demo

下面列出了android.util.FloatMath#cos ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public final void preRotate(final float pAngle) {
	final float angleRad = MathConstants.DEG_TO_RAD * pAngle;

	final float sin = FloatMath.sin(angleRad);
	final float cos = FloatMath.cos(angleRad);

	final float a = this.a;
	final float b = this.b;
	final float c = this.c;
	final float d = this.d;

	this.a = cos * a + sin * c;
	this.b = cos * b + sin * d;
	this.c = cos * c - sin * a;
	this.d = cos * d - sin * b;
}
 
public final void postRotate(final float pAngle) {
	final float angleRad = MathConstants.DEG_TO_RAD * pAngle;

	final float sin = FloatMath.sin(angleRad);
	final float cos = FloatMath.cos(angleRad);

	final float a = this.a;
	final float b = this.b;
	final float c = this.c;
	final float d = this.d;
	final float tx = this.tx;
	final float ty = this.ty;

	this.a = a * cos - b * sin;
	this.b = a * sin + b * cos;
	this.c = c * cos - d * sin;
	this.d = c * sin + d * cos;
	this.tx = tx * cos - ty * sin;
	this.ty = tx * sin + ty * cos;
}
 
源代码3 项目: PanoramaGL   文件: PLHotspot.java
/**calculate methods*/

protected PLPosition convertPitchAndYawToPosition(float pitch, float yaw)
{
	float r = this.getZ(), pr = (90.0f - pitch) * PLConstants.kToRadians, yr = -yaw * PLConstants.kToRadians;
	float x = r * FloatMath.sin(pr) * FloatMath.cos(yr);
	float y = r * FloatMath.sin(pr) * FloatMath.sin(yr);
	float z = r * FloatMath.cos(pr);
	return PLPosition.PLPositionMake(y, z, x);
}
 
源代码4 项目: PanoramaGL   文件: PLHotspot.java
protected List<PLPosition> calculatePoints(GL10 gl)
{
	List<PLPosition> result = new ArrayList<PLPosition>(4);
	//1
	PLPosition pos = this.convertPitchAndYawToPosition(mAtv, mAth), pos1 = this.convertPitchAndYawToPosition(mAtv + 0.0001f, mAth);
	//2 and 3
	PLVector3 p1 = new PLVector3(pos.x, pos.y, pos.z),
			  p2p1 = new PLVector3(0.0f, 0.0f, 0.0f).sub(p1),
			  r = p2p1.crossProduct(new PLVector3(pos1.x, pos1.y, pos1.z).sub(p1)),
			  s = p2p1.crossProduct(r);
	//4
	r.normalize();
	s.normalize();
	//5.1
	float w = mWidth * PLConstants.kPanoramaRadius, h = mHeight * PLConstants.kPanoramaRadius;
	float radius = FloatMath.sqrt((w * w) + (h * h));
	//5.2
	float angle = (float)Math.asin(h / radius);
	//5.3
	PLVector3 n = new PLVector3(0.0f, 0.0f, 0.0f);
	for(float theta : new float[]{ PLConstants.kPI - angle, angle, PLConstants.kPI + angle, 2 * PLConstants.kPI - angle})
	{
		n.x = p1.x + (radius * FloatMath.cos(theta) * r.x) + (radius * FloatMath.sin(theta) * s.x);
		n.y = p1.y + (radius * FloatMath.cos(theta) * r.y) + (radius * FloatMath.sin(theta) * s.y);
		n.z = p1.z + (radius * FloatMath.cos(theta) * r.z) + (radius * FloatMath.sin(theta) * s.z);
		n.normalize();
		result.add(PLPosition.PLPositionMake(n.x, n.y, n.z));
	}
	return result;
}
 
源代码5 项目: mobile-manager-tool   文件: MathUtils.java
/**
 * Rotates p1 around p2 by angle degrees.
 * @param p1
 * @param p2
 * @param angle
 */
public void rotate(PointF p1, PointF p2, float angle) {
	float px = p1.x;
	float py = p1.y;
	float ox = p2.x;
	float oy = p2.y;
	p1.x = (FloatMath.cos(angle) * (px-ox) - FloatMath.sin(angle) * (py-oy) + ox);
	p1.y = (FloatMath.sin(angle) * (px-ox) + FloatMath.cos(angle) * (py-oy) + oy);
}
 
源代码6 项目: umeng_community_android   文件: MathUtils.java
/**
 * Rotates p1 around p2 by angle degrees.
 * @param p1
 * @param p2
 * @param angle
 */
public void rotate(PointF p1, PointF p2, float angle) {
	float px = p1.x;
	float py = p1.y;
	float ox = p2.x;
	float oy = p2.y;
	p1.x = (FloatMath.cos(angle) * (px-ox) - FloatMath.sin(angle) * (py-oy) + ox);
	p1.y = (FloatMath.sin(angle) * (px-ox) + FloatMath.cos(angle) * (py-oy) + oy);
}
 
源代码7 项目: geoar-app   文件: TriangleFeature.java
@Override
	public void onCreateInGLESThread() {
		
		final int numOfVertices = (numBorderPoints+2) * 3;
		final int numOfColors = (numBorderPoints+2) * 4;
//		final int numOfTexCoords = (numBorderPoints+2) * 2;
		
		final float[] vertices = new float[numOfVertices];
		final float[] colors = new float[numOfColors];
		final float[] normals = new float[numOfVertices];
//		final float[] texCoords = new float[numOfTexCoords];
		
		for (int i = 3, point = 0; i < numOfVertices; i += 3, point++) {
			float radians = (float) Math.toRadians(360.f - point * 360.f / numBorderPoints);
			vertices[i] 	= FloatMath.cos(radians);
			vertices[i + 2] = FloatMath.sin(radians);

			normals[i + 1] = 1.0f;
		}
		
		/** set color coordinates - first point is in the middle */
		colors[0] = 1.0f;
		colors[3] = 1.0f;
		for (int i = 4; i < numOfColors; i += 4) {
			colors[i] = 1.0f;
			colors[i + 3] = 0.1f;
		}
		
		setRenderObjectives(vertices, colors, normals, null);
	}
 
@Override
protected void onUpdateControlKnob(final float pRelativeX, final float pRelativeY) {
	if(pRelativeX * pRelativeX + pRelativeY * pRelativeY <= 0.25f) {
		super.onUpdateControlKnob(pRelativeX, pRelativeY);
	} else {
		final float angleRad = MathUtils.atan2(pRelativeY, pRelativeX);
		super.onUpdateControlKnob(FloatMath.cos(angleRad) * 0.5f, FloatMath.sin(angleRad) * 0.5f);
	}
}
 
public static float[] rotateAroundCenter(final float[] pVertices, final float pRotation, final float pRotationCenterX, final float pRotationCenterY) {
	if(pRotation != 0) {
		final float rotationRad = MathUtils.degToRad(pRotation);
		final float sinRotationRad = FloatMath.sin(rotationRad);
		final float cosRotationInRad = FloatMath.cos(rotationRad);

		for(int i = pVertices.length - 2; i >= 0; i -= 2) {
			final float pX = pVertices[i];
			final float pY = pVertices[i + 1];
			pVertices[i] = pRotationCenterX + (cosRotationInRad * (pX - pRotationCenterX) - sinRotationRad * (pY - pRotationCenterY));
			pVertices[i + 1] = pRotationCenterY + (sinRotationRad * (pX - pRotationCenterX) + cosRotationInRad * (pY - pRotationCenterY));
		}
	}
	return pVertices;
}
 
public final Transformation setToRotate(final float pAngle) {
	final float angleRad = MathConstants.DEG_TO_RAD * pAngle;

	final float sin = FloatMath.sin(angleRad);
	final float cos = FloatMath.cos(angleRad);

	this.a = cos;
	this.b = sin;
	this.c = -sin;
	this.d = cos;
	this.tx = 0.0f;
	this.ty = 0.0f;

	return this;
}
 
源代码11 项目: mobile-manager-tool   文件: VectorF.java
public void calculateEndPoint() {
	end.x = FloatMath.cos(angle) * length + start.x;
	end.y = FloatMath.sin(angle) * length + start.y;
}
 
源代码12 项目: umeng_community_android   文件: VectorF.java
public void calculateEndPoint() {
	end.x = FloatMath.cos(angle) * length + start.x;
	end.y = FloatMath.sin(angle) * length + start.y;
}
 
源代码13 项目: unleashed-pixel-dungeon   文件: Flare.java
@SuppressLint("FloatMath")
public Flare( int nRays, float radius ) {
	
	super( 0, 0, 0, 0 );

	int gradient[] = {0xFFFFFFFF, 0x00FFFFFF};
	texture = new Gradient( gradient );
	
	this.nRays = nRays;
	
	angle = 45;
	angularSpeed = 180;
	
	vertices = ByteBuffer.
		allocateDirect( (nRays * 2 + 1) * 4 * (Float.SIZE / 8) ).
		order( ByteOrder.nativeOrder() ).
		asFloatBuffer();
	
	indices = ByteBuffer.
		allocateDirect( nRays * 3 * Short.SIZE / 8 ).
		order( ByteOrder.nativeOrder() ).
		asShortBuffer();
	
	float v[] = new float[4];
	
	v[0] = 0;
	v[1] = 0;
	v[2] = 0.25f;
	v[3] = 0;
	vertices.put( v );
	
	v[2] = 0.75f;
	v[3] = 0;
	
	for (int i=0; i < nRays; i++) {
		
		float a = i * 3.1415926f * 2 / nRays;
		v[0] = FloatMath.cos( a ) * radius;
		v[1] = FloatMath.sin( a ) * radius;
		vertices.put( v );
		
		a += 3.1415926f * 2 / nRays / 2;
		v[0] = FloatMath.cos( a ) * radius;
		v[1] = FloatMath.sin( a ) * radius;
		vertices.put( v );
		
		indices.put( (short)0 );
		indices.put( (short)(1 + i * 2) );
		indices.put( (short)(2 + i * 2) );
	}
	
	indices.position( 0 );
}
 
源代码14 项目: pixel-dungeon   文件: Flare.java
@SuppressLint("FloatMath")
public Flare( int nRays, float radius ) {
	
	super( 0, 0, 0, 0 );
	
	int gradient[] = {0xFFFFFFFF, 0x00FFFFFF};
	texture = new Gradient( gradient );
	
	this.nRays = nRays;
	
	angle = 45;
	angularSpeed = 180;
	
	vertices = ByteBuffer.
		allocateDirect( (nRays * 2 + 1) * 4 * (Float.SIZE / 8) ).
		order( ByteOrder.nativeOrder() ).
		asFloatBuffer();
	
	indices = ByteBuffer.
		allocateDirect( nRays * 3 * Short.SIZE / 8 ).
		order( ByteOrder.nativeOrder() ).
		asShortBuffer();
	
	float v[] = new float[4];
	
	v[0] = 0;
	v[1] = 0;
	v[2] = 0.25f;
	v[3] = 0;
	vertices.put( v );
	
	v[2] = 0.75f;
	v[3] = 0;
	
	for (int i=0; i < nRays; i++) {
		
		float a = i * 3.1415926f * 2 / nRays;
		v[0] = FloatMath.cos( a ) * radius;
		v[1] = FloatMath.sin( a ) * radius;
		vertices.put( v );
		
		a += 3.1415926f * 2 / nRays / 2;
		v[0] = FloatMath.cos( a ) * radius;
		v[1] = FloatMath.sin( a ) * radius;
		vertices.put( v );
		
		indices.put( (short)0 );
		indices.put( (short)(1 + i * 2) );
		indices.put( (short)(2 + i * 2) );
	}
	
	indices.position( 0 );
}
 
源代码15 项目: geoar-app   文件: FlatCircleFeature.java
@Override
	public void onCreateInGLESThread() {
		final int numOfVertices = (numCirclePoints+1)*3*3;
		final int numOfColorCoords = (numCirclePoints+1)*4*3;
		final int numOfTexCoords = (numCirclePoints+1)*2*3;
		
		final float[] vertices = new float[numOfVertices];
		final float[] colors = new float[numOfColorCoords];
		final float[] normals = new float[numOfVertices];
		final float[] texCoords = new float[numOfTexCoords];
		
		float radians = 0;
		for(int i = 0, point = 0; i < numOfVertices; i+=9, point++){
			vertices[i] = 0.0f;
			vertices[i+1] = 0.0f;
			vertices[i+2] = 0.0f;
			
			radians = (float) Math.toRadians(point*360/numCirclePoints);
			vertices[i+3] = FloatMath.cos(radians);
			vertices[i+5] = FloatMath.cos(radians);
			
			radians = (float) Math.toRadians((point+1)*360/numCirclePoints);
			vertices[i+6] = FloatMath.cos(radians);
			vertices[i+8] = FloatMath.cos(radians);
			
			normals[i+1] = 1.0f;
			normals[i+4] = 1.0f;
			normals[i+7] = 1.0f;
		}
		
		for (int i = 0; i < numOfColorCoords; i += 4) {
			colors[i] = 1.0f;
			colors[i + 1] = 0.0f;
			colors[i + 2] = 0.0f;
			colors[i + 3] = 0.1f;
		}
		
//		// circle center, we want no triangulation from the border
//		vertices[0] = 0.0f;
//		vertices[1] = 0.0f;
//		vertices[2] = 0.0f;
//		
//		normals[1] = 1.0f;
//		
//		for(int i = 3; i < numOfVertices; i+=3){
//			float radians = (float) Math.toRadians(i*360/numCirclePoints);
//			vertices[i] = FloatMath.cos(radians);
//			vertices[i+1] = 0.0f;
//			vertices[i+2] = FloatMath.sin(radians);
//			
//			normals[i] = 0.0f;
//			normals[i+1] = 1.0f;
//			normals[i+2] = 0.0f;
//		}
//		
//		for(int i = 0; i < numOfColorCoords; i+=4){
//			colors[i] = 1.0f;
//			colors[i+1] = 0.0f;
//			colors[i+2] = 0.0f;
//			colors[i+3] = 0.5f;
//		}
		
//		for(int i = 0; i < numOfTexCoords; i+=2){
//			texCoords[i] = 0.0f;
//			texCoords[i] = 0.0
//		}
		
		setRenderObjectives(vertices, colors, normals, null);
	}
 
@Override
public void getPositionOffset(final float[] pOffset) {
	final float random = MathUtils.RANDOM.nextFloat() * MathConstants.PI * 2;
	pOffset[VERTEX_INDEX_X] = this.mCenterX + FloatMath.cos(random) * this.mRadiusX * MathUtils.RANDOM.nextFloat();
	pOffset[VERTEX_INDEX_Y] = this.mCenterY + FloatMath.sin(random) * this.mRadiusY * MathUtils.RANDOM.nextFloat();
}
 
@Override
public void getPositionOffset(final float[] pOffset) {
	final float random = MathUtils.RANDOM.nextFloat() * MathConstants.PI * 2;
	pOffset[VERTEX_INDEX_X] = this.mCenterX + FloatMath.cos(random) * this.mRadiusX;
	pOffset[VERTEX_INDEX_Y] = this.mCenterY + FloatMath.sin(random) * this.mRadiusY;
}
 
public static float getValue(final float pPercentage) {
	return -FloatMath.cos(pPercentage * MathConstants.PI_HALF) + 1;
}
 
@Override
public float getPercentage(final float pSecondsElapsed, final float pDuration) {
	final float percentage = pSecondsElapsed / pDuration;

	return -0.5f * (FloatMath.cos(percentage * PI) - 1);
}
 
源代码20 项目: PD-classes   文件: PointF.java
public PointF polar( float a, float l ) {
	this.x = l * FloatMath.cos( a );
	this.y = l * FloatMath.sin( a );
	return this;
}