Сначала я нарисовал три линии ширины шестиугольника, определяющих c width, а затем я нарисовал шесть точек, используя эту формулу section = 2 * PI / NumberOfPoints
. Вот пи c линий, которые я нарисовал:
я хочу нарисовать треугольник между каждыми двумя линиями, который будет 6 треугольниками. Вот пи c, когда я рисую треугольники:
Моя проблема в том, что я хочу, чтобы треугольник рисовался между линиями, а не над ними, что означает, что треугольник должен не перекрывает линию.
Вот как я нарисовал линии:
for (int i = 1; i <= 6; i++) {
float eX = (float) (x + radius * Math.cos(section * i));
float eY = (float) (y + radius * Math.sin(section * i));
linesPaint.setShader(new LinearGradient(x, y, eX, eY, Color.BLACK, Color.TRANSPARENT, Shader.TileMode.MIRROR));
canvas.drawLine(x, y, eX, eY, linesPaint);
}
и вот как я нарисовал треугольники
for (int i = 1; i <= 6; i++) {
TriangleColor triangleColor = triangleColors.get(i - 1);
trianglesPaint.setShader(new LinearGradient(0, 0, 0, getHeight(), triangleColor.firstColor, triangleColor.secondColor, Shader.TileMode.REPEAT));
float x1 = (float) (x + radius * Math.cos(section * i));
float y1 = (float) (y + radius * Math.sin(section * i));
float x2 = (float) (x + radius * Math.cos(section * (i + 1)));
float y2 = (float) (y + radius * Math.sin(section * (i + 1)));
trianglesPath.moveTo(x, y);
trianglesPath.lineTo(x1, y1);
trianglesPath.lineTo(x2, y2);
trianglesPath.lineTo(x, y);
canvas.drawPath(trianglesPath, trianglesPaint);
trianglesPath.reset();
}
Может кто-нибудь помочь мне с формула? Заранее спасибо.