Modify MyRSSurfaceView.java from last exercise "
Perform transform of Translate and Rotate on RenderScript", to draw circle by combine a series of Triangle. Refer to the code, the larger the constant number_of_section, the more the shape close to circle.
![circle in Android RenderScript circle in Android RenderScript](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFsQF7DIMK0CHHqYFozWtYiEbWRF1yCX0BHVqTE-l_HY0NM2166n8phBrCIsBNzLfRIewt1yzJzrsJFZBtXjt35LSjR-1H7I3ioRTCJQCtlFaHqsYgAEkeCf_dI0vtuOafNY8oyb7jX9mX/s400/AndroidRenderScript_03_circle.png)
package com.exercise.AndroidRenderScript;
import android.content.Context;
import android.renderscript.Mesh;
import android.renderscript.RSSurfaceView;
import android.renderscript.RenderScriptGL;
import android.renderscript.RenderScriptGL.SurfaceConfig;
public class MyRSSurfaceView extends RSSurfaceView {
private RenderScriptGL renderScriptGL;
private ScriptC_RenderScript myScriptC;
public MyRSSurfaceView(Context context) {
super(context);
// TODO Auto-generated constructor stub
final RenderScriptGL.SurfaceConfig surfaceConfig
= new SurfaceConfig();
renderScriptGL = createRenderScriptGL(surfaceConfig);
myScriptC = new ScriptC_RenderScript(
renderScriptGL, getResources(), R.raw.renderscript);
myScriptC.set_my_rs_mesh(createMesh());
renderScriptGL.bindRootScript(myScriptC);
}
private Mesh createMesh(){
double radius = 100.0;
double angleInDegree, angleInRadian;
final int number_of_section = 18;
double ptX, ptY;
Mesh.TriangleMeshBuilder myMesh
= new Mesh.TriangleMeshBuilder(
renderScriptGL,
2,
Mesh.TriangleMeshBuilder.COLOR);
//index 0
myMesh.addVertex(0, 0);
//index 1
angleInDegree = 0;
angleInRadian = Math.toRadians(angleInDegree);
ptX = radius * Math.cos(angleInRadian);
ptY = radius * Math.sin(angleInRadian);
myMesh.addVertex((float)ptX, (float)ptY);
for(int i=0; i<number_of_section; i++){
angleInDegree += 360/number_of_section;
angleInRadian = Math.toRadians(angleInDegree);
ptX = radius * Math.cos(angleInRadian);
ptY = radius * Math.sin(angleInRadian);
myMesh.addVertex((float)ptX, (float)ptY);
myMesh.addTriangle(0, i+2, i+1);
}
return(myMesh.create(true));
};
}
Download the files.
No comments:
Post a Comment