J'utilise Point Cloud. J'ai des points 3D avec moi. Disons: Point P (x, y, z), point Q (x, y, z), point R (x, y, z) en supposant que ce point soit le triangle PQR, nous continuons. Triangle Comme ceci: .Remplir la couleur à l'intérieur du triangle par trois coordonnées
Comment peut-il être possible de remplir la zone à l'intérieur de ces points tracés, de sorte que le triangle sera rempli de couleur.
Comme ceci: .
Mon étude qui aurait pu aider:
Edit:
chemin à succès:
public void make_polygon(float[] points_x,float[] points_y,float[] points_z)
{
Material mSphereMaterial_z = new Material();
//mSphereMaterial_z.setColor(Color.BLUE);
Bitmap p_z_bitty = getTriangleBitmap(BitmapFactory.decodeResource(mContext.getResources(),R.drawable.label_bg_sm),5,points_x,points_y,points_z);
Texture t = new Texture("text",p_z_bitty);
try {
mSphereMaterial_z.addTexture(t);
}
catch(Exception e)
{
e.printStackTrace();
}
Object3D p_z = new Plane();
p_z.setPosition(points_x[0],points_y[1],points_z[2]);
p_z.setMaterial(mSphereMaterial_z);
p_z.setDoubleSided(true);
getCurrentScene().addChild(p_z);
}
public static Bitmap getTriangleBitmap(Bitmap bitmap, int radius,float[] a,float[] b,float[] c) {
Bitmap finalBitmap;
if (bitmap.getWidth() != radius || bitmap.getHeight() != radius)
finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius,
false);
else
finalBitmap = bitmap;
Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(),
finalBitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
Paint paint = new Paint();
final Rect rect = new Rect(0, 0, finalBitmap.getWidth(),
finalBitmap.getHeight());
// Point point1_draw = new Point(75, 0);
// Point point2_draw = new Point(0, 180);
// Point point3_draw = new Point(180, 180);
PointF point1_draw = new PointF(a[0],a[1]);
PointF point2_draw = new PointF(b[0], b[1]);
PointF point3_draw = new PointF(c[0],c[1]);
Path path = new Path();
path.moveTo(point1_draw.x, point1_draw.y);
path.lineTo(point2_draw.x, point2_draw.y);
path.lineTo(point3_draw.x, point3_draw.y);
path.lineTo(point1_draw.x, point1_draw.y);
path.close();
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(Color.parseColor("#BAB399"));
canvas.drawPath(path, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(finalBitmap, rect, rect, paint);
return output;
}
Quelqu'un peut me guider ou de suggérer un certain article à ce sujet pour Android java?
Si d'autres informations/codes sont nécessaires, ils doivent être fournis.
Vous devez être plus précis. Faut-il le calculer sur le CPU ou sur le GPU (shader)? Est-ce un problème 2D ou 3D? Voulez-vous tester un point dans le plan qui est défini par le triangle, ou voulez-vous tester si un rayon intersecte le triangle? – Rabbid76
@ Rabbid76, cela doit être calculé sur la CPU. C'est un problème 3D. Comme diagramme indique mon objectif final serait trop remplir le triangle, im en utilisant la bibliothèque Rajawali3D – ImDeveloper